tidb 集群安装配置

张映 发表于 2020-12-16

分类目录: tidb

标签:, , ,

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

一,为什么选择tidb

1,解决分库,分表的问题

分库,分表固然可以减少单表的数据量,减少查询时间,但是分表后的聚合搜索,又是一个麻烦,并且开发成本较高。

mysql分库,分表,不太可能大范围使用,适用于一些特定的场景。

mysql的olap,可被hadoop生态代替,或tidb

mysql的oltp,可被mysql+es代替,或tidb

2,解决mysql没有横向扩展的问题

mysql没有成熟的横向扩展能力(mysql cluster不敢用)。

mysql replication,mha,mysql-mmm等都是整块蛋糕,数据量大到一点程度,性能必然会下降的很厉害

3,兼容mysql5.7

这对于用mysql的用户比较友好的,除了一些特定的功能不能用外(例如:存储过程,触发器,事件,外键,临时表等等),其他的与mysql兼容度能达到99%,从mysql切换过来比较容易,学习成本和开发成本比较低

缺点:

tidb对硬件的要求比较高,如果全部按照官方要求的硬件去配置的话,40W+。
小众数据库出了问题也不好解决,除非团队有二次开发的能力
tidb的官方文档比较多,但是思路不是很清楚,详细程度不够

二,tidb集群机器列表

  1. pd_servers:  
  2.   - host: 10.0.10.17  
  3.   - host: 10.0.10.18  
  4.   - host: 10.0.10.19  
  5. tidb_servers:  
  6.   - host: 10.0.10.18  
  7.   - host: 10.0.10.19  
  8. tikv_servers:  
  9.   - host: 10.0.10.12  
  10.   - host: 10.0.10.13  
  11.   - host: 10.0.10.14  
  12. tiflash_servers:  
  13.   - host: 10.0.10.20  
  14.   - host: 10.0.10.21  
  15. cdc_servers:  
  16.   - host: 10.0.10.15  
  17.   - host: 10.0.10.16  
  18. monitoring_servers:  
  19.   - host: 10.0.10.11  
  20. grafana_servers:  
  21.   - host: 10.0.10.11  
  22. alertmanager_servers:  
  23.   - host: 10.0.10.11  

官方文档中提到的中控机,10.0.10.11也是中控机

三,安装前的做准备

1,修改hostname

  1. # hostname jiankong   
  2.   
  3. # vim /etc/hosts //每台机器都一样  
  4. 10.0.10.11 jiankong  
  5. 10.0.10.12 tikv1  
  6. 10.0.10.13 tikv2  
  7. 10.0.10.14 tikv3  
  8. 10.0.10.15 ticdc1  
  9. 10.0.10.16 ticdc2  
  10. 10.0.10.17 pd  
  11. 10.0.10.18 tidb1  
  12. 10.0.10.19 tidb2  
  13. 10.0.10.20 tiflash1  
  14. 10.0.10.21 tiflash2  

为什么要把改hostname放在第一步呢,机器太多了,没有名字来区别,很容易搞混的

2,添加用户和免密登录

2.1,root账号的免密登录配置

  1. # ssh-keygen -t rsa  
  2. # ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.10.11 //copy到本机  
  3. # scp -r /root/.ssh 10.0.10.12:/root //往集群中的各个机器copy  
  4. 。。。。。。。。。省略。。。。。。。。。。  
  5. # scp -r /root/.ssh 10.0.10.20:/root  
  6. # scp -r /root/.ssh 10.0.10.21:/root  

这一步做了以后,后面安装东西就会方便很多,可以通过ssh远程执行命令
这一步做了以后,后面安装东西就会方便很多,可以通过ssh远程执行命令
这一步做了以后,后面安装东西就会方便很多,可以通过ssh远程执行命令

2.2,添加tidb用户,并且免密登录

  1. # ssh 10.0.10.21 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  2. # ssh 10.0.10.20 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  3. # ssh 10.0.10.19 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  4. # ssh 10.0.10.18 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  5. # ssh 10.0.10.17 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  6. # ssh 10.0.10.16 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  7. # ssh 10.0.10.15 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  8. # ssh 10.0.10.14 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  9. # ssh 10.0.10.13 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  10. # ssh 10.0.10.12 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  
  11. # ssh 10.0.10.11 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/"  

官方文档有设置密码,这种方式不用设置密码

2.3,tidb普通用户sudo,免密获取root权限

  1. # ssh  10.0.10.12 "echo 'tidb ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers"  
  2. 。。。。。。。。。省略。。。。。。。。。。  

2.4,测试tidb免密登录

  1. [root@jiankong ~]# su - tidb //切换到tidb用户,注意横线  
  2. 上一次登录:二 12月 15 13:30:16 CST 2020  
  3. [tidb@jiankong ~]$ sudo su //sudo配置成功  
  4. [root@jiankong tidb]# exit  
  5. exit  
  6. [tidb@jiankong ~]$ ssh 10.0.10.12 //ssh免密成功  
  7. Last login: Tue Dec 15 13:30:16 2020  
  8. [tidb@tikv1 ~]$  

