外观
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-namePD 命令
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/alertsGrafana 命令
bash
# 重启 Grafana 服务
systemctl restart grafana-server
# 查看 Grafana 状态
systemctl status grafana-server
# 查看 Grafana 日志
tail -f /var/log/grafana/grafana.logTiDB 日志命令
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/backupDumpling 命令
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 gzipTiDB 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/syslogTiDB 故障排查命令
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: 可以通过以下方式查看慢查询日志:
- 查看 TiDB 配置文件中的慢查询日志路径,直接查看日志文件
- 使用 SQL 语句查询慢查询日志表:
SELECT * FROM mysql.slow_log LIMIT 10; - 通过 Grafana 监控面板查看慢查询统计信息
Q3: 如何备份 TiDB 集群数据?
A3: TiDB 提供了多种备份方式:
- 使用 BR 工具进行物理备份:
tiup br backup full --pd pd-host:pd-port --storage local:///path/to/backup - 使用 Dumpling 工具进行逻辑备份:
tiup dumpling -h tidb-host -P 4000 -u user -p password -o /path/to/output - 使用 TiCDC 进行实时增量备份
Q4: 如何排查 TiDB 性能问题?
A4: 排查 TiDB 性能问题的常用步骤:
- 查看集群状态:
tiup cluster display cluster-name - 查看监控指标:通过 Grafana 查看 CPU、内存、磁盘 I/O 等指标
- 查看慢查询日志:分析慢查询语句
- 查看热点 Region:
tiup ctl pd -u http://pd-host:pd-port hot read/write - 查看系统资源使用:使用
top、iostat等命令
Q5: 如何修改 TiDB 配置参数?
A5: 修改 TiDB 配置参数的方式:
- 动态修改全局变量:`SET GLOBAL variable-name = value;
- 修改配置文件,然后使用
tiup cluster reload cluster-name滚动更新 - 使用 PD Control 工具修改 PD 配置:
pd-ctl config set key value - 使用 tikv-ctl 工具修改 TiKV 配置:
tikv-ctl --host tikv-host:tikv-port config set key value
