Skip to content

TiDB 常用命令参考

集群管理命令

TiUP 命令

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

集群部署

bash
# 查看 TiUP 版本,确认 TiUP 是否正确安装
tiup --version

# 安装 TiUP 集群管理组件,用于后续的集群部署和管理
tiup install cluster

# 生成集群拓扑模板文件,用于编辑集群配置
tiup cluster template > topology.yaml

# 部署 TiDB 集群,指定集群名称、版本和拓扑文件
tiup cluster deploy cluster-name <version> ./topology.yaml --user root -p

# 查看所有已部署的 TiDB 集群列表
tiup cluster list

# 检查指定集群的详细状态,包括节点运行情况、版本信息等
tiup cluster display cluster-name

# 启动指定的 TiDB 集群
tiup cluster start cluster-name

# 停止指定的 TiDB 集群
tiup cluster stop cluster-name

# 重启指定的 TiDB 集群
tiup cluster restart cluster-name

# 升级指定 TiDB 集群到新版本
tiup cluster upgrade cluster-name <new-version>

# 扩容 TiDB 集群,添加新节点
tiup cluster scale-out cluster-name ./scale-out.yaml

# 缩容 TiDB 集群,移除指定节点
tiup cluster scale-in cluster-name --node <node-id>

# 滚动更新集群配置,支持指定节点或角色
tiup cluster reload cluster-name [-N <nodes>] [-R <roles>]

# 销毁指定的 TiDB 集群,谨慎使用
tiup cluster destroy cluster-name

集群维护

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

# 收集集群诊断信息
tiup cluster diag cluster-name [-N <nodes>] [-R <roles>]

# 检查集群配置
tiup cluster check cluster-name --apply --user root -p

# 查看集群拓扑
tiup cluster topology cluster-name

PD 命令

PD Control

bash
# 连接 PD 集群
tiup ctl pd -u http://pd-host:pd-port

# 查看 PD 成员信息
pd-ctl member

# 查看集群状态
pd-ctl cluster

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

# 开启调度器
pd-ctl scheduler add <scheduler-name>

# 关闭调度器
pd-ctl scheduler remove <scheduler-name>

# 查看热点信息
pd-ctl hot read
pd-ctl hot write

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

# 查看存储信息
pd-ctl store
pd-ctl store <store-id>

# 查看配置
pd-ctl config show

# 修改配置
pd-ctl config set key value

监控与日志命令

Prometheus 命令

bash
# 查看 Prometheus 状态
curl http://<prometheus-host>:9090/-/healthy

# 查询监控指标
curl -g "http://<prometheus-host>:9090/api/v1/query?query=<metric-name>"

# 查看告警规则
curl http://<prometheus-host>:9090/api/v1/rules

# 查看活动告警
curl http://<prometheus-host>:9090/api/v1/alerts

Grafana 命令

bash
# 重启 Grafana 服务
systemctl restart grafana-server

# 查看 Grafana 状态
systemctl status grafana-server

# 查看 Grafana 日志
tail -f /var/log/grafana/grafana.log

TiDB 日志命令

bash
# 查看 TiDB 日志
tail -f <tidb-log-path>/tidb.log

# 过滤 TiDB 错误日志
grep -i error <tidb-log-path>/tidb.log

# 过滤特定时间范围的日志
grep "2024-01-01T10:00:00" <tidb-log-path>/tidb.log

# 查看 TiKV 日志
tail -f <tikv-log-path>/tikv.log

# 查看 PD 日志
tail -f <pd-log-path>/pd.log

# 查看 TiFlash 日志
tail -f <tiflash-log-path>/tiflash.log

备份与恢复命令

BR 命令

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>/<path> --s3.endpoint <endpoint> --s3.access-key <access-key> --s3.secret-access-key <secret-key>

# 增量备份
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 db --pd pd-host:pd-port --db <db-name> --storage local:///path/to/backup

