0
0
1
0
博客/.../

TiDB 自动化部署方案与脚本

 Frank_飞  发表于  2026-08-03
原创

一、文档概述 1.1 文档目的 本文档针对TiDB V7.5.2/V8.5.6 稳定版本,提供标准化、可落地、全自动化的集群部署方案,覆盖环境预检、系统参数调优、TiUP工具安装、集群拓扑配置、自动化部署、集群初始化、状态校验、日常运维全流程,配套完整Shell自动化脚本,规避手动部署误差,适配测试、生产环境落地,实现TiDB集群一键部署、快速扩容、标准化运维。 1.2 适用范围 • 部署版本:TiDB V7.5.2/V8.5.6 • 操作系统:CentOS 7.X/CentOS 9.X • 部署架构:标准生产架构(3 PD + 3 TiKV + 2 TiDB Server + 监控组件),支持单机测试、多机集群两种模式 • 使用工具:TiUP v1.12+(TiDB官方专属部署运维工具) 1.3 集群架构说明 TiDB V7.5.2/V8.5.6 标准生产集群组件分工明确,架构高可用、无单点故障,核心组件如下: • PD(Placement Driver):集群元数据管理、调度中心,部署3节点实现高可用 • TiKV:分布式存储引擎,核心数据存储节点,部署3节点保证数据多副本 • TiDB Server:SQL计算层,提供数据库连接与查询服务,部署2节点实现负载均衡 • 监控组件:Prometheus + Grafana + Node Exporter,全程监控集群指标

二、前置环境要求 2.1 硬件配置标准 组件 测试环境配置 生产环境最低配置 磁盘要求 PD节点 2核4G、50G磁盘 4核8G、100G SSD 系统盘即可,无需高速盘 TiKV节点 4核8G、100G磁盘 8核16G、500G+高速SSD 必须SSD,禁止机械盘,保障读写性能 TiDB节点 4核8G、50G磁盘 8核16G、100G SSD 系统盘,优先SSD提升计算效率 监控节点 2核4G、50G磁盘 4核8G、100G磁盘 普通磁盘即可 2.2 系统环境前置要求 所有集群节点必须统一配置,否则会导致部署失败或集群异常,核心要求如下:

  1. 主机名与hosts解析:所有节点主机名唯一,所有节点互通hosts,禁止主机名重复
  2. 时间同步:所有节点开启chrony时间同步,集群时间偏差≤500ms
  3. 防火墙与SELinux:关闭防火墙、禁用SELinux,或放行TiDB全端口
  4. 用户权限:统一创建tidb运维用户,免密sudo权限,节点间SSH免密互通
  5. 系统参数:调整内核参数、文件句柄数、内存阈值,适配TiDB运行要求
  6. 依赖组件:安装基础依赖(curl、wget、tar、sshpass等)

三、自动化环境初始化脚本 编写全局环境初始化脚本,一键完成所有节点环境预检、参数调优、权限配置、依赖安装,脚本适用于所有集群节点。 3.1 脚本名称 tidb_env_init.sh 3.2 完整脚本内容

#!/bin/bash
# 全局严格模式
set -euo pipefail

#颜色定义
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
BOLD="\033[1m"
RESET="\033[0m"   # 取消颜色

# ==================== 错误捕捉打印函数 =====================
error_exit() {
	local LINE_NUM="$1"
    local FAILED_CMD="$2"
    local EXIT_CODE="$3"
	echo -e "${BOLD}${RED}"
    echo ""
    echo -e "############################ 脚本异常终止 ############################"
    echo -e "❌ 出错行号:      ${LINE_NUM}"
    echo -e "❌ 失败命令内容:  ${FAILED_CMD}"
    echo -e "❌ 命令退出码:    ${EXIT_CODE}"
    echo -e "####################################################################"
	echo -e "${RESET}"
}
trap 'error_exit $LINENO "$BASH_COMMAND" $?' ERR

