TiDB 开源分布式关系型数据库 TiDB 是一款定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。支持100%的OLTP--短时间内大量并发的事务操作能力,每个操作涉及的数据量很小(字节),事务一直性强。支持80%OLAP(tispark可以提供超过80%的OLAP功能)--偏向于海量数据分析计算,单个查询时间长。
TiDB特性 | 描述 |
---|---|
高度兼容mysql | 兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。 |
实时HTAP | 提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。 |
云原生的分布式数据库 | 专为云而设计的分布式数据库,通过 TiDB Operator 可在公有云、私有云、混合云中实现部署工具化、自动化。 |
数据高可用 | 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。 |
一键水平扩容或者缩容 | 得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。 |
TiDB server处理sql请求,可以增加TiDB server节点,提高吞吐和处理能力。 TiKV 负责存储数据,可以通过增加TiKV节点解决容量问题。 PD会在TiKV节点之间以Region为单位做调度,将部分数据迁移到新节点。 推荐部署至少3个TiKV,3个PD,2个TiDB,按需增加TiKV和TiDB。
通过docker-compose安装:
安装docker-compose,过程参考 https://www.linuxsre.cn/wiki/Kubernetes/140
[root@localhost ~]# yum install git -y
#下载 tidb-docker-compose
[root@localhost ~]# git clone https://github.com/pingcap/tidb-docker-compose.git
Cloning into 'tidb-docker-compose'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 554 (delta 0), reused 6 (delta 0), pack-reused 546
Receiving objects: 100% (554/554), 284.17 KiB | 17.00 KiB/s, done.
Resolving deltas: 100% (243/243), done.
You have new mail in /var/spool/mail/root
[root@localhost ~]# cd tidb-docker-compose && docker-compose pull && docker-compose up -d
[root@localhost tidb-docker-compose]# docker-compose ps
/usr/lib/python2.7/site-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
from cryptography.hazmat.backends import default_backend
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
tidb-docker-compose_grafana_1 /run.sh Up 0.0.0.0:3000->3000/tcp
tidb-docker-compose_pd0_1 /pd-server --name=pd0 --cl ... Up 0.0.0.0:49153->2379/tcp, 2380/tcp
tidb-docker-compose_pd1_1 /pd-server --name=pd1 --cl ... Up 0.0.0.0:49155->2379/tcp, 2380/tcp
tidb-docker-compose_pd2_1 /pd-server --name=pd2 --cl ... Up 0.0.0.0:49154->2379/tcp, 2380/tcp
tidb-docker-compose_prometheus_1 /bin/prometheus --log.leve ... Up 0.0.0.0:9090->9090/tcp
tidb-docker-compose_pushgateway_1 /bin/pushgateway --log.lev ... Up 9091/tcp
tidb-docker-compose_tidb-vision_1 /bin/sh -c sed -i -e "s/PD ... Up 2015/tcp, 443/tcp, 80/tcp,
0.0.0.0:8010->8010/tcp
tidb-docker-compose_tidb_1 /tidb-server --store=tikv ... Up 0.0.0.0:10080->10080/tcp,
0.0.0.0:4000->4000/tcp
tidb-docker-compose_tikv0_1 /tikv-server --addr=0.0.0. ... Up 20160/tcp
tidb-docker-compose_tikv1_1 /tikv-server --addr=0.0.0. ... Up 20160/tcp
tidb-docker-compose_tikv2_1 /tikv-server --addr=0.0.0. ... Up 20160/tcp
tidb-docker-compose_tispark- /opt/spark/sbin/start-mast ... Up 0.0.0.0:7077->7077/tcp,
master_1 0.0.0.0:8080->8080/tcp
tidb-docker-compose_tispark- /opt/spark/sbin/start-slav ... Up 0.0.0.0:38081->38081/tcp
slave0_1
[root@localhost ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 12542/docker-proxy
tcp 0 0 0.0.0.0:10080 0.0.0.0:* LISTEN 12516/docker-proxy
tcp 0 0 0.0.0.0:38081 0.0.0.0:* LISTEN 12848/docker-proxy
tcp 0 0 0.0.0.0:49153 0.0.0.0:* LISTEN 11461/docker-proxy
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 11635/docker-proxy
tcp 0 0 0.0.0.0:49154 0.0.0.0:* LISTEN 11562/docker-proxy
tcp 0 0 0.0.0.0:49155 0.0.0.0:* LISTEN 11591/docker-proxy
tcp 0 0 0.0.0.0:7077 0.0.0.0:* LISTEN 12499/docker-proxy
tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 11447/docker-proxy
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12473/docker-proxy
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9925/sshd
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 11510/docker-proxy
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1379/master
tcp6 0 0 :::22 :::* LISTEN 9925/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1379/master
#安装mysql命令
[root@localhost ~]# yum install mysql
#连接tidb
[root@localhost ~]# mysql -h 127.0.0.1 -P 4000 -u root
grafana地址:http://IP:3000/ ,账号admin,密码admin 可视化地址 : http://IP:8010/ spark地址:http://IP:8080/ prometheus地址: http://IP:9090/