# 恢复指定表
tiup br restore table --pd pd_host:pd_port --db db_name --table table_name --storage local:///path/to/backup

# 查看备份状态
tiup br status --pd pd-host:pd-port --storage local:///path/to/backup

Dumpling 命令

bash
# 导出全量数据
tiup dumpling -h tidb-host -P 4000 -u user -p password -o /path/to/output

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

# 导出指定表
tiup dumpling -h tidb_host -P 4000 -u user -p password -B db_name -T table1,table2 -o /path/to/output

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

# 压缩导出
tiup dumpling -h tidb-host -P 4000 -u user -p password -o /path/to/output --compress gzip

TiDB Lightning 命令

bash
# 导入本地数据
tiup tidb-lightning -config tidb-lightning.toml

# tidb-lightning.toml 示例配置
tidb_host = "tidb-host"
tidb_port = 4000
tidb_user = "user"
tidb_password = "password"
tidb_dbname = "<db-name>"

[lightning]
data-source-dir = "/path/to/data"

数据操作命令

MySQL 客户端命令

bash
# 连接 TiDB 数据库
mysql -h tidb-host -P 4000 -u user -p password

# 连接 TiDB 并指定数据库
mysql -h tidb-host -P 4000 -u user -p password <db-name>

# 执行 SQL 文件
mysql -h tidb-host -P 4000 -u user -p password <db-name> < script.sql

# 导出查询结果到文件
mysql -h tidb_host -P 4000 -u user -p password -e "SELECT * FROM table_name" > result.txt

# 批量执行命令
mysql -h tidb-host -P 4000 -u user -p password << EOF
USE <db-name>;
SELECT * FROM table_name LIMIT 10;
EOF

常用 SQL 命令

sql
-- 查看数据库列表
SHOW DATABASES;

-- 切换数据库
USE <db-name>;

-- 查看表列表
SHOW TABLES;

-- 查看表结构
DESCRIBE table_name;
SHOW CREATE TABLE table_name;

-- 查看索引
SHOW INDEX FROM table_name;

-- 查看当前连接
SHOW PROCESSLIST;

-- 查看当前会话变量
SHOW VARIABLES;
SHOW VARIABLES LIKE '%<pattern>%';

-- 查看全局变量
SHOW GLOBAL VARIABLES;

-- 修改会话变量
SET variable-name = value;

-- 修改全局变量
SET GLOBAL variable-name = value;

-- 查看状态变量
SHOW STATUS;
SHOW STATUS LIKE '%<pattern>%';

-- 查看慢查询日志
SELECT * FROM mysql.slow_log LIMIT 10;

-- 分析表
ANALYZE TABLE table_name;

-- 优化表
OPTIMIZE TABLE table_name;

-- 查看事务隔离级别
SELECT @@tx_isolation;
SELECT @@global.tx_isolation;

-- 设置事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL <level>;
SET GLOBAL TRANSACTION ISOLATION LEVEL <level>;

故障排查命令

网络诊断命令

bash
# 检查网络连接
ping <host>

# 检查端口连通性
telnet <host> <port>
nc -zv <host> <port>

# 查看网络状态
netstat -tuln
ss -tuln

# 查看路由表
route -n

# 查看防火墙规则
iptables -L -n

系统诊断命令

bash
# 查看系统负载
uptime
w

# 查看 CPU 使用率
top
htop

# 查看内存使用情况
free -h

# 查看磁盘使用情况
df -h
du -sh <directory>

# 查看磁盘 I/O
iotop
iostat -x

# 查看进程信息
ps aux | grep <process-name>

# 查看进程资源使用
pmap <pid>

# 查看系统日志
tail -f /var/log/messages
tail -f /var/log/syslog

TiDB 故障排查命令

bash
# 查看 TiDB 节点状态
tiup cluster display cluster-name -N <tidb-node>