# 打印头部信息
echo -e "${BOLD}${GREEN}"
echo "============================================================"
echo "脚本名称:TiDB V8.5.6/V7.5.2 集群环境自动化初始化脚本"
echo "功能描述:中控机通过sshpass远程批量初始化TiDB集群节点环境"
echo "适配系统:CentOS 7.x/9.X"
echo "执行用户:root"
echo "编写作者:Frank 飞"
echo "编写时间:2026年07月28日"
echo "版本信息:V1.0"
echo "执行方式:sh tidb_env_init.sh"
echo "============================================================"
echo -e "${RESET}"

# ==================== 自定义配置区域,请按需修改 =====================
# 目标节点清单 格式:IP;登录用户;登录密码---传入变量
TARGET_LIST=(
"${hostip};${hostname};${hostpasswd}"
)

# TiDB运维用户默认密码
TIDB_USER_PWD="Tidb@2026"
# ================================================================

echo -e "${BOLD}${GREEN}========== 开始批量远程初始化TiDB环境 ==========${RESET}"

# 外层循环遍历每条主机分组
for item in "${TARGET_LIST[@]}"; do
  # 拆分ip user pass
  IP_GROUP=$(echo "$item" | cut -d';' -f1)
  SSH_USER=$(echo $item | cut -d';' -f2)
  SSH_PWD=$(echo $item | cut -d';' -f3)
  # 内层循环:分割逗号,遍历每一个独立IP
  IFS=',' read -ra IP_ARR <<< "${IP_GROUP}"
    for single_ip in "${IP_ARR[@]}"; do

echo -e "${BOLD}${YELLOW}>>>>>>>>>>>>>>>>> 正在初始化节点【${single_ip}】 <<<<<<<<<<<<<<<<<${RESET}"

# sshpass 远程执行代码块,所有TiDB初始化命令嵌入EOF内
sshpass -p "${SSH_PWD}" ssh -T -o StrictHostKeyChecking=no -o LogLevel=ERROR ${SSH_USER}@${single_ip} bash -s -- "${TIDB_USER_PWD}" <<'REMOTE_SHELL'
set -euo pipefail

# 获取中控传入变量
TIDB_USER_PWD="$1"

# 1. 关闭SELinux
setenforce 0 2>/dev/null || true
sed -i 's/^SELINUX=\(enforcing\|permissive\)/SELINUX=disabled/' /etc/selinux/config
echo -e "【成功】 关闭SELinux"

# 2. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
echo -e "【成功】 关闭并禁用防火墙"

# 3. 安装基础依赖
yum install -y curl wget tar sshpass ntpdate chrony
echo -e "【成功】 安装基础依赖组件"

# 4. 配置时间同步
systemctl start chronyd
systemctl enable chronyd
chronyc sources
echo -e "【成功】 配置系统时间同步"

# 5. 创建tidb运维用户
if ! id -u tidb >/dev/null 2>&1; then
    useradd tidb
    echo "${TIDB_USER_PWD}" | passwd --stdin tidb
fi
echo "tidb  ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/tidb
chmod 440 /etc/sudoers.d/tidb
echo -e "【成功】 创建tidb免密运维用户"

# 6. 系统内核参数调优
cat > /etc/sysctl.d/99-tidb.conf << EOF
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syncookies = 0
net.core.somaxconn = 32768
vm.swappiness = 0
vm.overcommit_memory = 1
vm.min_free_kbytes = 1048576
fs.file-max = 1048576
EOF

sysctl -p /etc/sysctl.d/99-tidb.conf
echo -e "【成功】 加载内核参数"

# 7. 资源限制调优
cat > /etc/security/limits.d/99-tidb.conf << EOF
tidb soft nofile 1048576
tidb hard nofile 1048576
tidb soft nproc 65535
tidb hard nproc 65535
tidb soft stack 32768
tidb hard stack 32768
root soft nofile 1048576
root hard nofile 1048576
EOF

