- 关于 TiDB
- 快速上手
- 部署标准集群
- 数据迁移
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 系统调优
- 软件调优
- SQL 性能调优
- SQL 性能调优概览
- 理解 TiDB 执行计划
- SQL 优化流程
- 控制执行计划
- 教程
- TiDB 工具
- 功能概览
- 适用场景
- 工具下载
- TiUP
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB Data Migration
- Backup & Restore (BR)
- TiDB Binlog
- TiCDC
- sync-diff-inspector
- TiSpark
- 参考指南
- 架构
- 监控指标
- 安全加固
- 权限
- SQL
- SQL 语言结构和语法
- SQL 语句
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER USER
ANALYZE TABLE
BACKUP
BEGIN
CHANGE COLUMN
CHANGE DRAINER
CHANGE PUMP
COMMIT
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP PLACEMENT POLICY
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW [BACKUPS|RESTORES]
SHOW ANALYZE STATUS
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- 数据类型
- 函数与操作符
- 聚簇索引
- 约束
- 生成列
- SQL 模式
- 表属性
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 临时表
- 字符集和排序规则
- Placement Rules in SQL
- 系统表
mysql
- INFORMATION_SCHEMA
- Overview
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_RULES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- CLI
- 命令行参数
- 配置文件参数
- 系统变量
- 存储引擎
- 遥测
- 错误码
- 通过拓扑 label 进行副本调度
- 常见问题解答 (FAQ)
- 版本发布历史
- 术语表
使用 TiUP 部署 TiDB 集群
TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群,以及管理 TiDB 集群参数。
目前 TiUP 可以支持部署 TiDB、TiFlash、TiDB Binlog、TiCDC,以及监控系统。本文将介绍不同集群拓扑的具体部署步骤。
TiDB、TiUP 及 TiDB Dashboard 默认会收集使用情况信息,并将这些信息分享给 PingCAP 用于改善产品。若要了解所收集的信息详情及如何禁用该行为,请参见遥测。
第 1 步:软硬件环境需求及前置检查
第 2 步:在中控机上安装 TiUP 组件
在中控机上安装 TiUP 组件有两种方式:在线部署和离线部署。
方式一:在线部署 TiUP 组件
使用普通用户登录中控机,以 tidb
用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成:
执行如下命令安装 TiUP 工具:
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
按如下步骤设置 TiUP 环境变量:
重新声明全局环境变量:
source .bash_profile
确认 TiUP 工具是否安装:
which tiup
安装 TiUP cluster 组件
tiup cluster
如果已经安装,则更新 TiUP cluster 组件至最新版本:
tiup update --self && tiup update cluster
预期输出
“Update successfully!”
字样。验证当前 TiUP cluster 版本信息。执行如下命令查看 TiUP cluster 组件版本:
tiup --binary cluster
方式二:离线部署 TiUP 组件
离线部署 TiUP 组件的操作步骤如下。
准备 TiUP 离线组件包
方式一:在官方下载页面选择对应版本的 TiDB server 离线镜像包(包含 TiUP 离线组件包)。
方式二:使用 tiup mirror clone
命令手动打包离线组件包。步骤如下:
在在线环境中安装 TiUP 包管理器工具
执行如下命令安装 TiUP 工具:
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
重新声明全局环境变量:
source .bash_profile
确认 TiUP 工具是否安装:
which tiup
使用 TiUP 制作离线镜像
在一台和外网相通的机器上拉取需要的组件:
tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64
该命令会在当前目录下创建一个名叫
tidb-community-server-${version}-linux-amd64
的目录,里面包含 TiUP 管理的组件包。通过 tar 命令将该组件包打包然后发送到隔离环境的中控机:
tar czvf tidb-community-server-${version}-linux-amd64.tar.gz tidb-community-server-${version}-linux-amd64
此时,
tidb-community-server-${version}-linux-amd64.tar.gz
就是一个独立的离线环境包。
自定义制作的离线镜像,或调整已有离线镜像中的内容
如果从官网下载的离线镜像不满足你的具体需求,或者希望对已有的离线镜像内容进行调整,例如增加某个组件的新版本等,可以采取以下步骤进行操作:
在制作离线镜像时,可通过参数指定具体的组件和版本等信息,获得不完整的离线镜像。例如,要制作一个只包括 v1.7.0 版本 TiUP 和 TiUP Cluster 的离线镜像,可执行如下命令:
tiup mirror clone tiup-custom-mirror-v1.7.0 --tiup v1.7.0 --cluster v1.7.0
如果只需要某一特定平台的组件,也可以通过
--os
和--arch
参数来指定。参考上文“使用 TiUP 制作离线镜像”第 2 步的方式,将此不完整的离线镜像传输到隔离环境的中控机。
在隔离环境的中控机上,查看当前使用的离线镜像路径。较新版本的 TiUP 可以直接通过命令获取当前的镜像地址:
tiup mirror show
以上命令如果提示
show
命令不存在,可能当前使用的是较老版本的 TiUP。此时可以通过查看$HOME/.tiup/tiup.toml
获得正在使用的镜像地址。将此镜像地址记录下来,后续步骤中将以变量${base_mirror}
指代此镜像地址。将不完整的离线镜像合并到已有的离线镜像中:
首先将当前离线镜像中的
keys
目录复制到$HOME/.tiup
目录中:cp -r ${base_mirror}/keys $HOME/.tiup/
然后使用 TiUP 命令将不完整的离线镜像合并到当前使用的镜像中:
tiup mirror merge tiup-custom-mirror-v1.7.0
上述步骤完成后,通过
tiup list
命令检查执行结果。在本文例子中,使用tiup list tiup
和tiup list cluster
均应能看到对应组件的v1.7.0
版本出现在结果中。
部署离线环境 TiUP 组件
将离线包发送到目标集群的中控机后,执行以下命令安装 TiUP 组件:
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
local_install.sh
脚本会自动执行 tiup mirror set tidb-community-server-${version}-linux-amd64
命令将当前镜像地址设置为 tidb-community-server-${version}-linux-amd64
。
若需将 server 和 toolkit 两个离线镜像合并,执行以下命令合并离线组件到 server 目录下。
tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
cd tidb-community-server-${version}-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
若需将镜像切换到其他目录,可以通过手动执行 tiup mirror set <mirror-dir>
进行切换。如果需要切换到在线环境,可执行 tiup mirror set https://tiup-mirrors.pingcap.com
。
第 3 步:初始化集群拓扑文件
请根据不同的集群拓扑,编辑 TiUP 所需的集群初始化配置文件。
集群初始化配置文件可以通过 TiUP 工具在中控机上面创建 YAML 格式配置文件,例如 topology.yaml
:
tiup cluster template > topology.yaml
混合部署场景也可以使用 tiup cluster template --full > topology.yaml
生成的建议拓扑模板,跨机房部署场景可以使用 tiup cluster template --multi-dc > topology.yaml
生成的建议拓扑模板。
执行 vi topology.yaml
,查看配置文件的内容:
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb-deploy"
data_dir: "/tidb-data"
server_configs: {}
pd_servers:
- host: 10.0.1.4
- host: 10.0.1.5
- host: 10.0.1.6
tidb_servers:
- host: 10.0.1.7
- host: 10.0.1.8
- host: 10.0.1.9
tikv_servers:
- host: 10.0.1.1
- host: 10.0.1.2
- host: 10.0.1.3
monitoring_servers:
- host: 10.0.1.4
grafana_servers:
- host: 10.0.1.4
alertmanager_servers:
- host: 10.0.1.4
这里举出常见的几种场景,请根据链接中的拓扑说明,以及给出的配置文件模板,修改配置文件 topology.yaml
。如果有其他组合场景的需求,请根据标准模板自行调整。
最基本的集群拓扑,包括 tidb-server、tikv-server、pd-server,适合 OLTP 业务。
包含最小拓扑的基础上,同时部署 TiFlash。TiFlash 是列式的存储引擎,已经逐步成为集群拓扑的标配。适合 Real-Time HTAP 业务。
包含最小拓扑的基础上,同时部署 TiCDC。TiCDC 是 4.0 版本开始支持的 TiDB 增量数据同步工具,支持多种下游 (TiDB/MySQL/MQ)。相比于 TiDB Binlog,TiCDC 有延迟更低、天然高可用等优点。在部署完成后,需要启动 TiCDC,通过
cdc cli
创建同步任务。包含最小拓扑的基础上,同时部署 TiDB Binlog。TiDB Binlog 是目前广泛使用的增量同步组件,可提供准实时备份和同步功能。
包含最小拓扑的基础上,同时部署 TiSpark 组件。TiSpark 是 PingCAP 为解决用户复杂 OLAP 需求而推出的产品。TiUP cluster 组件对 TiSpark 的支持目前为实验性特性。
适用于单台机器,混合部署多个实例的情况,也包括单机多实例,需要额外增加目录、端口、资源配比、label 等配置。
以典型的
两地三中心
架构为例,介绍跨机房部署架构,以及需要注意的关键设置。
对于需要全局生效的参数,请在配置文件中
server_configs
的对应组件下配置。对于需要某个节点生效的参数,请在具体节点的
config
中配置。配置的层次结构使用
.
表示。如:log.slow-threshold
。更多格式参考 TiUP 配置参数模版。更多参数说明,请参考 TiDB
config.toml.example
、TiKVconfig.toml.example
、PDconfig.toml.example
和 TiFlash 配置参数。
第 4 步:执行部署命令
通过 TiUP 进行集群部署可以使用密钥或者交互密码方式来进行安全认证:
- 如果是密钥方式,可以通过
-i
或者--identity_file
来指定密钥的路径; - 如果是密码方式,可以通过
-p
进入密码交互窗口; - 如果已经配置免密登录目标机,则不需填写认证。
一般情况下 TiUP 会在目标机器上创建 topology.yaml
中约定的用户和组,以下情况例外:
topology.yaml
中设置的用户名在目标机器上已存在。- 在命令行上使用了参数
--skip-create-user
明确指定跳过创建用户的步骤。
执行 deploy 命令前,先使用 check
及 check --apply
命令,检查和自动修复集群存在的潜在风险:
tiup cluster check ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
tiup cluster check ./topology.yaml --apply --user root [-p] [-i /home/root/.ssh/gcp_rsa]
然后执行 deploy
命令部署 TiDB 集群:
tiup cluster deploy tidb-test v5.3.1 ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
以上部署命令中:
- 通过 TiUP cluster 部署的集群名称为
tidb-test
- 可以通过执行
tiup list tidb
来查看 TiUP 支持的最新可用版本,后续内容以版本v5.3.1
为例 - 初始化配置文件为
topology.yaml
- --user root:通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。
- [-i] 及 [-p]:非必选项,如果已经配置免密登录目标机,则不需填写。否则选择其一即可,[-i] 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码
- 如果需要指定在目标机创建的用户组名,可以参考这个例子。
预期日志结尾输出会有 Deployed cluster `tidb-test` successfully
关键词,表示部署成功。
第 5 步:查看 TiUP 管理的集群情况
tiup cluster list
TiUP 支持管理多个 TiDB 集群,该命令会输出当前通过 TiUP cluster 管理的所有集群信息,包括集群名称、部署用户、版本、密钥信息等:
Starting /home/tidb/.tiup/components/cluster/v1.7.0/cluster list
Name User Version Path PrivateKey
---- ---- ------- ---- ----------
tidb-test tidb v5.3.1 /home/tidb/.tiup/storage/cluster/clusters/tidb-test /home/tidb/.tiup/storage/cluster/clusters/tidb-test/ssh/id_rsa
第 6 步:检查部署的 TiDB 集群情况
例如,执行如下命令检查 tidb-test
集群情况:
tiup cluster display tidb-test
预期输出包括 tidb-test
集群中实例 ID、角色、主机、监听端口和状态(由于还未启动,所以状态为 Down/inactive)、目录信息。
第 7 步:启动集群
tiup cluster start tidb-test
预期结果输出 Started cluster `tidb-test` successfully
标志启动成功。
第 8 步:验证集群运行状态
操作步骤见验证集群运行状态。
探索更多
如果你已同时部署了 TiFlash,接下来可参阅以下文档:
如果你已同时部署了 TiCDC,接下来可参阅以下文档: