官方文档:TIDB简介
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。
官方链接:https://pingcap.com/docs-cn/v3.0/overview/
系统的初始化在此不在赘述,直接贴出本次实验所用系统
[root@localhost yum.repos.d]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.6.1810 (Core) Release: 7.6.1810 Codename: Core
## 这个是本次实验所用系统的角色分配
Host | Hostname | Tidb | Pd | Tikv | Grafana | Tispark | Tidb-ansible | cpu | ram |
---|---|---|---|---|---|---|---|---|---|
192.168.2.91 | tbpd1 | √ | √ | 2*12 | 16G | ||||
192.168.2.92 | tbpd2 | √ | √ | 2*12 | 16G | ||||
192.168.9.93 | pd3 | √ | √ | √ | √ | 2*12 | 32G | ||
192.168.9.94 | tikv1 | √ | 2*12 | 16G | |||||
192.168.9.95 | tikv2 | √ | 2*12 | 16G | |||||
192.168.9.96 | tikv3 | √ | 2*12 | 16G |
正式开始搭建TIDB集群
-
一些约定
-
账户分为root和yx,密码均为123
-
所有服务安装目录均为/home/yx/server
-
关闭ssh服务的dns反解析,很重要,关系到后期是否能成功启动。
vim /etc/ssh/sshd_config UseDNS no systemctl reload sshd.service
-
此次实验选择的中控机是93,因此首先切换到93服务器
-
安装依赖包
yum -y install epel-release git curl sshpass yum -y install python-pip
-
普通用户免密登录root,新增一行
vim /etc/sudoers yx ALL=(ALL) NOPASSWD: ALL
-
以yx用户登录中控机,生成ssh key, 提示 Enter passphrase 时直接回车即可。执行成功后,ssh 私钥文件为 /home/yx/.ssh/id_rsa, ssh 公钥文件为 /home/yx/.ssh/id_rsa.pub。
-
如果是已有公钥的服务器,此处直接拷贝id_rsa.pub这个文件到其他五台服务器的/home/yx/.ssh/authorized_keys文件下就好。
[yx@pd3 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/yx/.ssh/id_rsa): Created directory '/home/yx/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/yx/.ssh/id_rsa. Your public key has been saved in /home/yx/.ssh/id_rsa.pub. The key fingerprint is: SHA256:nEIhIFBHMJTJsSC20wQcRNnxTzznXx2OkjEQpbrMF3Y yx@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ |XX%X= . oo. | |o=B=.... o | | o.. ..+ o o . | | . .o.=. + + .| | .oS+ E o o | | o.o + o | | + . . | | . | | | +----[SHA256]-----+于版本的选择
关于版本的选择
tidb-ansible 分支 | TiDB 版本 | 备注 |
---|---|---|
release-2.0 | 2.0 版本 | 最新 2.0 稳定版本,可用于生产环境。 |
release-2.1 | 2.1 版本 | 最新 2.1 稳定版本,可用于生产环境(建议)。 |
3.0 版本 | v3.0.0-beta、v3.0.0-beta.1 等 | 目前是 beta 版本,不建议用于生产环境。 |
latest 版本 | None | 包含最新特性,每日更新,不建议用于生产环境。 |
安装tidb-ansible
-
在中控机器上下载 TiDB-Ansible 2.1,此处是93服务器
[yx@pd3 server]$ git clone -b release-2.1 https://github.com/pingcap/tidb-ansible.git
-
以 yx用户登录中控机,请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。
cd /home/yx/server/tidb-ansible sudo pip install -r ./requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ansible --version ansible 2.6.17
配置ansible的ssh互信规则
-
在中控机上配置部署机器 ssh 互信及 sudo 规则
-
此处有两个选择,要么按照我的操作步骤来,要么手动拷贝中控机的公钥到其他服务器上,做免秘钥认证
-
编辑hosts.ini文件,添加组和username
[yx@pd3 tidb-ansible]$ vim hosts.ini [servers] 192.168.9.91 192.168.9.92 192.168.9.93 192.168.9.94 192.168.9.95 192.168.9.96 [all:vars] username = yx //官方是要创建tidb用户,此处统一使用yx用户 ntp_server = pool.ntp.org
-
执行以下命令,按提示输入部署目标机器 root 用户密码。该步骤将在部署目标机器上创建 yx 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。
[yx@pd3 tidb-ansible]$ ansible-playbook -i hosts.ini create_users.yml -u root -k SSH password: ... PLAY RECAP ********************************************************************************************************************************************************************************** 192.168.9.91 : ok=3 changed=2 unreachable=0 failed=0 192.168.9.92 : ok=3 changed=2 unreachable=0 failed=0 192.168.9.93 : ok=3 changed=2 unreachable=0 failed=0 192.168.9.94 : ok=3 changed=2 unreachable=0 failed=0 192.168.9.95 : ok=3 changed=2 unreachable=0 failed=0 192.168.9.96 : ok=3 changed=2 unreachable=0 failed=0 Congrats! All goes well. :-)
-
创建完成后可以ssh试下能否免密登录其他机器。sudo也是不要密码的。
-
可选项:如果其他服务器都是新的,没有安装NTP服务也没有做时间同步,那么就执行以下命令在整个集群上安装NTP服务,反之直接略过。
[yx@pd3 tidb-ansible]$ ansible-playbook -i hosts.ini deploy_ntp.yml -u yx -b -T 600 ... PLAY RECAP ********************************************************************************************************************************************************************************** 192.168.9.91 : ok=6 changed=3 unreachable=0 failed=0 192.168.9.92 : ok=6 changed=3 unreachable=0 failed=0 192.168.9.93 : ok=6 changed=3 unreachable=0 failed=0 192.168.9.94 : ok=6 changed=3 unreachable=0 failed=0 192.168.9.95 : ok=6 changed=3 unreachable=0 failed=0 192.168.9.96 : ok=6 changed=3 unreachable=0 failed=0 Congrats! All goes well. :-)
分配角色,并完成初始化以及部署
-
对照你的角色分配表,配置inventory.ini文件
[yx@pd3 tidb-ansible]$ vim inventory.ini ## TiDB Cluster Part [tidb_servers] 192.168.9.91 192.168.9.92 [tikv_servers] 192.168.9.94 192.168.9.95 192.168.9.96 [pd_servers] 192.168.9.91 192.168.9.92 192.168.9.93 [spark_master] //如果TIspark角色要单独分离出来,需要在master和slave都写上,否则默认安装在TIDB角色上 192.168.9.93 [spark_slaves] [lightning_server] [importer_server] ## Monitoring Part # prometheus and pushgateway servers [monitoring_servers] //监控 192.168.9.93 [grafana_servers] //监控