echo -e "【成功】 配置文件句柄与进程限制"

# 8. 创建TiDB专属目录
mkdir -p /tidb-deploy/tidb-data
chown -R tidb:tidb /tidb-deploy/tidb-data
chmod -R 755 /tidb-deploy/tidb-data
echo -e "【成功】 创建集群部署与数据目录"

# 9. 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo -e "【成功】 关闭透明大页"

REMOTE_SHELL

# 节点执行结果校验
if [ $? -eq 0 ];then
    echo -e "${BOLD}${GREEN}✅ 节点【${single_ip}】环境初始化全部成功${RESET}"
else
    echo -e "${BOLD}${RED}❌ 节点【${single_ip}】环境初始化执行异常!请手动排查${RESET}"
fi
    done
done

# 全局结束提示
echo -e "${BOLD}${GREEN}"
echo "=================================================="
echo "          所有节点批量初始化任务执行完毕!"
echo "=================================================="
echo -e "${RESET}"

3.3 脚本执行方式

  1. 将脚本上传至中控机
  2. 添加执行权限:chmod +x tidb_env_init.sh
  3. root用户执行sh tidb_env_init.sh
  4. 执行完成后重启所有节点,确保参数生效

四、中控机TiUP自动化安装脚本 仅需在中控机(部署管理节点)执行,用于安装TiUP工具、初始化集群管理环境,后续所有集群操作均通过中控机完成。 4.1 脚本名称 tiup_install.sh 4.2 完整脚本内容

#!/bin/bash
# 全局严格模式
set -euo pipefail

#颜色定义
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
BOLD="\033[1m"
RESET="\033[0m"   # 取消颜色

# ==================== 错误捕捉打印函数 =====================
error_exit() {
	local LINE_NUM="$1"
    local FAILED_CMD="$2"
    local EXIT_CODE="$3"
	echo -e "${BOLD}${RED}"
    echo ""
    echo -e "############################ 脚本异常终止 ############################"
    echo -e "❌ 出错行号:      ${LINE_NUM}"
    echo -e "❌ 失败命令内容:  ${FAILED_CMD}"
    echo -e "❌ 命令退出码:    ${EXIT_CODE}"
    echo -e "####################################################################"
	echo -e "${RESET}"
}
trap 'error_exit $LINENO "$BASH_COMMAND" $?' ERR

# 打印头部信息
echo -e "${BOLD}${GREEN}"
echo "============================================================"
echo "脚本名称:TiUP 自动化安装脚本"
echo "功能描述:中控机通过sshpass远程安装TiUP工具"
echo "适配系统:CentOS 7.x/9.X"
echo "执行用户:root"
echo "编写作者:Frank 飞"
echo "编写时间:2026年07月28日"
echo "版本信息:V1.0"
echo "执行方式:sh tiup_install.sh"
echo "============================================================"
echo -e "${RESET}"

echo -e "${BOLD}${GREEN}========== 开始批量远程部署TiUP工具 ==========${RESET}"

echo -e "${BOLD}${YELLOW}>>>>>>>>>>>>>>>>> TiUP开始安装【${tiupip}】 <<<<<<<<<<<<<<<<<${RESET}"

##################### 配置项(根据实际版本修改)######################
TIUP_OFFLINE_PKG="tidb-community-server-${tidb_version}-linux-amd64.tar.gz"
TIUP_OFFLINE="tidb-community-server-${tidb_version}-linux-amd64"
PKG_IP="172.21.33.226"
PKG_DIR="/tiup"
INSTALL_DIR="/tidb-deploy"
TOPO_FILE="topology.yaml"
DOWNLOAD_URL1="http://${PKG_IP}${PKG_DIR}/${TIUP_OFFLINE_PKG}"
DOWNLOAD_URL2="http://${PKG_IP}${PKG_DIR}/${TOPO_FILE}"
##################################################################