3,关闭防火墙和selinux

  1. # /etc/sysconfig/selinux  
  2.   
  3. SELINUX=disabled //修改  
  4.   
  5. # scp /etc/sysconfig/selinux 10.0.10.21:/etc/sysconfig/  
  6. 。。。。。。。。。省略。。。。。。。。。。  
  7. # ssh 10.0.10.21 "systemctl stop firewalld && systemctl disable firewalld && iptables -F"  
  8. 。。。。。。。。。省略。。。。。。。。。。  

4,关闭交换分区

  1. # vim /etc/fstab   
  2.   
  3. #/dev/mapper/centos-swap swap swap defaults 0 0 //注释本行  
  4.   
  5. # ssh  10.0.10.20 "echo 'vm.swappiness=0' >> /etc/sysctl.conf && swapoff -a && sysctl -p"  
  6. 。。。。。。。。。省略。。。。。。。。。。  
  7. [root@jiankong ~]# free -h  
  8.  total used free shared buff/cache available  
  9. Mem: 15G 2.9G 8.7G 14M 3.6G 11G  
  10. Swap: 0B 0B 0B   //都为0,表示关闭成功  

5,检测和关闭透明大页

  1. # cat /sys/kernel/mm/transparent_hugepage/enabled  
  2. [always] madvise never   //开启状态  
  3.   
  4. # tee /etc/systemd/system/disable-thp.service <<-'EOF'  
  5. [Unit]  
  6. Description=Disable Transparent Huge Pages (THP)  
  7.   
  8. [Service]  
  9. Type=simple  
  10. ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"  
  11.   
  12. [Install]  
  13. WantedBy=multi-user.target  
  14. EOF  
  15.   
  16. # scp /etc/systemd/system/disable-thp.service 10.0.10.21:/etc/systemd/system  
  17. 。。。。。。。。。省略。。。。。。。。。。  
  18. # ssh 10.0.10.21 "systemctl daemon-reload && systemctl start disable-thp && systemctl enable disable-thp"  
  19. 。。。。。。。。。省略。。。。。。。。。。  
  20. # cat /sys/kernel/mm/transparent_hugepage/enabled  
  21. always madvise [never]  //关闭状态  

不建议使用官方文档的关闭方法,比较复杂。

6,挂载数据盘

linux 挂载硬盘扩容的2种方法

安装tidb集群时,需要配置topology.yaml,需要指定数据目录,最好不要用默认目录

7,安装numa,时间服务器,sshpass

  1. # ssh  10.0.10.21 "yum -y install numactl sshpass ntp"  
  2. 。。。。。。。。。省略。。。。。。。。。。  

配置时间服务器,这篇文章里面有,centos7 hadoop2.7.7 hbase1.4安装配置详解

重启所有机器,重启所有机器,重启所有机器,重启好了后,把上面的准备工作重新检查一遍。

三,安装tidb集群

1,准备配置文件

  1. # vim topology.yaml  
  2. global:  
  3.   user: "tidb"  //如果是用root账户,这块要改成root  
  4.   ssh_port: 22  
  5.   deploy_dir: "/home/tidb/tidb-deploy"  
  6.   data_dir: "/home/tidb/tidb-data"  
  7.   
  8. server_configs:  
  9.   pd:  
  10.     replication.enable-placement-rules: true  
  11.   
  12. pd_servers:  
  13.   - host: 10.0.10.17  
  14.   - host: 10.0.10.18  
  15.   - host: 10.0.10.19  
  16. tidb_servers:  
  17.   - host: 10.0.10.18  
  18.   - host: 10.0.10.19  
  19. tikv_servers:  
  20.   - host: 10.0.10.12  
  21.   - host: 10.0.10.13  
  22.   - host: 10.0.10.14  
  23. tiflash_servers:  
  24.   - host: 10.0.10.20  
  25.     data_dir: /mnt/tiflash/data1,/mnt/tiflash/data2  
  26.   - host: 10.0.10.21  
  27.     data_dir: /mnt/tiflash/data1,/mnt/tiflash/data2  
  28. cdc_servers:  
  29.   - host: 10.0.10.15  
  30.   - host: 10.0.10.16  
  31. monitoring_servers:  
  32.   - host: 10.0.10.11  
  33. grafana_servers:  
  34.   - host: 10.0.10.11  
  35. alertmanager_servers:  
  36.   - host: 10.0.10.11  

root账号和普通账号都是可以安装tidb集群的。如果是非root账号,注意data_dir,deploy_dir的目录权限。

2,安装tiup工具

  1. [root@jiankong tidb]# su - tidb //切换用户,注意横线  
  2. 上一次登录:三 12月 16 11:03:13 CST 2020从 10.0.90.67pts/0 上  
  3.   
  4. [tidb@jiankong ~]$ curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh  
  5.  % Total % Received % Xferd Average Speed Time Time Time Current  
  6.  Dload Upload Total Spent Left Speed  
  7. 100 8608k 100 8608k 0 0 6467k 0 0:00:01 0:00:01 --:--:-- 6472k  
  8. WARN: adding root certificate via internet: https://tiup-mirrors.pingcap.com/root.json  
  9. You can revoke this by remove /home/tidb/.tiup/bin/7b8e153f2e2d0928.root.json  
  10. Set mirror to https://tiup-mirrors.pingcap.com success  
  11. Detected shell: bash  
  12. Shell profile: /home/tidb/.bash_profile  
  13. /home/tidb/.bash_profile has been modified to add tiup to PATH  
  14. open a new terminal or source /home/tidb/.bash_profile to use it  
  15. Installed path: /home/tidb/.tiup/bin/tiup  
  16. ===============================================  
  17. Have a try: tiup playground  
  18. ===============================================  
  19.   
  20. [tidb@jiankong ~]$ source .bash_profile //加载环境变量  
  21.   
  22. [tidb@jiankong ~]$ tiup cluster //tiup组件安装成功  
  23. Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster  
  24. Deploy a TiDB cluster for production  
  25.   
  26. Usage:  
  27.  tiup cluster [command]  
  28.   
  29. Available Commands:  
  30.  check Perform preflight checks for the cluster.  
  31.  deploy Deploy a cluster for production  
  32. 。。。。。。。。。省略。。。。。。。。。。  

3,安装tidb集群

  1. [tidb@jiankong ~]$ tiup cluster deploy tidb_ziwei v4.0.8 ./topology.yaml --user tidb --skip-create-user  //不在集群中的机器创建用户  
  2. Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster deploy tidb_ziwei v4.0.8 ./topology.yaml --user tidb --skip-create-user  
  3. Please confirm your topology:  
  4. Cluster type: tidb  
  5. Cluster name: tidb_ziwei  
  6. Cluster version: v4.0.8  
  7. Type Host Ports OS/Arch Directories  
  8. ---- ---- ----- ------- -----------  
  9. pd 10.0.10.17 2379/2380 linux/x86_64 /home/tidb/tidb-deploy/pd-2379,/home/tidb/tidb-data/pd-2379  
  10. 。。。。。。。。。省略。。。。。。。。。。  
  11.  Enable grafana 10.0.10.11:3000 success  
  12. Enabling component alertmanager  
  13. + Enable cluster  
  14. + Enable cluster  
  15. Deployed cluster `tidb_ziwei` successfully, you can start the cluster via `tiup cluster start tidb_ziwei`  
  16.   
  17. [tidb@jiankong ~]$ tiup cluster list  //看集群列表  
  18. Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster list  
  19. Name User Version Path PrivateKey  
  20. ---- ---- ------- ---- ----------  
  21. tidb_ziwei tidb v4.0.8 /home/tidb/.tiup/storage/cluster/clusters/tidb_ziwei /home/tidb/.tiup/storage/cluster/clusters/tidb_ziwei/ssh/id_rsa  
  22.   
  23. $ tiup cluster start tidb_ziwei  //启动集群  
  24. Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster start tidb_ziwei  
  25. Starting cluster tidb_ziwei...  
  26. + [ Serial ] - SSHKeySet: privateKey=/home/tidb/.tiup/storage/cluster/clusters/tidb_ziwei/ssh/id_rsa, publicKey=/home/tidb/.tiup/storage/cluster/clusters/tidb_ziwei/ssh/id_rsa.pub  
  27. + [Parallel] - UserSSH: user=tidb, host=10.0.10.11  
  1. 。。。。。。。。。省略。。。。。。。。。。  
  1. Starting component alertmanager  
  2.  Starting instance alertmanager 10.0.10.11:9093  
  3.  Start alertmanager 10.0.10.11:9093 success  
  4. + [ Serial ] - UpdateTopology: cluster=tidb_ziwei  
  5. Started cluster `tidb_ziwei` successfully  

四,tidb集群验证

1,集群状态

tidb cluster 状态

tidb cluster 状态

2,登录dashboard,用户名root,默认密码是空。这里面的用户名和密码就是数据库超级管理员的用户名和密码

tidb dashboard 监控

tidb dashboard 监控

3,登录grafana,用户名/密码,admin/admin

tidb grafana

tidb grafana

4,命令行登录

  1. [tidb@jiankong ~]$ mysql -u root -p -P 4000 -h 10.0.10.18  
  2. Enter password:  
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  4. Your MySQL connection id is 69  
  5. Server version: 5.7.25-TiDB-v4.0.8 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible  
  6.   
  7. Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.  
  8.   
  9. Oracle is a registered trademark of Oracle Corporation and/or its  
  10. affiliates. Other names may be trademarks of their respective  
  11. owners.  
  12.   
  13. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  14.   
  15. mysql>  


转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/tidb/2448.html