# 查看 TiKV 节点状态
tiup ctl tikv --host tikv-host:tikv-port status

# 查看 PD 节点状态
tiup ctl pd -u http://pd-host:pd-port cluster

# 查看 Region 分布
tiup ctl pd -u http://pd-host:pd-port store

# 查看热点 Region
tiup ctl pd -u http://pd-host:pd-port hot read
tiup ctl pd -u http://pd-host:pd-port hot write

# 查看 Raft 状态
tiup ctl tikv --host tikv-host:tikv-port raft status

# 检查 TiDB 配置
tiup cluster check cluster-name --config

安全命令

用户与权限管理

sql
-- 创建用户
CREATE USER '<username>'@'<host>' IDENTIFIED BY 'password';

-- 授权用户
GRANT privileges ON database_name.table_name TO 'username'@'host';

-- 刷新权限
FLUSH PRIVILEGES;

-- 查看用户权限
SHOW GRANTS FOR '<username>'@'<host>';

-- 修改用户密码
ALTER USER '<username>'@'<host>' IDENTIFIED BY '<new-password>';

-- 删除用户
DROP USER '<username>'@'<host>';

-- 创建角色
CREATE ROLE '<role-name>';

-- 授权角色
GRANT privileges ON database_name.table_name TO 'role_name';

-- 给用户授予角色
GRANT '<role-name>' TO '<username>'@'<host>';

-- 激活角色
SET DEFAULT ROLE '<role-name>' FOR '<username>'@'<host>';

TLS 配置命令

bash
# 生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

# 生成 CA 证书
openssl genrsa -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem

# 生成服务器证书请求
openssl req -newkey rsa:4096 -nodes -keyout server-key.pem -out server-req.pem

# 签名服务器证书
openssl x509 -req -in server-req.pem -days 365 -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

# 验证证书
openssl verify -CAfile ca.pem server-cert.pem

常见问题(FAQ)

Q1: 如何快速查看 TiDB 集群状态?

A1: 使用 tiup cluster display cluster-name 命令可以快速查看整个集群的状态,包括各个节点的运行状态、版本信息等。

Q2: 如何查看 TiDB 慢查询日志?

A2: 可以通过以下方式查看慢查询日志:

  1. 查看 TiDB 配置文件中的慢查询日志路径,直接查看日志文件
  2. 使用 SQL 语句查询慢查询日志表:SELECT * FROM mysql.slow_log LIMIT 10;
  3. 通过 Grafana 监控面板查看慢查询统计信息

Q3: 如何备份 TiDB 集群数据?

A3: TiDB 提供了多种备份方式:

  1. 使用 BR 工具进行物理备份:tiup br backup full --pd pd-host:pd-port --storage local:///path/to/backup
  2. 使用 Dumpling 工具进行逻辑备份:tiup dumpling -h tidb-host -P 4000 -u user -p password -o /path/to/output
  3. 使用 TiCDC 进行实时增量备份

Q4: 如何排查 TiDB 性能问题?

A4: 排查 TiDB 性能问题的常用步骤:

  1. 查看集群状态:tiup cluster display cluster-name
  2. 查看监控指标:通过 Grafana 查看 CPU、内存、磁盘 I/O 等指标
  3. 查看慢查询日志:分析慢查询语句
  4. 查看热点 Region:tiup ctl pd -u http://pd-host:pd-port hot read/write
  5. 查看系统资源使用:使用 topiostat 等命令

Q5: 如何修改 TiDB 配置参数?

A5: 修改 TiDB 配置参数的方式:

  1. 动态修改全局变量:`SET GLOBAL variable-name = value;
  2. 修改配置文件,然后使用 tiup cluster reload cluster-name 滚动更新
  3. 使用 PD Control 工具修改 PD 配置:pd-ctl config set key value
  4. 使用 tikv-ctl 工具修改 TiKV 配置:tikv-ctl --host tikv-host:tikv-port config set key value