# sshpass 远程执行代码块,所有TiUP命令嵌入EOF内
sshpass -p "${tiuphostpasswd}" ssh -T -o StrictHostKeyChecking=no -o LogLevel=ERROR ${tiuphostname}@${tiupip} \
bash -s -- "${tiupip}" "${TIUP_OFFLINE_PKG}" "${TIUP_OFFLINE}" "${PKG_IP}" "${DOWNLOAD_URL1}" "${DOWNLOAD_URL2}" "${INSTALL_DIR}" <<'REMOTE_SHELL'
set -eo pipefail
# 获取中控传入变量
tiupip="$1"
TIUP_OFFLINE_PKG="$2"
TIUP_OFFLINE="$3"
PKG_IP="$4"
DOWNLOAD_URL1="$5"
DOWNLOAD_URL2="$6"
INSTALL_DIR="$7"

echo "=========== 当前已进入${tiupip}服务器执行环境 ==========="
# 查看包是否存在
cd ${INSTALL_DIR}
# wget下载,失败直接退出
if ! wget -N --no-check-certificate --progress=bar:force:noscroll "${DOWNLOAD_URL1}" "${DOWNLOAD_URL2}";then
    echo "❌ 安装包下载失败!"
    exit 1
fi
echo "✅ 安装包下载完成!"

echo "==================== 1. 解压离线包 ===================="
tar -xzvf ${TIUP_OFFLINE_PKG}
echo "✅ TiUP服务器文件解压完成!目录:${INSTALL_DIR}"

echo "================ 2. 离线安装 TiUP 工具 ================"
# 执行官方离线安装脚本,local_install.sh 脚本会自动执行使用本地离线仓库,禁止联网 
sh ${TIUP_OFFLINE}/local_install.sh
# 加载环境变量
source /root/.bash_profile

echo "=================== 3. 部署完成验证 ==================="
# 验证版本
echo "TiUP版本信息:"
tiup --version

REMOTE_SHELL

# 节点执行结果校验
if [ $? -eq 0 ];then
    echo -e "${BOLD}${GREEN}✅ 节点【${tiupip}】TiUP工具部署成功${RESET}"
else
    echo -e "${BOLD}${RED}❌ 节点【${tiupip}】TiUP工具部署异常!请手动排查${RESET}"
fi

# 全局结束提示
echo -e "${BOLD}${GREEN}"
echo "============================================="
echo "✅ TiUP 离线部署完成!所有组件已本地安装"
echo "✅ 离线镜像源永久生效,无外网也可使用"
echo "============================================="
echo -e "${RESET}"

4.3 脚本执行方式

  1. 上传脚本至中控机,添加权限:chmod +x tiup_install.sh
  2. root执行:sh tiup_install.sh
  3. 执行完毕加载环境变量:source /home/tidb/.bashrc
  4. 验证:输入tiup --version,无报错即为安装成功

五、集群拓扑配置文件 适配TiDB V7.5.2/V8.5.6版本,生产高可用架构,文件名称topology.yaml。 5.1 完整拓扑配置

# TiDB V7.5.2/V8.5.6 集群拓扑配置文件
global:
  user: "tidb"
  group: "tidb"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-deploy/tidb-data"
  os: "linux"
  arch: "amd64"
monitored:
  node_exporter_port: 9102
  blackbox_exporter_port: 9115

# PD节点配置 3节点高可用
pd_servers:
  - host: 172.21.0.1
    name: pd-1
    client_port: 2379
    peer_port: 2380
  - host: 172.21.0.2
    name: pd-2
    client_port: 2379
    peer_port: 2380
  - host: 172.21.0.3
    name: pd-3
    client_port: 2379
    peer_port: 2380

# TiKV节点配置 3节点多副本
tikv_servers:
  - host: 172.21.0.5
    port: 20160
    status_port: 20180
    config:
      server.labels:
        host: 172.21.0.5
  - host: 172.21.0.6
    port: 20160
    status_port: 20180
    config:
      server.labels:
        172.21.0.6
  - host: 172.21.0.7
    port: 20160
    status_port: 20180
    config:
      server.labels:
        host: 172.21.0.7

# TiDB Server 2节点负载均衡
tidb_servers:
  - host: 172.21.0.8
    port: 4000
    status_port: 10080
  - host: 172.21.0.9
    port: 4000
    status_port: 10080

# 监控节点配置
monitoring_servers:
  - host: 172.21.0.10

grafana_servers:
  - host: 172.21.0.10
  
alertmanager_servers:
  - host: 172.21.0.10

# 组件个性化参数
server_configs:
  tidb:
    log.slow-threshold: 300
  tikv:
    readpool.storage.use-unified-pool: false
    readpool.coprocessor.use-unified-pool: true
    storage.block-cache.capacity: "5GB" 
    # 根据服务器内存调整,一般物理内存50%左右
  pd:
    replication.location-labels: ["host"]
    replication.max-replicas: 3

5.2 配置修改说明 使用时仅需替换节点IP地址为实际服务器IP,端口、路径、优化参数均为V7.5.2/V8.5.6版本最优默认配置,无需修改。

六、集群一键自动化部署脚本 整合环境校验、版本部署、集群启动、状态检测全流程,一键部署TiDB V7.5.2/V8.5.6正式集群。 6.1 脚本名称 tidb_deploy_all.sh 6.2 完整脚本内容

#!/bin/bash
# 全局严格模式
set -euo pipefail

#颜色定义
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
BOLD="\033[1m"
RESET="\033[0m"   # 取消颜色

# ==================== 错误捕捉打印函数 =====================
error_exit() {
	local LINE_NUM="$1"
    local FAILED_CMD="$2"
    local EXIT_CODE="$3"
	echo -e "${BOLD}${RED}"
    echo ""
    echo -e "############################ 脚本异常终止 ############################"
    echo -e "❌ 出错行号:      ${LINE_NUM}"
    echo -e "❌ 失败命令内容:  ${FAILED_CMD}"
    echo -e "❌ 命令退出码:    ${EXIT_CODE}"
    echo -e "####################################################################"
	echo -e "${RESET}"
}
trap 'error_exit $LINENO "$BASH_COMMAND" $?' ERR

# 打印头部信息
echo -e "${BOLD}${GREEN}"
echo "============================================================"
echo "脚本名称:TiDB 一键自动化部署脚本"
echo "功能描述:中控机通过sshpass远程安装TiDB集群"
echo "适配系统:CentOS 7.x/9.X"
echo "执行用户:root"
echo "编写作者:Frank 飞"
echo "编写时间:2026年07月28日"
echo "版本信息:V1.0"
echo "执行方式:sh tidb_deploy_all.sh"
echo "============================================================"
echo -e "${RESET}"

# ==================== 自定义配置区域,请按需修改 =====================
HOSTIP="${hostip}"
HOSTPASSWD="${hostpasswd}"
TIUP_IP="${tiupip}"
TIUP_USER="${tiuphostname}"
TIUP_PWD="${tiuphostpasswd}"
CLUSTER_NAME="${tidbcluster_name}"
TIDB_VERSION="${tidb_version}"
TOPO_FILE="topology.yaml"
INSTALL_DIR="/tidb-deploy"
# ================================================================

# TiUP 机器生成 ssh 密钥对(存在就重建)
sshpass -p "${TIUP_PWD}" ssh -T -o StrictHostKeyChecking=no -o LogLevel=ERROR ${TIUP_USER}@${TIUP_IP} \
bash -s -- "${INSTALL_DIR}" "${HOSTIP}" "${HOSTPASSWD}" <<'REMOTE_SHELL1'
set -eo pipefail
# 获取中控传入变量
INSTALL_DIR="$1"
HOSTIP="$2"
HOSTPASSWD="$3"

