Linux 下安装部署 TiDB

一、安装前准备工作

1.1 关闭主机防火墙

#检查防火墙状态
sudo systemctl status firewalld.service
#关闭防火墙服务
sudo systemctl stop firewalld.service
#关闭防火墙自动启动服务
sudo systemctl disable firewalld.service
#检查防火墙状态
sudo systemctl status firewalld.service

1.2 关闭系统swap

echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && sysctl -p

1.3 操作系统参数优化

  • 检查操作系统当前配置
#执行以下命令查看透明大页的开启状态,[always] madvise never 表示透明大页处于启用状态,需要关闭。
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

#执行以下命令查看数据目录所在磁盘的 I/O 调度器。假设在 sdb、sdc 两个磁盘上创建了数据目录。noop [deadline] cfq 表示磁盘的 I/O 调度器使用 deadline,需要进行修改。
cat /sys/block/sd[bc]/queue/scheduler

#执行以下命令查看 cpufreq 模块选用的节能策略。The governor "powersave"表示 cpufreq 的节能策略使用 powersave,需要调整为 performance 策略。如果是虚拟机或者云主机,则不需要调整,命令输出通常为 Unable to determine current policy。
cpupower frequency-info --policy

执行以下命令修改 sysctl 参数。
echo "fs.file-max = 1000000">> /etc/sysctl.conf
echo "net.core.somaxconn = 32768">> /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf
echo "vm.overcommit_memory = 1">> /etc/sysctl.conf
sysctl -p

执行以下命令配置用户的 limits.conf 文件。
cat << EOF >> /etc/security/limits.conf
tidb           soft    nofile          1000000
tidb           hard    nofile          1000000
tidb           soft    stack          32768
tidb           hard    stack          32768
EOF

1.4 创建部署用户

#创建 tidb 用户,用于集群部署和维护
useradd -m -d /home/tidb tidb 

#配置 sudo
su - root
visudo 
tidb ALL=(ALL) NOPASSWD: ALL

1.5 上传软件安装包

TiDB社区版安装包下载地址:https://cn.pingcap.com/product-community/

软件包名称 版本 用途
tidb-community-server-v8.5.1-linux-amd64.tar v8.5.1 TiDB集群相关组件
tidb-community-toolkit-v8.5.1-linux-amd64.tar v8.5.1 TiDB生态工具

1.6 安装TiUP组件

  • 将离线安装包放到配置相对较低的服务器上,作为中控机使用
#执行如下命令安装 TiUP 工具:
su - tidb
tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz && \
sh tidb-community-server-${version}-linux-amd64/local_install.sh && \
source /home/tidb/.bash_profile

#确认 TiUP 工具是否安装:
which tiup

二、集群拓扑文件

2.1 制定部署架构

环境 IP 组件
生产 xx.xx.xx.xx tidb,tikv,pd
生产 xx.xx.xx.xx tidb,tikv,pd
生产 xx.xx.xx.xx tidb,tikv,pd

2.2 参数配置

  • 实际路径和IP根据自己环境进行更改
global:
  user: tidb
  ssh_port: 22
  deploy_dir: "/data/tidb/tidb-deploy"
  data_dir: "/data/tidb/tidb-data"
  os: linux
  arch: amd64
monitored:
  node_exporter_port: 9100
  blackbox_exporter_port: 9115
  deploy_dir: "/data/tidb/tidb-deploy/monitored-9100"
  data_dir: "/data/tidb/tidb-data/monitored-9100"
  log_dir: "/data/tidb/tidb-deploy/monitored-9100/log"
server_configs:
  tidb: {}
  tikv:
    # block cache 越大,能够缓存的热点数据越多,读取数据越容易, 
    # 建议设为 block size = memory / 2 / 实例数
    storage.block-cache.capacity: 128GB --按照是需求评估
  pd: {}
tidb_servers:
- host: xx.xx.xx
  ssh_port: 22
  port: 4000
  status_port: 10080
  deploy_dir: "/data/tidb-deploy/tidb-4000"
  log_dir: "/data/tidb-deploy/tidb-4000/log"
  numa_node: "0"    --根据实际numa数量进行评估绑定
- host: xx.xx.xx
  ssh_port: 22
  port: 4000
  status_port: 10080
  deploy_dir: "/data/tidb-deploy/tidb-4000"
  log_dir: "/data/tidb-deploy/tidb-4000/log"
  numa_node: "0"    --根据实际numa数量进行评估绑定
- host: xx.xx.xx
  ssh_port: 22
  port: 4000
  status_port: 10080
  deploy_dir: "/data/tidb-deploy/tidb-4000"
  log_dir: "/data/tidb-deploy/tidb-4000/log"
  numa_node: "0"    --根据实际numa数量进行评估绑定

tikv_servers:
- host: xx.xx.xx
  ssh_port: 22
  port: 20160
  status_port: 20180
  deploy_dir: "/data/tidb-deploy/tikv-20160"
  data_dir: "/data/tidb-data/tikv-20160" 
  log_dir: "/data/tidb-deploy/tikv-20160/log"
  numa_node: "1"    --根据实际numa数量进行评估绑定
- host: xx.xx.xx
  ssh_port: 22
  port: 20161
  status_port: 20181
  deploy_dir: "/data/tidb-deploy/tikv-20160"
  data_dir: "/data/tidb-data/tikv-20160" 
  log_dir: "/data/tidb-deploy/tikv-20160/log"
  numa_node: "1"    --根据实际numa数量进行评估绑定
- host: xx.xx.xx
  ssh_port: 22
  port: 20160
  status_port: 20180
  deploy_dir: "/data/tidb-deploy/tikv-20160"
  data_dir: "/data/tidb-data/tikv-20160" 
  log_dir: "/data/tidb-deploy/tikv-20160/log"
  numa_node: "1"    --根据实际numa数量进行评估绑定

pd_servers:
- host: xx.xx.xx
  ssh_port: 22
  name: pd-xx.xx.xx
  client_port: 2379
  peer_port: 2380
  deploy_dir: "/data/tidb-deploy/pd-2379"
  data_dir: "/data/tidb-data/pd_data"
  log_dir: "/data/tidb-deploy/pd-2379/log"
  numa_node: "0"    --根据实际numa数量进行评估绑定
- host: xx.xx.xx
  ssh_port: 22
  name: pd-xx.xx.xx
  client_port: 2379
  peer_port: 2380
  deploy_dir: "/data/tidb-deploy/pd-2379"
  data_dir: "/data/tidb-data/pd_data"
  log_dir: "/data/tidb-deploy/pd-2379/log"
  numa_node: "0"    --根据实际numa数量进行评估绑定
- host: xx.xx.xx
  ssh_port: 22
  name: pd-xx.xx.xx
  client_port: 2379
  peer_port: 2380
  deploy_dir: "/data/tidb-deploy/pd-2379"
  data_dir: "/data/tidb-data/pd_data"
  log_dir: "/data/tidb-deploy/pd-2379/log"
  numa_node: "0"    --根据实际numa数量进行评估绑定

monitoring_servers:
- host: xx.xx.xx
  ssh_port: 22
  port: 9090
  deploy_dir: "/data/tidb-deploy/prometheus-9090"
  data_dir: "/data/tidb-data/prometheus_data"
  log_dir: "/data/tidb-deploy/prometheus-9090/log"

grafana_servers:
- host: xx.xx.xx
  ssh_port: 22
  port: 3000
  deploy_dir: "/data/tidb-deploy/grafana-3000"

alertmanager_servers:
- host: xx.xx.xx
  web_port: 9093
  cluster_port: 9094
  deploy_dir: "/data/tidb-deploy/alertmanager-9093"
  data_dir: "/data/tidb/tidb-data/alertmanager-9093"
  log_dir: "/data/tidb-deploy/alertmanager-9093/log"

三、集群部署

3.1 部署前 check & apply 集群环境

  • 执行 deploy 命令前,先使用 check 及 check --apply 命令,检查和自动修复集群存在的潜在风险:
#检查主机参数是否合标准
tiup cluster check ./topology.yaml --user tidb 
#对异常参数提供修复方式,权限不足的项请手动修复,确保所有项 pass
tiup cluster check ./topology.yaml --apply --user tidb

#PS:
#如果是密钥方式,可以通过 -i 或者 --identity_file 来指定密钥的路径;
#如果是密码方式,可以通过 -p 进入密码交互窗口;

3.2 部署前 check 磁盘性能

tiup cluster check ./topology.yaml --user tidb  --enable-disk

3.3 执行部署命令

#部署集群
tiup cluster deploy tidb-prod v8.5.1 ./topology.yaml --user tidb 

3.4 启动集群

#启动集群
tiup cluster start tidb-prod

3.5 通过 TiUP 检查集群状态

#检查集群状态
tiup cluster display tidb-prod

3.6 设置服务启自动

#配置组件服务随主机自启
tiup cluster enable tidb-prod

四、集群功能验证

4.1 验证数据库基本功能

#创建数据表
use test
create table inttable( id int, value int );
#测试插入语句
INSERT INTO inttable (id, value) VALUES ( 1, 43 );
#测试查询语句
SELECT * FROM inttable;
#测试 drop ddl
drop table inttable;

4.2 验证集群运行状态

  • 通过 TiUP 检查集群状态
#预期结果输出:各节点 Status 状态信息为 Up 说明集群状态正常。
tiup cluster display tidb-prod
  • 通过 TiDB Dashboard 和 Grafana 检查集群状态
  • 查看 Grafana 监控 Overview 页面检查 TiDB 集群状态
posted @ 2025-05-22 15:57  学弟Craze  阅读(447)  评论(0)    收藏  举报