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集群机器列表

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,挂载数据盘

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

安装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,集群状态

tidb cluster 状态

tidb cluster 状态

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

tidb dashboard 监控

tidb dashboard 监控

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

tidb grafana

tidb grafana

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