cd ${INSTALL_DIR}
rm -f /root/.ssh/id_ed260728 /root/.ssh/id_ed260728.pub
ssh-keygen -t ed260728 -N "" -f /root/.ssh/id_ed260728 -q
echo "✅ ssh 密钥对生成完成"

IFS=',' read -ra IP_ARR <<< "${HOSTIP}"
for SINGLE_IP in "${IP_ARR[@]}"; do
  sshpass -p "${HOSTPASSWD}" ssh-copy-id -o StrictHostKeyChecking=no -o \
  LogLevel=ERROR -i /root/.ssh/id_ed260728.pub root@${SINGLE_IP}
  echo "✅ 公钥已经分发到 ${SINGLE_IP} 服务器"
done

REMOTE_SHELL1

echo -e "${BOLD}${GREEN}"
echo "=================================================="
echo "          所有节点公钥批量分发任务执行完毕!"
echo "=================================================="
echo -e "${RESET}"
echo ""
echo -e "${BOLD}${GREEN}========== 开始批量远程部署TiDB集群 ==========${RESET}"
echo -e "${BOLD}${YELLOW}>>>>>>>>>>>>>> TiDB集群开始安装 <<<<<<<<<<<<<<<${RESET}"

# sshpass 远程执行代码块,所有TiDB命令嵌入EOF内
sshpass -p "${TIUP_PWD}" ssh -T -o StrictHostKeyChecking=no -o LogLevel=ERROR ${TIUP_USER}@${TIUP_IP} \
bash -s -- "${CLUSTER_NAME}" "${TIDB_VERSION}" "${TOPO_FILE}" "${INSTALL_DIR}" <<'REMOTE_SHELL2'
set -eo pipefail
# 获取中控传入变量
CLUSTER_NAME="$1"
TIDB_VERSION="$2"
TOPO_FILE="$3"
INSTALL_DIR="$4"

echo "==================== 开始部署TiDB集群 ===================="
echo "集群名称:$CLUSTER_NAME"
echo "部署版本:$TIDB_VERSION"
echo "拓扑文件:$TOPO_FILE"

# 1. 校验拓扑文件是否存在
cd ${INSTALL_DIR}
if [ ! -f $TOPO_FILE ];then
  echo "❌ ERROR:拓扑文件 $TOPO_FILE 不存在,请检查!"
  exit 1
fi

# 2. 集群环境预检与自动修复
echo ">>>>>>>>>>>>>> 【步骤1】 执行集群环境预检与参数修复"
source /root/.bash_profile
tiup cluster check $TOPO_FILE -i /root/.ssh/id_ed260728
tiup cluster check $TOPO_FILE --apply -i /root/.ssh/id_ed260728
echo ">>>>>>>>>>>>>> 【步骤2】 再次执行集群环境预检"
tiup cluster check $TOPO_FILE -i /root/.ssh/id_ed260728

# 3. 正式部署集群
echo ">>>>>>>>>>>>>> 【步骤3】 开始部署TiDB $TIDB_VERSION 集群"
tiup cluster deploy $CLUSTER_NAME $TIDB_VERSION $TOPO_FILE -y -i /root/.ssh/id_ed260728

# 4. 查看 TiUP 管理的集群情况
echo ">>>>>>>>>>>>>> 【步骤4】 查看 TiUP 管理的集群情况"
tiup cluster list

# 5. 检查部署的 TiDB 集群情况
echo ">>>>>>>>>>>>>> 【步骤5】 检查部署的 TiDB 集群情况,各节点 Status 状态信息为 Down/inactive 说明集群未启动"
tiup cluster display $CLUSTER_NAME

# 6. 启动集群
echo ">>>>>>>>>>>>>> 【步骤6】 启动TiDB集群,通过无密码的 root 用户登录数据库"
tiup cluster start $CLUSTER_NAME

# 7. 验证集群运行状态
echo ">>>>>>>>>>>>>> 【步骤7】 验证集群运行状态,各节点 Status 状态信息为 Up 说明集群状态正常"
tiup cluster display $CLUSTER_NAME

