TIDB集群搭建-流水线

本文档详细介绍了如何搭建TIDB集群,包括安装tidb-ansible,配置ssh互信,分配角色,扩容与缩容操作,以及数据的导出与导入。在过程中,提到了手动安装NTP服务以确保时间同步的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档: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

  1. 关闭ssh服务的dns反解析,很重要,关系到后期是否能成功启动。

     vim /etc/ssh/sshd_config
     UseDNS no
     systemctl reload sshd.service
  2. 此次实验选择的中控机是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

  1. 在中控机器上下载 TiDB-Ansible 2.1,此处是93服务器

 [yx@pd3 server]$ git clone -b release-2.1 https://github.com/pingcap/tidb-ansible.git
  1. 以 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互信规则

  1. 在中控机上配置部署机器 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
  1. 执行以下命令,按提示输入部署目标机器 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. :-)
  1. 创建完成后可以ssh试下能否免密登录其他机器。sudo也是不要密码的。

  2. 可选项:如果其他服务器都是新的,没有安装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               :
<think>好的,我现在要帮助用户解决TiDB的pd-server启动失败的问题,用户提到可能是因为缺少GLIBC_2.28导致的依赖问题。我需要结合用户提供的引用信息,特别是引用[1]中提到的/lib64/libc.so.6缺少GLIBC_2.28的情况,以及之前的回答中的排查步骤。 首先,我需要确认用户的问题是否确实由GLIBC版本过低引起。用户已经看到错误信息,指出缺少GLIBC_2.28,而TiDB依赖这个版本。所以我的第一步应该是验证系统当前的GLIBC版本,并指导用户如何检查。 接下来,我需要考虑解决方案。通常,升级GLIBC是一个敏感的操作,因为它是系统核心库,直接升级可能会影响系统稳定性。所以可能需要建议用户使用其他方法,比如在较高版本的系统上部署TiDB,或者使用Docker容器来避免直接升级GLIBC。 另外,用户之前提到的PD服务启动失败的排查步骤中,涉及检查日志、端口占用、权限等问题。我需要将这些步骤与当前的GLIBC问题结合起来,确保用户全面排查可能的因素。 用户可能不太熟悉如何安全地升级GLIBC,因此需要详细说明风险,并提供替代方案。比如,建议使用TiDB的Docker镜像,这样可以利用容器内的环境,避免修改宿主机系统。 另外,我需要确认用户是否有权限或者足够的知识来进行系统级的更改。如果用户是在生产环境中,可能需要更谨慎的建议,比如联系系统管理员或者考虑系统升级。 最后,生成的相关问题需要围绕GLIBC依赖问题展开,比如如何检查其他依赖、如何降级TiDB版本,或者使用容器化的优势等。这可以帮助用户进一步理解和解决类似问题。</think>### PD服务启动失败(GLIBC依赖问题)解决方案 根据错误信息`/lib64/libc.so.6: version 'GLIBC_2.28' not found`,以下是系统性排查与解决方案: --- #### 一、验证GLIBC版本 ```bash # 查看当前系统GLIBC版本 strings /lib64/libc.so.6 | grep GLIBC_ | tail -n 5 # 输出示例:GLIBC_2.27 → 说明缺少2.28版本 ``` --- #### 二、解决方案(按优先级排序) ##### 方案1:升级操作系统(推荐) - **适用场景**:CentOS/RHEL 7等老旧系统默认不带GLIBC_2.28 - **操作步骤**: 1. 迁移到支持GLIBC_2.28的系统: ```bash # Ubuntu 20.04+ 或 CentOS 8+ 原生支持 cat /etc/os-release # 确认当前系统版本 ``` 2. 通过系统升级工具更新(风险较高): ```bash # CentOS 7 → 8迁移工具(需谨慎操作) yum install -y centos-release-stream yum swap centos-linux-repos centos-stream-repos yum distro-sync ``` ##### 方案2:容器化部署(安全隔离) - **使用TiDB官方Docker镜像**: ```bash # 拉取包含完整依赖环境的镜像 docker pull pingcap/tidb:v6.5.0 # 启动PD容器(自动处理GLIBC依赖) docker run -d --name pd \ -p 2379:2379 \ pingcap/tidb:v6.5.0 \ /pd-server --data-dir=/data/pd ``` ##### 方案3:手动编译GLIBC(高风险) - **仅限测试环境**: ```bash # 下载GLIBC源码 wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz tar -xzf glibc-2.28.tar.gz cd glibc-2.28 && mkdir build && cd build # 编译安装到独立目录(避免覆盖系统文件) ../configure --prefix=/opt/glibc-2.28 make -j$(nproc) && sudo make install # 通过LD_PRELOAD加载新版本 export LD_LIBRARY_PATH=/opt/glibc-2.28/lib:$LD_LIBRARY_PATH /data/tidb/tidb-deploy/pd-2379/bin/pd-server ``` --- #### 三、关联检查项 1. **验证动态库依赖**: ```bash ldd /data/tidb/tidb-deploy/pd-2379/bin/pd-server | grep "not found" # 若输出包含libc.so.6则确认是GLIBC问题[^1] ``` 2. **检查TiDB版本兼容性**: ```bash # 确认TiDB版本是否要求特定GLIBC版本 tiup list tidb --all | grep <your-version> ``` --- #### 四、替代方案 - **降级TiDB版本**:选择兼容当前系统GLIBC的TiDB版本 ```bash tiup install tidb:v5.0.0 # 查询版本要求GLIBC<=2.27 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值