- 文档中心
- 关于 TiDB
- 快速上手
- 应用开发
- 概览
- 快速开始
- 示例程序
- 连接到 TiDB
- 数据库模式设计
- 数据写入
- 数据读取
- 事务
- 优化 SQL 性能
- 故障诊断
- 引用文档
- 云原生开发环境
- 第三方软件支持
- 部署标准集群
- 数据迁移
- 数据集成
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 优化手册
- 配置调优
- SQL 性能调优
- SQL 性能调优概览
- 理解 TiDB 执行计划
- SQL 优化流程
- 控制执行计划
- 教程
- 同城多中心部署
- 两地三中心部署
- 同城两中心部署
- 读取历史数据
- 使用 Stale Read 功能读取历史数据(推荐)
- 使用系统变量
tidb_snapshot
读取历史数据
- 最佳实践
- Placement Rules 使用文档
- Load Base Split 使用文档
- Store Limit 使用文档
- TiDB 工具
- 功能概览
- 适用场景
- 工具下载
- TiUP
- 文档地图
- 概览
- 术语及核心概念
- TiUP 组件管理
- FAQ
- 故障排查
- TiUP 命令参考手册
- 命令概览
- TiUP 命令
- TiUP Cluster 命令
- TiUP Cluster 命令概览
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUP DM 命令
- TiUP DM 命令概览
- tiup dm audit
- tiup dm deploy
- tiup dm destroy
- tiup dm disable
- tiup dm display
- tiup dm edit-config
- tiup dm enable
- tiup dm help
- tiup dm import
- tiup dm list
- tiup dm patch
- tiup dm prune
- tiup dm reload
- tiup dm replay
- tiup dm restart
- tiup dm scale-in
- tiup dm scale-out
- tiup dm start
- tiup dm stop
- tiup dm template
- tiup dm upgrade
- TiDB 集群拓扑文件配置
- DM 集群拓扑文件配置
- TiUP 镜像参考指南
- TiUP 组件文档
- PingCAP Clinic 诊断服务
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB Data Migration
- 关于 Data Migration
- 架构简介
- 快速开始
- 部署 DM 集群
- 入门指南
- 进阶教程
- 运维管理
- 参考手册
- 使用示例
- 异常解决
- 版本发布历史
- Backup & Restore (BR)
- TiDB Binlog
- TiCDC
- TiUniManager
- 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 TABLE COMPACT
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
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
RENAME USER
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 模式
- 表属性
- 事务
- 视图
- 分区表
- 临时表
- 缓存表
- 字符集和排序
- 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_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_HOT_REGIONS_HISTORY
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 运维 DM 集群
本文介绍如何使用 TiUP 的 DM 组件运维 DM 集群。
如果你还未部署 DM 集群,可参考使用 TiUP 部署 DM 集群。
需要确保以下组件间端口可正常连通:
各 DM-master 节点间的
peer_port
(默认为8291
)可互相连通。各 DM-master 节点可连通所有 DM-worker 节点的
port
(默认为8262
)。各 DM-worker 节点可连通所有 DM-master 节点的
port
(默认为8261
)。TiUP 节点可连通所有 DM-master 节点的
port
(默认为8261
)。TiUP 节点可连通所有 DM-worker 节点的
port
(默认为8262
)。
TiUP DM 组件的帮助信息如下:
tiup dm --help
Deploy a DM cluster for production
Usage:
tiup dm [flags]
tiup dm [command]
Available Commands:
deploy Deploy a DM cluster for production
start Start a DM cluster
stop Stop a DM cluster
restart Restart a DM cluster
list List all clusters
destroy Destroy a specified DM cluster
audit Show audit log of cluster operation
exec Run shell command on host in the dm cluster
edit-config Edit DM cluster config
display Display information of a DM cluster
reload Reload a DM cluster's config and restart if needed
upgrade Upgrade a specified DM cluster
patch Replace the remote package with a specified package and restart the service
scale-out Scale out a DM cluster
scale-in Scale in a DM cluster
import Import an exist DM 1.0 cluster from dm-ansible and re-deploy 2.0 version
help Help about any command
Flags:
-h, --help help for tiup-dm
--native-ssh Use the native SSH client installed on local system instead of the build-in one.
--ssh-timeout int Timeout in seconds to connect host via SSH, ignored for operations that don't need an SSH connection. (default 5)
-v, --version version for tiup-dm
--wait-timeout int Timeout in seconds to wait for an operation to complete, ignored for operations that don't fit. (default 60)
-y, --yes Skip all confirmations and assumes 'yes'
查看集群列表
集群部署成功后,可以通过 tiup dm list
命令在集群列表中查看该集群:
tiup dm list
Name User Version Path PrivateKey
---- ---- ------- ---- ----------
prod-cluster tidb ${version} /root/.tiup/storage/dm/clusters/test /root/.tiup/storage/dm/clusters/test/ssh/id_rsa
启动集群
集群部署成功后,可以执行以下命令启动该集群。如果忘记了部署的集群名字,可以使用 tiup dm list
命令查看。
tiup dm start prod-cluster
检查集群状态
如果想查看集群中每个组件的运行状态,逐一登录到各个机器上查看显然很低效。因此,TiUP 提供了 tiup dm display
命令,用法如下:
tiup dm display prod-cluster
dm Cluster: prod-cluster
dm Version: ${version}
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
172.19.0.101:9093 alertmanager 172.19.0.101 9093/9094 linux/x86_64 Up /home/tidb/data/alertmanager-9093 /home/tidb/deploy/alertmanager-9093
172.19.0.101:8261 dm-master 172.19.0.101 8261/8291 linux/x86_64 Healthy|L /home/tidb/data/dm-master-8261 /home/tidb/deploy/dm-master-8261
172.19.0.102:8261 dm-master 172.19.0.102 8261/8291 linux/x86_64 Healthy /home/tidb/data/dm-master-8261 /home/tidb/deploy/dm-master-8261
172.19.0.103:8261 dm-master 172.19.0.103 8261/8291 linux/x86_64 Healthy /home/tidb/data/dm-master-8261 /home/tidb/deploy/dm-master-8261
172.19.0.101:8262 dm-worker 172.19.0.101 8262 linux/x86_64 Free /home/tidb/data/dm-worker-8262 /home/tidb/deploy/dm-worker-8262
172.19.0.102:8262 dm-worker 172.19.0.102 8262 linux/x86_64 Free /home/tidb/data/dm-worker-8262 /home/tidb/deploy/dm-worker-8262
172.19.0.103:8262 dm-worker 172.19.0.103 8262 linux/x86_64 Free /home/tidb/data/dm-worker-8262 /home/tidb/deploy/dm-worker-8262
172.19.0.101:3000 grafana 172.19.0.101 3000 linux/x86_64 Up - /home/tidb/deploy/grafana-3000
172.19.0.101:9090 prometheus 172.19.0.101 9090 linux/x86_64 Up /home/tidb/data/prometheus-9090 /home/tidb/deploy/prometheus-9090
Status 列用 Up
或者 Down
表示该服务是否正常。对于 DM-master 组件,同时可能会带有 |L
表示该 DM-master 是 Leader, 对于 DM-worker 组件,Free 表示当前 DM-worker 没有与上游绑定。
缩容节点
缩容即下线服务,最终会将指定的节点从集群中移除,并删除遗留的相关数据文件。
缩容操作进行时,内部对 DM-master、DM-worker 组件的操作流程为:
- 停止组件进程
- 调用 DM-master 删除 member 的 API
- 清除节点的相关数据文件
缩容命令的基本用法:
tiup dm scale-in <cluster-name> -N <node-id>
它需要指定至少两个参数,一个是集群名字,另一个是节点 ID。节点 ID 可以参考上一节使用 tiup dm display
命令获取。
比如想缩容 172.16.5.140 上的 DM-worker 节点(DM-master 的缩容类似),可以执行:
tiup dm scale-in prod-cluster -N 172.16.5.140:8262
扩容节点
扩容的内部逻辑与部署类似,TiUP DM 组件会先保证节点的 SSH 连接,在目标节点上创建必要的目录,然后执行部署并且启动服务。
例如,在集群 prod-cluster
中扩容一个 DM-worker 节点(DM-master 的扩容类似):
新建 scale.yaml 文件,添加新增的 woker 节点信息:
注意需要新建一个拓扑文件,文件中只写入扩容节点的描述信息,不要包含已存在的节点。
其他更多配置项(如:部署目录等)请参考 TiUP 配置参数模版。
--- worker_servers: - host: 172.16.5.140
执行扩容操作。TiUP DM 根据 scale.yaml 文件中声明的端口、目录等信息在集群中添加相应的节点:
tiup dm scale-out prod-cluster scale.yaml
执行完成之后可以通过
tiup dm display prod-cluster
命令检查扩容后的集群状态。
滚动升级
从 v2.0.5 版本开始,dmctl 支持导出和导入集群的数据源和任务配置。
升级前,可使用 config export
命令导出集群的配置文件,升级后如需降级回退到旧版本,可重建旧集群后,使用 config import
导入之前的配置。
对于 v2.0.5 之前版本的集群,可使用 v2.0.5 及之后版本的 dmctl 导出和导入集群配置。
对于 v2.0.2 之后的版本,导入集群配置时暂不支持自动恢复 relay worker 相关配置,可手动执行 start-relay
命令开启 relay log。
滚动升级过程中尽量保证对前端业务透明、无感知,其中对不同节点有不同的操作。
升级操作
可使用 tiup dm upgrade
命令来升级集群。例如,以下示例将集群升级到 ${version}
,执行命令前,将 ${version}
替换为实际需要的版本:
tiup dm upgrade prod-cluster `${version}`
更新配置
如果想要动态更新组件的配置,TiUP DM 组件为每个集群保存了一份当前的配置,如果想要编辑这份配置,则执行 tiup dm edit-config <cluster-name>
命令。例如:
tiup dm edit-config prod-cluster
然后 TiUP DM 组件会使用 vi 打开配置文件供编辑(如果你想要使用其他编辑器,请使用 EDITOR
环境变量自定义编辑器,例如 export EDITOR=nano
),编辑完之后保存即可。此时的配置并没有应用到集群,如果想要让它生效,还需要执行:
tiup dm reload prod-cluster
该操作会将配置发送到目标机器,滚动重启集群,使配置生效。
更新组件
常规的升级集群可以使用 upgrade
命令,但是在某些场景下(例如 Debug),可能需要用一个临时的包替换正在运行的组件,此时可以用 patch
命令:
tiup dm patch --help
Replace the remote package with a specified package and restart the service
Usage:
tiup dm patch <cluster-name> <package-path> [flags]
Flags:
-h, --help help for patch
-N, --node strings Specify the nodes
--overwrite Use this package in the future scale-out operations
-R, --role strings Specify the role
--transfer-timeout int Timeout in seconds when transferring dm-master leaders (default 300)
Global Flags:
--native-ssh Use the native SSH client installed on local system instead of the build-in one.
--ssh-timeout int Timeout in seconds to connect host via SSH, ignored for operations that don't need an SSH connection. (default 5)
--wait-timeout int Timeout in seconds to wait for an operation to complete, ignored for operations that don't fit. (default 60)
-y, --yes Skip all confirmations and assumes 'yes'
例如,有一个 DM-master 的 hotfix 包放在 /tmp/dm-master-hotfix.tar.gz
,如果此时想要替换集群上的所有 DM-master,则可以执行:
tiup dm patch prod-cluster /tmp/dm-master-hotfix.tar.gz -R dm-master
或者只替换其中一个 DM-master:
tiup dm patch prod-cluster /tmp/dm--hotfix.tar.gz -N 172.16.4.5:8261
导入和升级由 DM-Ansible 部署的 DM 1.0 集群
- TiUP 不支持在 DM 1.0 集群中导入 DM Portal 组件。
- 导入 DM 集群前,终止运行待导入的集群。
- 如果需要将迁移任务升级至 2.0,不可对该任务执行
stop-run
命令。 - TiUP 仅支持导入数据到 v2.0.0-rc.2 或以上版本的 DM 集群。
import
命令用于将数据从 DM 1.0 集群导入到一个新的 DM 2.0 集群。如果你需要将 DM 迁移任务导入一个现有的 DM 2.0 集群,可以参考 TiDB Data Migration 1.0.x 到 2.0+ 手动升级。- 导入集群某些组件的部署目录与原始集群的部署目录不同,可以执行
display
命令来查看相关信息。 - 导入前,执行
tiup update --self && tiup update dm
,以确保 DM 组件是最新版本。 - 导入后,集群中只存在一个 DM-master 节点。请参考 扩容节点 来扩展 DM-master。
引入 TiUP 前,DM-Ansible 用于部署 DM 集群。要使 TiUP 接管由 DM-Ansible 部署的 DM 1.0 集群,需要执行 import
命令:
例如,以下命令可导入使用 DM-Ansible 部署的集群:
tiup dm import --dir=/path/to/dm-ansible --cluster-version ${version}
可以执行 tiup list dm-master
来查看 TiUP 支持的最新集群版本。
import
命令的执行过程如下:
- 根据之前使用 DM-Ansible 部署的 DM 集群,TiUP 生成一个拓扑文件
topology.yml
。 - 确认拓扑文件生成后,你可以用这个文件来部署 v2.0 或更高版本的 DM 集群。
部署完成后,执行 tiup dm start
命令来启动集群和开始 DM 内核升级流程。
查看操作日志
操作日志的查看可以借助 audit
命令,其用法如下:
Usage:
tiup dm audit [audit-id] [flags]
Flags:
-h, --help help for audit
在不使用 [audit-id]
参数时,该命令会显示执行的命令列表,如下:
tiup dm audit
ID Time Command
-- ---- -------
4D5kQY 2020-08-13T05:38:19Z tiup dm display test
4D5kNv 2020-08-13T05:36:13Z tiup dm list
4D5kNr 2020-08-13T05:36:10Z tiup dm deploy -p prod-cluster ${version} ./examples/dm/minimal.yaml
第一列为 audit-id,如果想看某个命令的执行日志,则传入这个 audit-id:
tiup dm audit 4D5kQY
在集群节点机器上执行命令
exec
命令可以很方便地到集群的机器上执行命令,使用方式如下:
Usage:
tiup dm exec <cluster-name> [flags]
Flags:
--command string the command run on cluster host (default "ls")
-h, --help help for exec
-N, --node strings Only exec on host with specified nodes
-R, --role strings Only exec on host with specified roles
--sudo use root permissions (default false)
例如,如果要到所有的 DM 节点上执行 ls /tmp
,则可以执行:
tiup dm exec prod-cluster --command='ls /tmp'
集群控制工具 (dmctl)
TiUP 集成了 DM 的控制工具 dmctl
:
运行命令如下:
tiup dmctl [args]
指定 dmctl 版本。执行如下命令前,将 ${version} 修改为实际需要的版本。
tiup dmctl: ${version} [args]
例如,以前添加 source 命令为 dmctl --master-addr master1:8261 operate-source create /tmp/source1.yml
,集成到 TiUP 中的命令为:
tiup dmctl --master-addr master1:8261 operate-source create /tmp/source1.yml
使用中控机系统自带的 SSH 客户端连接集群
在以上所有操作中,涉及到对集群机器的操作都是通过 TiUP 内置的 SSH 客户端连接集群执行命令,但是在某些场景下,需要使用系统自带的 SSH 客户端来对集群执行操作,比如:
- 使用 SSH 插件来做认证
- 使用定制的 SSH 客户端
此时可以通过命令行参数 --native-ssh
启用系统自带命令行:
- 部署集群:
tiup dm deploy <cluster-name> <version> <topo> --native-ssh
- 启动集群:
tiup dm start <cluster-name> --native-ssh
- 升级集群:
tiup dm upgrade ... --native-ssh
所有涉及集群操作的步骤都可以加上 --native-ssh
来使用系统自带的客户端。
也可以使用环境变量 TIUP_NATIVE_SSH
来指定是否使用本地 SSH 客户端,避免每个命令都需要添加 --native-ssh
参数:
export TIUP_NATIVE_SSH=true
# 或者
export TIUP_NATIVE_SSH=1
# 或者
export TIUP_NATIVE_SSH=enable
若环境变量和 --native-ssh
同时指定,则以 --native-ssh
为准。
在部署集群的步骤中,若需要使用密码的方式连接 (-p),或者密钥文件设置了 passphrase,则需要保证中控机上安装了 sshpass,否则连接时会报错。