echo "==================== 集群部署完成 ===================="
echo "数据库连接地址:TiDB节点IP:4000"
echo "监控地址:http://监控节点IP:3000 (Grafana)"
echo "Prometheus地址:http://监控节点IP:9090"

REMOTE_SHELL2

# 节点执行结果校验
if [ $? -eq 0 ];then
    echo -e "${BOLD}${GREEN}✅ 集群环境部署成功${RESET}"
else
    echo -e "${BOLD}${RED}❌ 集群环境部署异常!请手动排查${RESET}"
fi

七、完整部署落地流程 7.1 前置准备

  1. 整理所有集群节点IP,规划PD、TiKV、TiDB、监控节点分工
  2. 所有节点执行tidb_env_init.sh环境初始化脚本,重启生效
  3. 配置所有节点SSH免密互通(中控机免密登录所有业务节点)
  4. 中控机执行tiup_install.sh安装部署工具
  5. 修改topology.yaml文件,替换为实际节点IP

7.2 一键部署执行

  1. 中控机切换tidb用户:su - tidb
  2. 将topology.yaml和tidb_deploy_all.sh放在同一目录
  3. 添加执行权限:chmod +x tidb_deploy_all.sh
  4. 一键执行部署:./tidb_deploy_all.sh
  5. 等待10-20分钟,脚本自动完成部署、启动、校验全流程

7.3 部署成功校验

  1. 集群状态校验:tiup cluster display tidb-prod,所有组件状态为Up即为正常
  2. 数据库连接校验:mysql -h TiDB节点IP -P 4000 -u root,可正常登录无报错
  3. 监控校验:浏览器访问Grafana(3000端口)、Prometheus(9090端口),页面正常打开、指标正常采集
  4. 版本校验:登录数据库后执行select version();,显示TiDB V7.5.2/V8.5.6版本

八、集群日常运维自动化脚本 8.1 集群启停脚本 tidb_control.sh

#!/bin/bash
# TiDB集群启停运维脚本
CLUSTER_NAME="tidb-prod"

case $1 in
start)
  tiup cluster start $CLUSTER_NAME
  echo "集群启动成功"
  ;;
stop)
  tiup cluster stop $CLUSTER_NAME
  echo "集群停止成功"
  ;;
restart)
  tiup cluster restart $CLUSTER_NAME
  echo "集群重启成功"
  ;;
*)
  echo "用法:$0 [start|stop|restart]"
  ;;
esac

8.2 集群巡检脚本 tidb_check.sh

#!/bin/bash
# TiDB集群日常巡检脚本
CLUSTER_NAME="tidb-prod"

echo "========== 集群组件状态检查 =========="
tiup cluster display $CLUSTER_NAME

echo -e "\n========== 节点资源使用率检查 =========="
for ip in $(tiup cluster display $CLUSTER_NAME | grep Up | awk '{print $1}');do
  echo "节点$ip 资源信息:"
  ssh $ip "df -h /tidb-data;free -h;uptime"
done

echo -e "\n========== 数据库连通性检查 =========="
mysql -h 127.0.0.1 -P 4000 -u root -e "select version();show databases;"
echo "巡检完成"

九、常见部署问题排查方案 9.1 环境校验失败 问题:文件句柄数不足、swap未关闭、时间不同步 解决:重新执行tidb_env_init.sh,重启节点后重新校验 9.2 SSH连接失败 问题:节点间免密失效、端口不通 解决:重新配置SSH免密,检查防火墙端口放行,确认节点IP互通 9.3 TiKV启动失败 问题:磁盘为机械盘、目录权限不足、磁盘空间不足 解决:更换SSD磁盘,重置目录权限chown -R tidb:tidb /tidb-* 9.4 版本不匹配报错 问题:部署时选错版本、TiUP缓存异常 解决:清空TiUP缓存tiup clean --all,重新指定V7.5.2/V8.5.6版本部署

0
0
1
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论