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集群机器列表
pd_servers: - host: 10.0.10.17 - host: 10.0.10.18 - host: 10.0.10.19 tidb_servers: - host: 10.0.10.18 - host: 10.0.10.19 tikv_servers: - host: 10.0.10.12 - host: 10.0.10.13 - host: 10.0.10.14 tiflash_servers: - host: 10.0.10.20 - host: 10.0.10.21 cdc_servers: - host: 10.0.10.15 - host: 10.0.10.16 monitoring_servers: - host: 10.0.10.11 grafana_servers: - host: 10.0.10.11 alertmanager_servers: - host: 10.0.10.11
官方文档中提到的中控机,10.0.10.11也是中控机
三,安装前的做准备
1,修改hostname
# hostname jiankong # vim /etc/hosts //每台机器都一样 10.0.10.11 jiankong 10.0.10.12 tikv1 10.0.10.13 tikv2 10.0.10.14 tikv3 10.0.10.15 ticdc1 10.0.10.16 ticdc2 10.0.10.17 pd 10.0.10.18 tidb1 10.0.10.19 tidb2 10.0.10.20 tiflash1 10.0.10.21 tiflash2
为什么要把改hostname放在第一步呢,机器太多了,没有名字来区别,很容易搞混的
2,添加用户和免密登录
2.1,root账号的免密登录配置
# ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.10.11 //copy到本机 # scp -r /root/.ssh 10.0.10.12:/root //往集群中的各个机器copy 。。。。。。。。。省略。。。。。。。。。。 # scp -r /root/.ssh 10.0.10.20:/root # scp -r /root/.ssh 10.0.10.21:/root
这一步做了以后,后面安装东西就会方便很多,可以通过ssh远程执行命令
这一步做了以后,后面安装东西就会方便很多,可以通过ssh远程执行命令
这一步做了以后,后面安装东西就会方便很多,可以通过ssh远程执行命令
2.2,添加tidb用户,并且免密登录
# ssh 10.0.10.21 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.20 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.19 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.18 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.17 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.16 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.15 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.14 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.13 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # ssh 10.0.10.12 "useradd tidb && cp -r /root/.ssh /home/tidb/ && chown tidb.tidb -R /home/tidb/.ssh/" # 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权限
# ssh 10.0.10.12 "echo 'tidb ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers" 。。。。。。。。。省略。。。。。。。。。。
2.4,测试tidb免密登录
[root@jiankong ~]# su - tidb //切换到tidb用户,注意横线 上一次登录:二 12月 15 13:30:16 CST 2020 [tidb@jiankong ~]$ sudo su //sudo配置成功 [root@jiankong tidb]# exit exit [tidb@jiankong ~]$ ssh 10.0.10.12 //ssh免密成功 Last login: Tue Dec 15 13:30:16 2020 [tidb@tikv1 ~]$
3,关闭防火墙和selinux
# /etc/sysconfig/selinux SELINUX=disabled //修改 # scp /etc/sysconfig/selinux 10.0.10.21:/etc/sysconfig/ 。。。。。。。。。省略。。。。。。。。。。 # ssh 10.0.10.21 "systemctl stop firewalld && systemctl disable firewalld && iptables -F" 。。。。。。。。。省略。。。。。。。。。。
4,关闭交换分区
# vim /etc/fstab #/dev/mapper/centos-swap swap swap defaults 0 0 //注释本行 # ssh 10.0.10.20 "echo 'vm.swappiness=0' >> /etc/sysctl.conf && swapoff -a && sysctl -p" 。。。。。。。。。省略。。。。。。。。。。 [root@jiankong ~]# free -h total used free shared buff/cache available Mem: 15G 2.9G 8.7G 14M 3.6G 11G Swap: 0B 0B 0B //都为0,表示关闭成功
5,检测和关闭透明大页
# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never //开启状态 # tee /etc/systemd/system/disable-thp.service <<-'EOF' [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target EOF # scp /etc/systemd/system/disable-thp.service 10.0.10.21:/etc/systemd/system 。。。。。。。。。省略。。。。。。。。。。 # ssh 10.0.10.21 "systemctl daemon-reload && systemctl start disable-thp && systemctl enable disable-thp" 。。。。。。。。。省略。。。。。。。。。。 # cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] //关闭状态
不建议使用官方文档的关闭方法,比较复杂。
6,挂载数据盘
安装tidb集群时,需要配置topology.yaml,需要指定数据目录,最好不要用默认目录
7,安装numa,时间服务器,sshpass
# ssh 10.0.10.21 "yum -y install numactl sshpass ntp" 。。。。。。。。。省略。。。。。。。。。。
配置时间服务器,这篇文章里面有,centos7 hadoop2.7.7 hbase1.4安装配置详解
重启所有机器,重启所有机器,重启所有机器,重启好了后,把上面的准备工作重新检查一遍。
三,安装tidb集群
1,准备配置文件
# vim topology.yaml global: user: "tidb" //如果是用root账户,这块要改成root ssh_port: 22 deploy_dir: "/home/tidb/tidb-deploy" data_dir: "/home/tidb/tidb-data" server_configs: pd: replication.enable-placement-rules: true pd_servers: - host: 10.0.10.17 - host: 10.0.10.18 - host: 10.0.10.19 tidb_servers: - host: 10.0.10.18 - host: 10.0.10.19 tikv_servers: - host: 10.0.10.12 - host: 10.0.10.13 - host: 10.0.10.14 tiflash_servers: - host: 10.0.10.20 data_dir: /mnt/tiflash/data1,/mnt/tiflash/data2 - host: 10.0.10.21 data_dir: /mnt/tiflash/data1,/mnt/tiflash/data2 cdc_servers: - host: 10.0.10.15 - host: 10.0.10.16 monitoring_servers: - host: 10.0.10.11 grafana_servers: - host: 10.0.10.11 alertmanager_servers: - host: 10.0.10.11
root账号和普通账号都是可以安装tidb集群的。如果是非root账号,注意data_dir,deploy_dir的目录权限。
2,安装tiup工具
[root@jiankong tidb]# su - tidb //切换用户,注意横线 上一次登录:三 12月 16 11:03:13 CST 2020从 10.0.90.67pts/0 上 [tidb@jiankong ~]$ curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 8608k 100 8608k 0 0 6467k 0 0:00:01 0:00:01 --:--:-- 6472k WARN: adding root certificate via internet: https://tiup-mirrors.pingcap.com/root.json You can revoke this by remove /home/tidb/.tiup/bin/7b8e153f2e2d0928.root.json Set mirror to https://tiup-mirrors.pingcap.com success Detected shell: bash Shell profile: /home/tidb/.bash_profile /home/tidb/.bash_profile has been modified to add tiup to PATH open a new terminal or source /home/tidb/.bash_profile to use it Installed path: /home/tidb/.tiup/bin/tiup =============================================== Have a try: tiup playground =============================================== [tidb@jiankong ~]$ source .bash_profile //加载环境变量 [tidb@jiankong ~]$ tiup cluster //tiup组件安装成功 Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster Deploy a TiDB cluster for production Usage: tiup cluster [command] Available Commands: check Perform preflight checks for the cluster. deploy Deploy a cluster for production 。。。。。。。。。省略。。。。。。。。。。
3,安装tidb集群
[tidb@jiankong ~]$ tiup cluster deploy tidb_ziwei v4.0.8 ./topology.yaml --user tidb --skip-create-user //不在集群中的机器创建用户 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 Please confirm your topology: Cluster type: tidb Cluster name: tidb_ziwei Cluster version: v4.0.8 Type Host Ports OS/Arch Directories ---- ---- ----- ------- ----------- pd 10.0.10.17 2379/2380 linux/x86_64 /home/tidb/tidb-deploy/pd-2379,/home/tidb/tidb-data/pd-2379 。。。。。。。。。省略。。。。。。。。。。 Enable grafana 10.0.10.11:3000 success Enabling component alertmanager + Enable cluster + Enable cluster Deployed cluster `tidb_ziwei` successfully, you can start the cluster via `tiup cluster start tidb_ziwei` [tidb@jiankong ~]$ tiup cluster list //看集群列表 Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster list Name User Version Path PrivateKey ---- ---- ------- ---- ---------- 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 $ tiup cluster start tidb_ziwei //启动集群 Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.2.5/tiup-cluster start tidb_ziwei Starting cluster tidb_ziwei... + [ 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 + [Parallel] - UserSSH: user=tidb, host=10.0.10.11
。。。。。。。。。省略。。。。。。。。。。
Starting component alertmanager Starting instance alertmanager 10.0.10.11:9093 Start alertmanager 10.0.10.11:9093 success + [ Serial ] - UpdateTopology: cluster=tidb_ziwei Started cluster `tidb_ziwei` successfully
四,tidb集群验证
1,集群状态
2,登录dashboard,用户名root,默认密码是空。这里面的用户名和密码就是数据库超级管理员的用户名和密码
3,登录grafana,用户名/密码,admin/admin
4,命令行登录
[tidb@jiankong ~]$ mysql -u root -p -P 4000 -h 10.0.10.18 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 69 Server version: 5.7.25-TiDB-v4.0.8 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/tidb/2448.html