简介 TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。
部署 在PingCap官方文档 提供了几种部署方案。 这里我选择了docker部署方案。
测试使用了5台装有docker的机器,其中的两台装了PD和TIDB,另外三台装有TIKV。这里有部署方式
机器
节点
b11
tikv1
b30
tikv2
b34
tikv3
b49
pd1
b24
pd2
b26
pd3
b7
tidb
部署PD 1 2 3 4 5 6 // pd1 入口 /pd-server --name=pd1 --data-dir=/data/pd --client-urls=http://0.0.0.0:12379 --advertise-client-urls=http://192.168.241.49:12379 --peer-urls=http://0.0.0.0:12380 --advertise-peer-urls=http://192.168.241.49:12380 --initial-cluster=pd1=http://192.168.241.49:12380,pd2=http://192.168.241.24:12380,pd3=http://192.168.241.26:12380 // pd2 入口 /pd-server --name=pd2 --data-dir=/data/pd --client-urls=http://0.0.0.0:12379 --advertise-client-urls=http://192.168.241.24:12379 --peer-urls=http://0.0.0.0:12380 --advertise-peer-urls=http://192.168.241.24:12380 --initial-cluster=pd1=http://192.168.241.49:12380,pd2=http://192.168.241.24:12380,pd3=http://192.168.241.26:12380 // pd3 入口 /pd-server --name=pd3 --data-dir=/data/pd --client-urls=http://0.0.0.0:12379 --advertise-client-urls=http://192.168.241.26:12379 --peer-urls=http://0.0.0.0:12380 --advertise-peer-urls=http://192.168.241.26:12380 --initial-cluster=pd1=http://192.168.241.49:12380,pd2=http://192.168.241.24:12380,pd3=http://192.168.241.26:12380
1 2 3 4 5 6 7 8 9 10 11 12 //镜像 pingcap/pd:latest // 卷 //// pd1 12000M /etc/localtime:/etc/localtime:ro /disk1/pd:/data/pd //// pd2 12000M /etc/localtime:/etc/localtime:ro /disk1/pd:/data/pd //// pd3 12000M /etc/localtime:/etc/localtime:ro /disk1/pd:/data/pd
–name 注意区分不同pd名字
–initial-cluster需要填写pd节点的地址,其余按格式设置为本机地址。
另外注意限制内存的使用。
部署TIKV 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 // tikv1 docker run -d --name tikv1 \ -m 64G \ -p 20160:20160 \ --ulimit nofile=1000000:1000000 \ -v /etc/localtime:/etc/localtime:ro \ -v /disk1/tikv:/data \ pingcap/tikv:latest \ --addr="0.0.0.0:20160" \ --advertise-addr="192.168.241.11:20160" \ --data-dir="/data/tikv" \ --pd="192.168.241.49:12379,192.168.241.24:12379,192.168.241.26:12379" // tikv2 docker run -d --name tikv2 \ -m 24G \ -p 20160:20160 \ --ulimit nofile=1000000:1000000 \ -v /etc/localtime:/etc/localtime:ro \ -v /disk1/tikv:/data \ pingcap/tikv:latest \ --addr="0.0.0.0:20160" \ --advertise-addr="192.168.241.30:20160" \ --data-dir="/data/tikv" \ --pd="192.168.241.49:12379,192.168.241.24:12379,192.168.241.26:12379"
–name 注意区分不同tikv名字
–pd 需要填写pd节点的地址,其余按格式设置为本机地址。
注意目录映射,需要把虚拟机的/data目录 映射到大容量磁盘目录下。
部署TIDB 1 2 3 4 5 6 // 入口 4000 10080 /tidb-server --store=tikv --log-file=/log/tidb/tidb.log --config=/log/tidb/tidb.config --path=192.168.241.49:12379,192.168.241.24:12379,192.168.241.26:12379 // 卷 64000M /etc/localtime:/etc/localtime:ro /var/log/tidb:/log/tidb
–name 注意区分不同tidb名字.
–path 需要填写pd节点的地址.
测试 1 2 3 4 5 6 7 8 // 设置root密码 SET PASSWORD FOR 'root'@'%' = 'xxx'; // 创建oopin用户 CREATE USER 'oopin'@'%' IDENTIFIED BY 'passwd'; // 赋权 grant all privileges on *.* to 'oopin'@'%';
停掉一个PD: 服务正常,说明至少一个PD在线可以使服务正常运行
扩展TIKV:可以稳定正常的扩展TIKV,副本正常迁移的新的TIKV上。
停掉TIKV:三个TIKV的情况下,停掉一个正常,停掉两个无法提供服务。
运维 PD Control PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群。官网没有给出docker版本的安装方式,实际测试时在pd的docker镜像中已经自带PD Control了, 可以进任意一台节点的PD docker来使用。
1 2 3 4 5 # 进入docker docker exec -it [dockerid] sh # 进入PD Control交互模式 ./pd-ctl -u http://127.0.0.1:12379
配置region replica数量 1 2 config set max-replicas $num config show all
TIDB工具集 下载 1 2 3 4 5 6 7 8 9 # 下载 tool 压缩包 wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.sha256 # 检查文件完整性,返回 ok 则正确 sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256 # 解开压缩包 tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz cd tidb-enterprise-tools-latest-linux-amd64
从mysql导出数据 1 ./mydumper -h mysqlhost -P 3306 -u root -p rootpwd -t 16 -F 64 -B dbname -T tablename -o /tmp/tidb --no-locks -l 10000
导入数据到TIDB 1 /loader -h tidbhost -u root -p rootpwd -P 4000 -t 32 -d /tmp/tidb