Skip to content

TiDB 系统工具指南

TiDB 提供了丰富的系统工具,用于集群管理、监控诊断、数据管理等方面,帮助用户更高效地管理和维护 TiDB 集群。

集群管理工具

1. TiUP

TiUP 是 TiDB 官方提供的集群部署和管理工具,用于简化 TiDB 集群的部署、升级、扩容、缩容等操作。

安装与配置

bash
# 安装 TiUP
bash <(curl -s https://tiup-mirrors.pingcap.com/install.sh)

# 查看 TiUP 版本
tiup --version

# 查看 TiUP 组件
tiup list

常用命令

bash
# 安装集群管理组件
tiup install cluster

# 部署集群
tiup cluster deploy <cluster-name> <version> ./topology.yaml --user root -p

# 查看集群列表
tiup cluster list

# 查看集群状态
tiup cluster display <cluster-name>

# 启动集群
tiup cluster start <cluster-name>

# 停止集群
tiup cluster stop <cluster-name>

# 重启集群
tiup cluster restart <cluster-name>

# 升级集群
tiup cluster upgrade <cluster-name> <new-version>

# 扩容集群
tiup cluster scale-out <cluster-name> ./scale-out.yaml

# 缩容集群
tiup cluster scale-in <cluster-name> --node <node-id>

# 滚动更新配置
tiup cluster reload <cluster-name> [-N <nodes>] [-R <roles>]

# 查看集群日志
tiup cluster logs <cluster-name> [-N <nodes>] [-R <roles>] [-f]

2. tiup bench

tiup bench 是 TiUP 提供的基准测试工具,用于测试 TiDB 集群的性能。

常用命令

bash
# YCSB 基准测试
tiup bench ycsb run --db tidb --threads 100 --workload a --time 300s --db.config ./tidb.yaml

# Sysbench 基准测试
tiup bench sysbench --host <tidb-host> --port 4000 --user root --password '' --db test --tables 10 --table-size 1000000 --threads 100 --time 300s oltp_read_write run

3. tiup ctl

tiup ctl 是 TiUP 提供的控制工具,用于访问 TiDB、TiKV、PD 等组件的控制接口。

常用命令

bash
# 访问 PD 控制接口
tiup ctl pd -u http://<pd-host>:2379 cluster
tiup ctl pd -u http://<pd-host>:2379 store
tiup ctl pd -u http://<pd-host>:2379 member

# 访问 TiKV 控制接口
tiup ctl tikv --host <tikv-host>:20160 status
tiup ctl tikv --host <tikv-host>:20160 raft status

# 访问 TiDB 控制接口
tiup ctl tidb --host <tidb-host> --port 10080 status

监控诊断工具

1. Prometheus & Grafana

Prometheus 用于监控数据收集和存储,Grafana 用于监控数据可视化。TiDB 提供了预配置的 Grafana 面板,用于监控 TiDB 集群的各项指标。

部署与配置

bash
# 使用 TiUP 部署监控组件
tiup cluster deploy <cluster-name> <version> ./topology.yaml --user root -p

# 访问 Grafana 界面
# 默认地址:http://<grafana-host>:3000
# 默认用户名/密码:admin/admin

关键监控指标

  • TiDB 监控指标:查询延迟、QPS/TPS、连接数、事务重试等
  • TiKV 监控指标:CPU 使用率、内存使用率、IOPS、Region 数量等
  • PD 监控指标:集群状态、Leader 状态、调度操作数、热点 Region 数等

2. TiDB Dashboard

TiDB Dashboard 是一个 Web 界面的集群管理和监控工具,提供了集群概览、慢查询分析、热点分析、SQL 语句分析等功能。

访问方式

bash
# 访问 TiDB Dashboard
# 默认地址:http://<tidb-host>:2379/dashboard
# 或通过 PD 地址访问:http://<pd-host>:2379/dashboard

主要功能

  • 集群概览:显示集群的整体状态和关键指标
  • 慢查询分析:分析和展示慢查询语句
  • 热点分析:分析和展示热点 Region
  • SQL 语句分析:分析 SQL 语句的执行计划和性能
  • 集群诊断:收集和分析集群诊断信息
  • 用户会话管理:查看和管理用户会话

3. pd-ctl

pd-ctl 是 PD 集群的管理和诊断工具,用于查看和管理 PD 集群的状态、配置、调度等。

常用命令

bash
# 查看集群状态
pd-ctl cluster

# 查看存储状态
pd-ctl store

# 查看成员信息
pd-ctl member

# 查看热点 Region
pd-ctl hot read
pd-ctl hot write

# 查看调度状态
pd-ctl config show scheduler

# 开启/关闭调度器
pd-ctl scheduler add <scheduler-name>
pd-ctl scheduler remove <scheduler-name>

# 查看 Region 信息
pd-ctl region <region-id>
pd-ctl region key <key>

4. tikv-ctl

tikv-ctl 是 TiKV 集群的管理和诊断工具,用于查看和管理 TiKV 集群的状态、Raft 状态、数据等。

常用命令

bash
# 查看 TiKV 状态
tikv-ctl --host <tikv-host>:20160 status

# 查看 Raft 状态
tikv-ctl --host <tikv-host>:20160 raft status

# 查看日志
tikv-ctl --host <tikv-host>:20160 log

# 查看线程信息
tikv-ctl --host <tikv-host>:20160 threads

# 查看内存使用
tikv-ctl --host <tikv-host>:20160 memory

数据管理工具

1. BR (Backup & Restore)

BR 是 TiDB 集群的备份和恢复工具,用于全量备份、增量备份和时间点恢复。

常用命令

bash
# 全量备份到本地
tiup br backup full --pd <pd-host>:<pd-port> --storage local:///path/to/backup

# 全量备份到 S3
tiup br backup full --pd <pd-host>:<pd-port> --storage s3://bucket/backup --s3.endpoint https://s3.amazonaws.com

# 增量备份
tiup br backup inc --pd <pd-host>:<pd-port> --storage local:///path/to/backup --lastbackupts <last-backup-ts>

# 全量恢复
tiup br restore full --pd <pd-host>:<pd-port> --storage local:///path/to/backup

# 时间点恢复
tiup br restore point --pd <pd-host>:<pd-port> --storage local:///path/to/backup --restored-ts <timestamp>

2. Dumpling

Dumpling 是用于从 TiDB/MySQL 导出数据的工具,支持多种输出格式和并行导出。

常用命令

bash
# 导出全量数据
tiup dumpling -h <tidb-host> -P 4000 -u root -o /path/to/backup

# 导出指定数据库
tiup dumpling -h <tidb-host> -P 4000 -u root -B <db-name> -o /path/to/backup

# 导出指定表
tiup dumpling -h <tidb-host> -P 4000 -u root -B <db-name> -T <table1>,<table2> -o /path/to/backup

# 按时间点导出
tiup dumpling -h <tidb-host> -P 4000 -u root --time <timestamp> -o /path/to/backup

# 压缩导出
tiup dumpling -h <tidb-host> -P 4000 -u root -o /path/to/backup --compress gzip

3. TiDB Lightning

TiDB Lightning 是用于向 TiDB 导入大规模数据的工具,支持多种数据源和导入模式。

常用命令

bash
# 使用配置文件导入
tiup tidb-lightning -config tidb-lightning.toml

# 配置文件示例
tidb-lightning.toml
[lightning]
level = "info"
table-concurrency = 16
index-concurrency = 16

[tidb]
host = "<tidb-host>"
port = 4000
user = "root"
password = ""
db-name = "test_db"

[mydumper]
data-source-dir = "/path/to/backup"

[tikv-importer]
backend = "local"
sorted-kv-dir = "/path/to/sorted-kv-dir"

4. DM (Data Migration)

DM 是用于从 MySQL/PostgreSQL 迁移数据到 TiDB 的工具,支持全量迁移和增量迁移,支持分库分表合并。

常用命令

bash
# 启动 DM 集群
tiup dm deploy <dm-cluster-name> <version> ./dm-topology.yaml --user root -p
tiup dm start <dm-cluster-name>

# 创建数据源
tiup dmctl --master-addr <dm-master-host>:8261 operate-source create ./source.yaml

# 创建迁移任务
tiup dmctl --master-addr <dm-master-host>:8261 start-task ./task.yaml

# 查看任务状态
tiup dmctl --master-addr <dm-master-host>:8261 query-status <task-name>

5. TiCDC

TiCDC 是用于 TiDB 集群之间的实时数据同步工具,支持多种下游,包括 TiDB、MySQL、Kafka 等。

常用命令

bash
# 部署 TiCDC 集群
tiup cluster deploy <cluster-name> <version> ./topology.yaml --user root -p

# 创建同步任务
tiup ctl cdc changefeed create --pd <pd-host>:2379 --sink-uri="mysql://root:password@<mysql-host>:3306/" --changefeed-id="simple-replication-task"

# 查看同步任务状态
tiup ctl cdc changefeed list --pd <pd-host>:2379
tiup ctl cdc changefeed query --pd <pd-host>:2379 --changefeed-id="simple-replication-task"

开发调试工具

1. sync-diff-inspector

sync-diff-inspector 是用于检查 TiDB/MySQL 之间数据一致性的工具,支持全量数据对比和抽样对比。

常用命令

bash
# 使用配置文件检查数据一致性
sync-diff-inspector -config sync-diff-inspector.toml

# 配置文件示例
sync-diff-inspector.toml
[
  [source-db]
    host = "<source-host>"
    port = 3306
    user = "root"
    password = ""
    snapshot = "2024-01-01 00:00:00"

  [target-db]
    host = "<target-host>"
    port = 4000
    user = "root"
    password = ""

  [[check-tables]]
    schema = "test_db"
    tables = ["test_table1", "test_table2"]

2. go-ycsb

go-ycsb 是用于 YCSB 基准测试的工具,用于测试 TiDB 集群的性能。

常用命令

bash
# 运行 YCSB 测试
go-ycsb run tidb -P workloads/workloada -p "tidb.host=<tidb-host>" -p "tidb.port=4000" -p "tidb.user=root" -p "tidb.password=''" -p "tidb.db=test" -p "threadcount=100" -p "operationcount=1000000"

3. sysbench-tidb

sysbench-tidb 是用于 Sysbench 基准测试的工具,用于测试 TiDB 集群的性能。

常用命令

bash
# 准备测试数据
sysbench --db-driver=mysql --mysql-host=<tidb-host> --mysql-port=4000 --mysql-user=root --mysql-password='' --mysql-db=test --tables=10 --table-size=1000000 oltp_read_write prepare

# 运行测试
sysbench --db-driver=mysql --mysql-host=<tidb-host> --mysql-port=4000 --mysql-user=root --mysql-password='' --mysql-db=test --tables=10 --table-size=1000000 --threads=100 --time=300 oltp_read_write run

# 清理测试数据
sysbench --db-driver=mysql --mysql-host=<tidb-host> --mysql-port=4000 --mysql-user=root --mysql-password='' --mysql-db=test --tables=10 --table-size=1000000 oltp_read_write cleanup

工具使用最佳实践

1. 工具版本管理

  • 保持工具版本与集群版本一致:确保使用的工具版本与 TiDB 集群版本匹配
  • 定期更新工具:定期更新工具到最新版本,享受性能改进和 bug 修复
  • 使用 TiUP 管理工具版本:使用 TiUP 管理工具版本,避免版本冲突

2. 工具配置优化

  • 根据实际情况调整配置:根据集群规模、数据量、硬件配置等调整工具配置
  • 优化并发数:根据 CPU 核心数和内存大小,优化工具的并发数
  • 优化存储配置:使用高性能存储设备,提高工具的读写性能

3. 工具使用安全

  • 限制工具访问权限:确保只有授权人员可以访问和使用工具
  • 保护敏感信息:避免在命令行中直接输入密码等敏感信息
  • 记录工具操作:记录工具的操作日志,便于审计和故障排查

4. 工具使用效率

  • 并行使用工具:在不影响系统性能的前提下,并行使用工具
  • 自动化工具使用:编写脚本自动化工具的使用,提高运维效率
  • 监控工具运行状态:监控工具的运行状态,及时发现和解决问题

常见问题与解决方案

1. 工具无法连接到集群

问题:工具无法连接到 TiDB 集群,提示连接失败。

解决方案

  • 检查集群是否正常运行
  • 检查网络连接是否正常
  • 检查端口是否开放
  • 检查用户名和密码是否正确
  • 检查防火墙规则是否允许访问

2. 工具运行速度慢

问题:工具运行速度慢,影响运维效率。

解决方案

  • 增加工具的并发数
  • 优化工具的配置参数
  • 使用更高性能的硬件设备
  • 优化网络连接
  • 减少工具的工作负载

3. 工具运行出错

问题:工具运行过程中出错,提示错误信息。

解决方案

  • 查看错误日志,定位错误原因
  • 检查工具版本与集群版本是否匹配
  • 检查配置参数是否正确
  • 检查数据源是否可用
  • 参考工具文档,查找解决方案

4. 工具输出结果不符合预期

问题:工具输出结果不符合预期,如备份数据不完整、导入数据有误等。

解决方案

  • 检查工具配置是否正确
  • 检查数据源是否完整
  • 验证输出结果的完整性和一致性
  • 重新运行工具,确保结果正确

常见问题(FAQ)

Q1: 如何选择合适的工具?

A1: 选择合适的工具应考虑以下因素:

  • 工具的功能和用途
  • 集群规模和数据量
  • 性能要求
  • 运维团队的技术栈
  • 工具的易用性和可维护性

Q2: 如何确保工具的安全性?

A2: 确保工具安全性的措施包括:

  • 限制工具的访问权限
  • 保护敏感信息,如密码、密钥等
  • 记录工具的操作日志,便于审计
  • 定期更新工具,修复安全漏洞

Q3: 如何提高工具的使用效率?

A3: 提高工具使用效率的措施包括:

  • 优化工具的配置参数
  • 并行使用工具
  • 自动化工具的使用
  • 熟悉工具的快捷键和命令行选项

Q4: 如何处理工具运行中的错误?

A4: 处理工具运行中错误的步骤:

  • 查看错误日志,定位错误原因
  • 检查工具版本与集群版本是否匹配
  • 检查配置参数是否正确
  • 参考工具文档,查找解决方案
  • 如有必要,联系工具的支持团队

Q5: 如何集成工具到运维流程中?

A5: 集成工具到运维流程的步骤:

  • 了解运维流程的需求和痛点
  • 选择合适的工具,满足流程需求
  • 编写脚本自动化工具的使用
  • 测试工具的集成效果
  • 培训团队成员使用集成后的工具