软硬件环境需求
操作系统要求
-
在以下操作系统以及对应的 CPU 架构组合上,TiDB 可满足企业级生产质量的要求。
- 公司87、88、89服务器就是统信操作系统 (UOS) V20,CPU架构是x86_64,满足要求。
操作系统 |
支持的 CPU 架构 |
Red Hat Enterprise Linux 8.4 及以上的 8.x 版本 |
|
|
|
Amazon Linux 2 |
|
Amazon Linux 2023 |
|
Rocky Linux 9.1 及以上的版本 |
|
麒麟欧拉版 V10 SP1/SP2 |
|
统信操作系统 (UOS) V20 |
|
openEuler 22.03 LTS SP1/SP3 |
|
服务器建议配置
- 开发及测试环境
组件 |
CPU |
内存 |
本地存储 |
网络 |
实例数量(最低要求) |
TiDB |
8 核+ |
16 GB+ |
千兆网卡 |
1(可与 PD 同机器) |
|
PD |
4 核+ |
8 GB+ |
SAS, 200 GB+ |
千兆网卡 |
1(可与 TiDB 同机器) |
TiKV |
8 核+ |
32 GB+ |
SSD, 200 GB+ |
千兆网卡 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
- 生产环境
组件 |
CPU |
内存 |
硬盘类型 |
网络 |
实例数量(最低要求) |
TiDB |
16 核+ |
48 GB+ |
SSD |
万兆网卡(2 块最佳) |
2 |
PD |
8 核+ |
16 GB+ |
SSD |
万兆网卡(2 块最佳) |
3 |
TiKV |
16 核+ |
64 GB+ |
SSD |
万兆网卡(2 块最佳) |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
监控 |
8 核+ |
16 GB+ |
SAS |
千兆网卡 |
1 |
注意:
- 生产环境中的 TiDB 和 PD 可以部署和运行在同一台服务器上,如对性能和可靠性有更高的要求,应尽可能分开部署。
- 强烈建议分别为生产环境中的 TiDB、TiKV 和 TiFlash 配置至少 8 核的 CPU。强烈推荐使用更高的配置,以获得更好的性能。
网络要求
- 在网络侧和主机侧开放相关端口:
组件 |
默认端口 |
说明 |
TiDB |
4000 |
应用及 DBA 工具访问通信端口 |
TiDB |
10080 |
TiDB 状态信息上报通信端口 |
TiKV |
20160 |
TiKV 通信端口 |
TiKV |
20180 |
TiKV 状态信息上报通信端口 |
PD |
2379 |
提供 TiDB 和 PD 通信端口 |
PD |
2380 |
PD 集群节点间通信端口 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Monitoring |
9090 |
Prometheus 服务通信端口 |
Monitoring |
12020 |
NgMonitoring 服务通信端口 |
Node_exporter |
9100 |
TiDB 集群每个节点的系统信息上报通信端口 |
Blackbox_exporter |
9115 |
Blackbox_exporter 通信端口,用于 TiDB 集群端口监控 |
Grafana |
3000 |
Web 监控服务对外服务和客户端(浏览器)访问端口 |
Alertmanager |
9093 |
告警 web 服务端口 |
Alertmanager |
9094 |
告警通信端口 |
磁盘空间要求
组件 |
磁盘空间要求 |
健康水位使用率 |
TiDB |
日志盘建议最少预留 30 GB。 |
低于 90% |
PD |
数据盘和日志盘建议最少各预留 20 GB |
低于 90% |
TiKV |
数据盘和日志盘建议最少各预留 100 GB |
低于 80% |
|
|
|
环境与系统配置
检测及关闭系统swap
- TiDB 运行需要有足够的内存。如果想保持性能稳定,则建议永久关闭系统 swap,但可能在内存偏小时触发 OOM 问题;如果想避免此类 OOM 问题,则可只将 swap 优先级调低,但不做永久关闭。
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a
sysctl -p
关闭防火墙
- 在 TiDB 集群中,需要将节点间的访问端口打通才可以保证读写请求、数据心跳等信息的正常的传输,建议将目标节点的防火墙进行关闭。否则建议按照端口使用规则,将端口信息配置到防火墙服务的白名单中。
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
关闭 SELinux
SELinux 必须关闭或设置为 permissive
模式。
- 临时关闭:执行setenforce 0
- 永久关闭:如果 SELinux 未关闭,请打开
/etc/selinux/config
文件,找到以SELINUX=
开头的行,并将其修改为SELINUX=disabled
。修改完成后,你需要重启系统,因为从enforcing
或permissive
切换到disabled
模式只有在重启后才会生效。
检测及安装NTP服务
- TiDB 是一套分布式数据库系统,需要节点间保证时间的同步,从而确保 ACID 模型的事务线性一致性。
# 查看ntp服务状态
sudo systemctl status chronyd.service
# 启动
systemctl start chronyd
# 开机自启动
systemctl enable chronyd
配置操作系统优化参数
- 一次性执行以下命令修改 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
echo "vm.min_free_kbytes = 1048576">> /etc/sysctl.conf
sysctl -p
不建议在内存小于 16 GiB 的系统上调大 vm.min_free_kbytes
的值,否则可能导致系统不稳定或启动失败。建议将 vm.min_free_kbytes
最小设置为 1048576
KiB(即 1 GiB)。
- 执行以下命令配置用户的 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
- 执行以下命令查看透明大页的开启状态。
cat /sys/kernel/mm/transparent_hugepage/enabled
# [always] madvise never 表示透明大页处于启用状态,需要关闭。
# 临时关闭
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久关闭,在GRUB_CMDLINE_LINUX参数中增加:transparent_hugepage=never
vi /etc/default/grub
# 更新GRUB配置文件,重启系统才生效
grub2-mkconfig -o /boot/grub2/grub.cfg
配置SSH互信及sudo免密码
- 通常推荐使用 TiUP 部署工具会自动配置 SSH 互信及免密登录,可忽略。
- 以
root
用户依次登录到3台部署目标机器创建tidb
用户并设置登录密码。
useradd -m -d /home/tidb tidb
# 设置密码,和root密码一致即可
passwd tidb
visudo
# 添加到文件末
tidb ALL=(ALL) NOPASSWD: ALL
- 以
tidb
用户登录到中控机,执行以下命令。按提示输入部署目标机器tidb
用户密码,执行成功后即创建好 SSH 互信,如果要在中控机上部署 TiDB 组件,需要为中控机和中控机自身配置互信。
新建用户,若切换到新用户后,只显示$问题,许多命令不能用,解决如下:
- 切换到root用下,执行
cat /etc/passwd
- 最后一行发现shell为/bin/sh
- 默认的shell为:
/bin/sh
,需要把其修改为/bin/bash
su - tidb
ssh-keygen -t rsa
ssh-copy-id -i /home/tidb/.ssh/id_rsa.pub 172.23.57.88
ssh-copy-id -i /home/tidb/.ssh/id_rsa.pub 172.23.57.89
- 以
tidb
用户登录中控机,通过ssh
的方式登录目标机器 IP。如果不需要输入密码并登录成功,即表示 SSH 互信配置成功。
ssh 172.23.57.88
ssh 172.23.57.89
- 以
tidb
用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到root
用户,表示tidb
用户 sudo 免密码配置成功。
sudo -su root
时区问题解决(坑)
问题描述:
统信系统安装TiDB时,在配置好tidb后,在进行初始化安装时tiup cluster start tidb-test --init
出现报错,查看到到具体的报错日志显示出evaluation failed: unknown or incorrect time zone: Asia/Beijing的问题。
原因:
这是因为Asia/Beijing和Asia/Shanghai在同一时区,Asia/Shanghai在时区的认可度上更高,所以如果时区在东八区被设置为Asia/Beijing的情况下,会出现时区无法识别的情况。
解决方案:
在安装TiDB之前,查看时区:执行timedatectl,若时区为Asia/Beijing,则将时区改为Asia/Shanghai:sudo timedatectl set-timezone Asia/Shanghai。
若因为未改时区导致在初始化安装时出现这个问题,必须卸载TiDB后重新安装。因为在安装的时候,已经把系统中的时间给安装到tidb中去了,所以必须卸载,不卸载的话,继续tiup cluster start tidb-test --init依然会报错evaluation failed: unknown or incorrect time zone: Asia/Beijing
卸载前需要先在3台服务器上执行:kill -9 9100端口的进程号
卸载命令: tiup cluster destroy <cluster-name>
TiUP离线部署TiDB集群
部署规划
因为87、88、89服务器不通外网,所以这里不采用TiUP在线方式部署,而是采用TiUP离线方式部署。
PD |
172.23.57.87 |
TiDB |
172.23.57.88 |
TiKV |
172.23.57.87 |
TiKV |
172.23.57.88 |
TiKV |
172.23.57.89 |
prometheus |
172.23.57.88 |
grafana |
172.23.57.88 |
alertmanager |
172.23.57.88 |
创建用户
- 以普通用户身份登录中控机87。以
tidb
用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成。 - 切换到root用户,创建/tidb目录作为中控机的部署目录,创建/tidb/soft作为离线部署离线镜像包的存储目录,并对目录进行授权后,切换到tidb用户。
exit
mkdir /tidb
mkdir /tidb/soft
chown -R tidb:tidb /tidb
chmod -R 775 /tidb
su - tidb
准备TiUP离线组件包
- 访问TiDB社区版页面,在官方下载页面选择对应版本的 TiDB server 离线镜像包(包含 TiUP 离线组件包)。需要同时下载 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包。
选择v8.1.0版本,架构选择x86,64-bit
- 将下载的2个软件包上传到/tidb/soft目录下
部署离线环境TiUP组件
- 执行以下命令安装 TiUP 组件:
cd /tidb/soft
tar xzvf tidb-community-server-v8.1.0-linux-amd64.tar.gz
sh tidb-community-server-v8.1.0-linux-amd64/local_install.sh
# TiUP 安装完成后会提示对应 Shell profile 文件的绝对路径。
# 在执行以下 source 命令前,需要将 ${your_shell_profile} 修改为 Shell profile 文件的实际位置。
source /home/tidb/.bash_profile
合并离线包
- 如果是通过官方下载页面下载的离线软件包,需要将 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包合并到离线镜像中。执行以下命令合并离线组件到 server 目录下。
tar xf tidb-community-toolkit-v8.1.0-linux-amd64.tar.gz
ls -ld tidb-community-server-v8.1.0-linux-amd64 tidb-community-toolkit-v8.1.0-linux-amd64
cd tidb-community-server-v8.1.0-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-v8.1.0-linux-amd64
初始化集群拓扑文件
cd /tidb
vi topology.yaml
将下面配置文件的内容写入topology.yaml中
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/tidb-deploy"
data_dir: "/tidb/tidb-data"
resource_control:
memory_limit: "4G"
server_configs:
tidb:
log.file.max-days: 7
tikv:
log.file.max-days: 7
pd:
log.file.max-days: 7
pd_servers:
- host: 172.23.57.87
tidb_servers:
- host: 172.23.57.88
tikv_servers:
- host: 172.23.57.87
resource_control:
memory_limit: "10G"
- host: 172.23.57.88
resource_control:
memory_limit: "10G"
- host: 172.23.57.89
resource_control:
memory_limit: "10G"
monitoring_servers:
- host: 172.23.57.88
grafana_servers:
- host: 172.23.57.88
alertmanager_servers:
- host: 172.23.57.88
执行部署命令
- 部署 TiDB 集群:
tiup cluster deploy tidb-test v8.1.0 /tidb/topology.yaml --user root -p
tidb-test
为部署的集群名称。v8.1.0
为部署的集群版本,可以通过执行tiup list tidb
来查看 TiUP 支持的最新可用版本。- 初始化配置文件为
topology.yaml
。 --user root
表示通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。- [-i] 及 [-p] 为可选项,如果已经配置免密登录目标机,则不需填写。否则选择其一即可,[-i] 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码。
预期日志结尾输出 Deployed cluster tidb-test successfully
关键词,表示部署成功。
检查部署的TiDB集群情况
- 执行如下命令检查
tidb-test
集群情况:
tiup cluster display tidb-test
预期输出包括 tidb-test
集群中实例 ID、角色、主机、监听端口和状态(由于还未启动,所以状态为 Down/inactive)、目录信息。
启动集群
- 采用安全启动方式:
tiup cluster start tidb-test --init
注意
- 使用安全启动方式后,不能通过无密码的 root 用户登录数据库,TiUP 会自动生成 TiDB root 用户的密码,并在命令行界面返回密码,你需要记录命令行返回的密码进行后续操作。
- 该自动生成的密码只会返回一次,如果没有记录或者忘记该密码,请参照官网忘记 root 密码修改密码。
- 这里自动生成的密码为:
*Zk81Nt-w9jc2_4g^5
验证集群运行状态
tiup cluster display tidb-test
预期结果输出:各节点 Status 状态信息为 Up
说明集群状态正常。
启停集群
tiup cluster stop tidb-test
tiup cluster start tidb-test
集群服务自启动
- 命令
tiup cluster enable
用于设置集群服务在机器重启后的自启动,该命令会到指定的节点上去执行systemctl enable <service>
来开启服务的自启。
注意:
集群全部关机重启时,服务启动的顺序由节点的操作系统启动顺序决定。重启顺序不正确时,在某些情况下,重启后的集群仍然不能提供服务(比如先启动了 TiKV 但未启动 PD,systemd 重启 TiKV 多次仍未找到 PD 则会放弃)。
tiup cluster enable tidb-test
问题解决
- 执行命令时用户密码过期。
解决方案:
在各个节点上设置密码永不过期,执行:sudo chage -M 99999 tidb
服务访问
访问TiDB数据库
- 用户名:root 密码:*Zk81Nt-w9jc2_4g^5 IP:TiDB组件的ip,即172.23.57.88 端口:4000
访问TiDB的Dashboard
- 通过 http://{pd-ip}:2379/dashboard 访问集群 TiDB Dashboard 监控页面,默认用户名为 root,密码为 *Zk81Nt-w9jc2_4g^5
访问TiDB的Grafana监控
- 通过 http://{grafana-ip}:3000 访问集群 Grafana 监控页面,默认用户名和密码均为 admin。
开启 binlog(可选)
检查 tidb 是否开启 binlog
mysql> show global variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
1 row in set (0.02 sec)
--off表示没有开启binlog;
mysql> show pump status;
Empty set (0.01 sec)
mysql> show drainer status;
Empty set (0.04 sec)
开启 binlog
TiDB Binlog 集群主要分为 Pump 和 Drainer 两个组件,以及 binlogctl 工具:
Pump
Pump 用于实时记录 TiDB 产生的 Binlog,并将 Binlog 按照事务的提交时间进行排序,再提供给 Drainer 进行消费。
Drainer
Drainer 从各个 Pump 中收集 Binlog 进行归并,再将 Binlog 转化成 SQL 或者指定格式的数据,最终同步到下游。
cd /tidb
vi scale_out_binlog.yaml
将下面配置文件的内容写入scale_out_binlog.yaml中
pump_servers:
- host: 172.23.57.88 # 指定要在那台服务器部署
ssh_port: 22
port: 8250 # 启动端口
deploy_dir: /tidb/tidb-deploy/pump-8250
data_dir: /tidb/tidb-data/pump-8250
log_dir: /tidb/tidb-deploy/pump-8250/logs
config:
gc: 7 # 日志保留天数
log-file: /tidb/tidb-deploy/pump-8250/logs
pd-urls: http://172.23.57.87:2379,http://172.23.57.88:2379,http://172.23.57.89:2379 # 连接pd集群
drainer_servers:
- host: 172.23.57.88 # 指定要在那台服务器部署
ssh_port: 22
port: 8249
deploy_dir: /tidb/tidb-deploy/drainer-8249
data_dir: /tidb/tidb-data/drainer-8249
log_dir: /tidb/tidb-deploy/drainer-8249/logs
config:
pd-urls: http://172.23.57.87:2379,http://172.23.57.88:2379,http://172.23.57.89:2379
syncer.db-type: file # 同步类型
syncer.to.host: 172.23.57.87 # tidb连接IP
syncer.to.password: "*Zk81Nt-w9jc2_4g^5" # tidb连接密码
syncer.to.port: 4000 # tidb连接端口
syncer.to.user: root # tidb连接用户名
syncer.ignore-schemas: INFORMATION_SCHEMA,PERFORMANCE_SCHEMA,mysql # 不同步哪些库
syncer.ignore-table: # 忽略那些表
- db-name: "*" # 所有库中以sc开头的表忽略同步
tbl-name: "~^sc.*"
- db-name: "*"
tbl-name: "~^tmp.*" # 所有库中以tmp开头的表忽略同步
- db-name: "*"
tbl-name: "~^dim.*" # 所有库中以dim开头的表忽略同步
- db-name: "*"
tbl-name: "~^sync_table_batch"
部署 pump 和 drainer
tiup cluster scale-out tidb-test /tidb/scale_out_binlog.yaml --user root -p
编辑配置文件
tiup cluster edit-config tidb-test
server_configs:
tidb:
binlog.enable: true
binlog.ignore-error: true
重启
tiup cluster reload tidb-test -R tidb
检查是否已经开启
mysql> show global variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
将binlog_format设为row
set global binlog_format='row'
show variables like 'binlog_format'
数据迁移工具 DM (Data Migration) 离线部署
概述
- TiDB Data Migration (DM) 是一款便捷的数据迁移工具,支持从与 MySQL 协议兼容的数据库(MySQL、MariaDB、Aurora MySQL)到 TiDB 的全量数据迁移和增量数据同步。使用 DM 工具有利于简化数据迁移过程,降低数据迁移运维成本。
- DM 不会将视图的 DDL 语句同步到下游的 TiDB 集群,也不会将针对视图的 DML 语句同步到下游。在该场景下,建议用户在下游 TiDB 集群中自行创建视图。
部署 DM 组件
部署 1 个 DM-master、1 个 DM-worker,都部署在172.23.57.88上。
编辑 DM 的初始化拓扑配置文件
su - tidb
cd /tidb
vi scale-out-DM.yml
-
DM WebUI 是一个 TiDB Data Migration (DM) 迁移任务管理界面,方便用户以直观的方式管理大量迁移任务,无需使用 dmctl 命令行,简化任务管理的操作步骤。
-
如需开启 OpenAPI,则必须在拓扑文件中添加如下配置:
- server_configs:
- master:
- openapi: true
-
在开启 OpenAPI 后,你可以从 DM 集群的任意 master 节点访问 DM WebUI,访问端口与 DM OpenAPI 保持一致,默认为
8261
。访问地址示例:http://{master_ip}:{master_port}/dashboard/
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/dm-deploy"
data_dir: "/tidb/dm-data"
server_configs:
master:
openapi: true
master_servers:
- host: 172.23.57.88
worker_servers:
- host: 172.23.57.88
执行部署命令
tiup dm deploy dm-test v8.1.0 /tidb/scale-out-DM.yml --user root -p
以上部署命令中:
- 通过 TiUP DM 部署的集群名称为
dm-test
。 - 部署版本为
${version}
,可以通过执行tiup list dm-master
来查看 TiUP 支持的最新版本。 - 初始化配置文件为
/tidb/scale-out-DM.yml
。
检查并启动 DM
# 执行如下命令检查 dm-test 集群情况
tiup dm display dm-test
# 启动集群
tiup dm start dm-test
访问 DM WebUI
http://172.23.57.88:8261/dashboard/
- 创建迁移任务之前,需要先行创建所需要同步的上游数据源信息。
- 创建迁移任务
DM 运维命令
# 重启 DM
tiup dm restart dm-test
# 启动 DM
tiup dm start dm-test
# 停止 DM
tiup dm stop dm-test
# 销毁 DM 集群
tiup dm destory dm-test
单机离线部署 TiDB 集群
在单台 Linux 服务器上部署 TiDB 最小的完整拓扑的集群。
环境准备
-
部署主机软件和环境要求如下:
-
部署需要使用部署主机的 root 用户及密码
-
部署主机关闭防火墙或者开放 TiDB 集群的节点间所需端口
-
目前 TiUP Cluster 支持在 x86_64(AMD64)和 ARM 架构上部署 TiDB 集群
- 在 AMD64 架构下,建议使用 CentOS 7.3 及以上版本 Linux 操作系统
- 在 ARM 架构下,建议使用 CentOS 7.6 (1810) 版本 Linux 操作系统
-
由于模拟多机部署,需要通过 root 用户调大 sshd 服务的连接数限制:
- 修改
/etc/ssh/sshd_config
将MaxSessions
调至 20。 - 重启 sshd 服务:service sshd restart
- 修改
离线安装 TiUP 组件
创建用户
- 以普通用户身份登录中控机225。以
tidb
用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成。
新建用户,切换到新用户后,只显示$问题,许多命令不能用,解决如下:
- 切换到root用下,执行
cat /etc/passwd
- 最后一行发现shell为/bin/sh
- 默认的shell为:
/bin/sh
,需要把其修改为/bin/bash
useradd -m -d /home/tidb tidb
visudo
tidb ALL=(ALL) NOPASSWD: ALL
su - tidb
ssh-keygen -t rsa
- 切换到root用户,创建/tidb目录作为中控机的部署目录,创建/tidb/soft作为离线部署离线镜像包的存储目录,并对目录进行授权后,切换到tidb用户。
exit
mkdir /tidb
mkdir /tidb/soft
chown -R tidb:tidb /tidb
chmod -R 775 /tidb
su - tidb
准备TiUP离线组件包
- 访问TiDB社区版页面,在官方下载页面选择对应版本的 TiDB server 离线镜像包(包含 TiUP 离线组件包)。需要同时下载 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包。
选择v8.5.0版本,架构选择x86,64-bit
- 将下载的2个软件包上传到/tidb/soft目录下
部署离线环境TiUP组件
- 执行以下命令安装 TiUP 组件:
cd /tidb/soft
tar xzvf tidb-community-server-v8.5.0-linux-amd64.tar.gz
sh tidb-community-server-v8.5.0-linux-amd64/local_install.sh
# TiUP 安装完成后会提示对应 Shell profile 文件的绝对路径。
# 在执行以下 source 命令前,需要将 ${your_shell_profile} 修改为 Shell profile 文件的实际位置。
source /home/tidb/.bash_profile
合并离线包
- 如果是通过官方下载页面下载的离线软件包,需要将 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包合并到离线镜像中。执行以下命令合并离线组件到 server 目录下。
tar xf tidb-community-toolkit-v8.5.0-linux-amd64.tar.gz
ls -ld tidb-community-server-v8.5.0-linux-amd64 tidb-community-toolkit-v8.5.0-linux-amd64
cd tidb-community-server-v8.5.0-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-v8.5.0-linux-amd64
集群拓扑
最小规模的 TiDB 集群拓扑包含以下实例:
实例 | 个数 | IP | 配置 |
TiKV | 3 | 172.23.57.225 | 使用递增的端口号以避免冲突 |
TiDB | 1 | 172.23.57.225 | 使用默认端口和其他配置 |
PD | 1 | 172.23.57.225 | 使用默认端口和其他配置 |
Monitor | 1 | 172.23.57.225 | 使用默认端口和其他配置 |
初始化集群拓扑文件
cd /tidb
vi topology.yaml
将下面配置文件的内容写入topology.yaml中
# # Global variables are applied to all deployments and used as the default value of
# # the deployments if a specific deployment value is missing.
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/tidb-deploy"
data_dir: "/tidb/tidb-data"
resource_control:
memory_limit: "4G"
# # Monitored variables are applied to all the machines.
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
server_configs:
tidb:
log.file.max-days: 7
instance.tidb_slow_log_threshold: 300
tikv:
log.file.max-days: 7
readpool.storage.use-unified-pool: false
readpool.coprocessor.use-unified-pool: true
pd:
log.file.max-days: 7
replication.enable-placement-rules: true
replication.location-labels: ["host"]
tiflash:
logger.level: "info"
pd_servers:
- host: 172.23.57.225
tidb_servers:
- host: 172.23.57.225
tikv_servers:
- host: 172.23.57.225
port: 20160
status_port: 20180
resource_control:
memory_limit: "6G"
config:
server.labels: { host: "logic-host-1" }
- host: 172.23.57.225
port: 20161
status_port: 20181
resource_control:
memory_limit: "6G"
config:
server.labels: { host: "logic-host-2" }
- host: 172.23.57.225
port: 20162
status_port: 20182
resource_control:
memory_limit: "6G"
config:
server.labels: { host: "logic-host-3" }
monitoring_servers:
- host: 172.23.57.225
port: 9091
grafana_servers:
- host: 172.23.57.225
执行部署命令
- 部署 TiDB 集群:
tiup cluster deploy tidb-single v8.5.0 /tidb/topology.yaml --user root -p
tidb-single
为部署的集群名称。v8.5.0
为部署的集群版本,可以通过执行tiup list tidb
来查看 TiUP 支持的最新可用版本。- 初始化配置文件为
topology.yaml
。 --user root
表示通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。- [-i] 及 [-p] 为可选项,如果已经配置免密登录目标机,则不需填写。否则选择其一即可,[-i] 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码。
预期日志结尾输出 Deployed cluster tidb-test successfully
关键词,表示部署成功。
检查部署的TiDB集群情况
- 执行如下命令检查
tidb-single
集群情况:
tiup cluster display tidb-single
预期输出包括 tidb-single
集群中实例 ID、角色、主机、监听端口和状态(由于还未启动,所以状态为 Down/inactive)、目录信息。
启动集群
- 采用安全启动方式:
tiup cluster start tidb-single --init
注意
- 使用安全启动方式后,不能通过无密码的 root 用户登录数据库,TiUP 会自动生成 TiDB root 用户的密码,并在命令行界面返回密码,你需要记录命令行返回的密码进行后续操作。
- 该自动生成的密码只会返回一次,如果没有记录或者忘记该密码,请参照官网忘记 root 密码修改密码。
- 这里自动生成的密码为:
3k5+4S2nD*^69YB-EW
验证集群运行状态
tiup cluster display tidb-single
预期结果输出:各节点 Status 状态信息为 Up
说明集群状态正常。
启停集群
tiup cluster stop tidb-single
tiup cluster start tidb-single
集群服务自启动
- 命令
tiup cluster enable
用于设置集群服务在机器重启后的自启动,该命令会到指定的节点上去执行systemctl enable <service>
来开启服务的自启。
注意:
集群全部关机重启时,服务启动的顺序由节点的操作系统启动顺序决定。重启顺序不正确时,在某些情况下,重启后的集群仍然不能提供服务(比如先启动了 TiKV 但未启动 PD,systemd 重启 TiKV 多次仍未找到 PD 则会放弃)。
tiup cluster enable tidb-single