0
0
1
0
博客/.../

# TiDB 运维指南:日常维护 SQL 与集群管理命令大全

 db唯唯  发表于  2025-10-11

本文整理了 TiDB 日常运维中常用的 SQL 语句和集群管理命令,涵盖了状态监控、慢查询分析、配置管理、锁问题排查等多个方面,可以作为 DBA 的日常运维参考手册。

一、集群状态监控

1.1 查看 TiKV 存储状态

SELECT ADDRESS, STORE_STATE_NAME, AVAILABLE, REGION_SIZE 
FROM INFORMATION_SCHEMA.TIKV_STORE_STATUS;

1.2 查看集群会话信息

SELECT instance, user, host, db, time, substr(info,1,50) as info, mem, disk 
FROM INFORMATION_SCHEMA.CLUSTER_PROCESSLIST;

1.3 查看实例配置

-- 查看所有配置
SHOW CONFIG;

-- 按类型过滤配置
SHOW CONFIG WHERE type='tidb';

1.4 查看 TiFlash 副本状态

SELECT * FROM information_schema.tiflash_replica;

二、慢查询分析

2.1 按用户分析慢查询

SELECT a.user, a.host, a.db, a.query_time, a.digest, a.plan_digest
FROM slow_query a,
    (SELECT Digest, MAX(query_time) as q_time
     FROM slow_query 
     WHERE time BETWEEN '2022-06-20 17:00:00' AND '2022-06-20 18:30:00' 
       AND user IN ('yaowq_test')
     GROUP BY digest) b
WHERE a.query_time = b.q_time AND a.digest = b.digest
ORDER BY b.q_time DESC LIMIT 10;

2.2 按数据库分析慢查询

SELECT a.user, a.host, a.db, a.query_time, a.digest, a.plan_digest
FROM slow_query a,
    (SELECT Digest, MAX(query_time) as q_time
     FROM slow_query 
     WHERE is_internal = false 
       AND time BETWEEN '2022-06-20 17:00:00' AND '2022-06-20 18:30:00' 
       AND db IN ('xk_ch')
     GROUP BY digest) b
WHERE a.query_time = b.q_time AND a.digest = b.digest
ORDER BY b.q_time DESC LIMIT 10;

2.3 根据 Digest 查询具体语句

SELECT query_time, query, plan
FROM slow_query
WHERE digest = "0de44c96f23a3f3430347a272b5dc00f2598a3748781239900ed3c2c03803fce"
ORDER BY query_time LIMIT 1;

三、在线配置管理

3.1 在线修改 TiKV 配置

重要提示:在线修改 TiKV 配置后,需要同时使用 tiup edit-config 修改对应配置项,否则升级或重启操作会覆盖在线修改的结果。

-- 修改全部 TiKV 实例配置
SET CONFIG tikv `split.qps-threshold` = 1000;

-- 修改单个 TiKV 实例配置
SET CONFIG "127.0.0.1:20180" `split.qps-threshold` = 1000;

3.2 在线修改 PD 配置

PD 不支持单个实例独立配置,所有实例共享同一份配置:

SET CONFIG pd `log.level` = 'info';

3.3 在线修改 TiDB 配置

通过系统变量修改 TiDB 配置:

-- 修改慢日志阈值
SET tidb_slow_log_threshold = 200;
SELECT @@tidb_slow_log_threshold;

四、会话和锁管理

4.1 查看死锁信息

SELECT * FROM information_schema.deadlocks;

4.2 查询热点 Key 等待

-- 查询 Top 5 热点 Key 等待数量
SELECT `key`, COUNT(*) as `count` 
FROM information_schema.data_lock_waits 
GROUP BY `key` 
ORDER BY `count` DESC
LIMIT 5;

-- 根据 Key 查询事务信息
SELECT trx.* 
FROM information_schema.data_lock_waits as l 
LEFT JOIN information_schema.tidb_trx as trx ON l.trx_id = trx.id 
WHERE l.key = "7480000000000000415F728000000000000001"\G

-- 根据事务 ID 查询 blocker 信息
SELECT l.key, trx.*, tidb_decode_sql_digests(trx.all_sql_digests) as sqls 
FROM information_schema.data_lock_waits as l 
JOIN information_schema.cluster_tidb_trx as trx ON l.current_holding_trx_id = trx.id 
WHERE l.trx_id = 426831965449355272\G

五、TiUP 集群管理

5.1 基础集群操作

# 查看集群列表
tiup cluster list

# 启动集群
tiup cluster start ${cluster-name}

# 启动特定组件
tiup cluster start ${cluster-name} -R pd

# 启动特定节点
tiup cluster start ${cluster-name} -N 1.2.3.4:2379,1.2.3.5:2379

# 查看集群状态
tiup cluster display ${cluster-name}

5.2 修改集群配置

# 编辑集群配置
tiup cluster edit-config ${cluster-name}

# 重载配置
tiup cluster reload ${cluster-name} [-N <nodes>] [-R <roles>]

配置示例(调整事务大小限制):

server_configs:
  tidb:
    performance.txn-total-size-limit: 1073741824

5.3 集群维护

# 集群重命名
tiup cluster rename ${cluster-name} ${new-name}

# 停止集群
tiup cluster stop ${cluster-name}

# 停止特定组件
tiup cluster stop ${cluster-name} -R tidb

5.4 数据清理

警告:此操作不可恢复,请谨慎执行!

# 清理数据但保留日志
tiup cluster clean ${cluster-name} --data

# 清理日志但保留数据
tiup cluster clean ${cluster-name} --log

# 清理所有数据和日志
tiup cluster clean ${cluster-name} --all

# 排除特定节点进行清理
tiup cluster clean ${cluster-name} --all --ignore-node 172.16.13.11:9000

# 销毁集群
tiup cluster destroy ${cluster-name}

六、实用工具函数

6.1 TSO 时间转换

-- 解析当前 TSO
SELECT TIDB_PARSE_TSO(@@tidb_current_ts);

-- 将时间转换为 TSO
SELECT conv(concat(bin(unix_timestamp('2022-01-06 12:30:59') * 1000),'000000000000000001'),2,10);

总结

本文整理的 TiDB 运维命令涵盖了日常维护的主要场景,熟练掌握这些命令可以大大提高运维效率。建议 DBA 根据实际工作需求,选择性地将这些命令纳入日常运维检查清单中。

在实际生产环境中,请务必在测试环境验证后再执行相关操作,特别是涉及数据清理和配置修改的命令。

0
0
1
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论