一、tiup运维基本命令
1.查看集群列表:
tiup cluster list
2.启动集群
启动集群操作会按 PD -> TiKV -> Pump -> TiDB -> TiFlash -> Drainer -> TiCDC -> Prometheus -> Grafana -> Alertmanager 的顺序启动整个 TiDB 集群所有组件
tiup cluster start ${cluster-name}
3.启动部分组件
tiup cluster start ${cluster-name} -R pd
4.只启动1.2.3.4和1.2.3.5这两台Server上的PD组件
tiup cluster start ${cluster-name} -N 1.2.3.4:2379, 1.2.3.5:2379
5.查看集群状态
tiup cluster display ${cluster-name}
6.修改配置参数
tiup cluster edit-config ${cluster-name}
全局配置:
server_configs:
tidb:
log.slow-threshold:300
仅在某个节点生效:
tidb_servers:
host:10.10.10.2
port:4000
config:
log.slow-threshold:300
### tidb config.toml.example、tikvconfig.toml.example、pd config.toml.example
7.滚动分发配置、重启组件
tiup cluster reload ${cluster-name} [-N <nodes>][-R <roles>]
### server_configs:
tidb:
performance.txn-total-size-limit: 1073741824
tiup cluster reload ${cluster-name} -R tidb
8.Hotfix版本替换
替换所有 tiup cluster patch test-cluster /tmp/tidb-profix.tar.gz -R tidb
只替换指定节点 tiup cluster patch test-cluster /tmp/tidb-profix.tar.gz -N 172.16.4.5:4000
9.重命名集群
tiup cluster rename ${cluster-name} ${new-name}
备注:重命名集群会重启 prometheus和grafana;重命名集群后grafana 可能会残留一些旧集群名的面板,需要手动删除
10.关闭集群
顺序 drainer->tiflash->tidb->pump->tikv->PD
tiup cluster stop ${cluster-name}
只关闭1.2.3.4和1.2.3.5这两台Server上的tidb组件
tiup cluster stop ${cluster-name} -N 1.2.3.4:4000, 1.2.3.5:4000
11.清除集群数据
(关闭所有服务、清空数据目录/日志目录,数据无法恢复,谨慎!)
清空数据保留日志: tiup cluster clean ${cluster-name} --data
清空日志保留数据: tiup cluster clean ${cluster-name} --log
清空日志和数据: tiup cluster clean ${cluster-name} --all
清空prometheus以外的日志和数据: tiup cluster clean ${cluster-name} --all ignore-role prometheus
清空172.30.20.1:9000以外的日志和数据: tiup cluster clean ${cluster-name} --all ignore-role 172.30.20.1:9000
清空172.30.20.2以外的日志和数据: tiup cluster clean ${cluster-name} --all ignore-role 172.30.20.2
12. 销毁集群
(关闭服务、清空数据和部署目录,无法恢复)
tiup cluster destory ${cluster-name}
13. 下线节点
tiup cluster scale-in ${cluster-name} --node 21.72.124.38:4000
14. 扩容节点
tiup cluster scale-out ${cluster-name} tidb-scale-out.yaml
15. 查询库大小
SELECT table_schema, SUM(data_length)/1024/1024 AS data_length, SUM(index_length)/1024/1024 AS index_length, SUM(data_length+index_length)/1024/1024 AS sum FROM information_schema.tables WHERE table_schema = "${schema_name}" GROUP BY table_schema;
16. 查询最大单表大小
SELECT table_name, table_schema, SUM(data_length)/1024/1024 AS data_length, SUM(index_length)/1024/1024 AS index_length, SUM(data_length+index_length)/1024/1024 AS sum FROM information_schema.tables WHERE table_schema = "${schema_name}" GROUP BY table_name,table_schema ORDER BY sum DESC LIMIT 5;
二、在线修改配置
在线配置变更主要是通过利用 SQL 对包括 TiDB、TiKV 以及 PD 在内的各组件的配置进行在线更新。
用户可以通过在线配置变更对各组件进行性能调优而无需重启集群组件。
但目前在线修改 TiDB 实例配置的方式和修改其他组件 (TiKV, PD) 的有所不同。
1.查看实例配置
查看集群所有实例的配置信息
mysql>show config;
加过滤条件
show config where type='tidb'
show config where instance in (...)
show config where name like '%log%'
show config where type='tikv' and name='log.level'
2.在线修改TiKV配置
注意:
在线修改 TiKV 配置项后,同时会自动修改 TiKV 的配置文件。但还需要使用 tiup edit-config 命令来修改对应的配置项,否则 upgrade 和 reload 等运维操作会将在线修改配置后的结果覆盖。修改配置的操作请参考:使用 TiUP 修改配置。执行 tiup edit-config 后不需要执行 tiup reload 操作。
执行 SQL 语句 set config,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如:
修改全部 TiKV 实例配置:
set config tikv `split.qps-threshold`=1000
修改单个 TiKV 实例配置:
set config "127.0.0.1:20180" `split.qps-threshold`=1000
设置成功会返回 Query OK:
Query OK, 0 rows affected (0.01 sec)
在批量修改时如果有错误发生,会以 warning 的形式返回:
set config tikv `log-level`='warn';
Query OK, 0 rows affected, 1 warning (0.04 sec)
show warnings;
注意:
输入修改变量时建议使用反引号包裹变量名称。
3.在线修改PD配置
在线修改 PD 配置
PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的配置项:
set config pd `log.level`='info'
设置成功会返回 Query OK:
Query OK, 0 rows affected (0.01 sec)
针对 PD 可在线修改的配置项,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的配置为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ` 包裹此类配置项,例如 `schedule.leader-schedule-limit`。
4.在线修改 TiDB 配置
在线修改 TiDB 配置的方式和 TiKV/PD 有所不同,你可以通过修改系统变量来实现。
下面例子展示了如何通过变量 tidb_slow_log_threshold 在线修改配置项 slow-threshold。
slow-threshold 默认值是 300 毫秒,可以通过设置系统变量 tidb_slow_log_threshold 将其修改为 200 毫秒:
set tidb_slow_log_threshold = 200;
Query OK, 0 rows affected (0.00 sec)
select @@tidb_slow_log_threshold;
支持在线修改的配置项和相应的 TiDB 系统变量如下:
配置项 |
对应变量 |
简介 |
instance.tidb_enable_slow_log |
tidb_enable_slow_log |
慢日志的开关 |
instance.tidb_slow_log_threshold |
tidb_slow_log_threshold |
慢日志阈值 |
instance.tidb_expensive_query_time_threshold |
tidb_expensive_query_time_threshold |
expensive 查询阈值 |
5.在线修改 TiFlash 配置
目前,你可以通过修改系统变量 tidb_max_tiflash_threads 来在线修改 TiFlash 配置项 max_threads。tidb_max_tiflash_threads 表示 TiFlash 中 request 执行的最大并发度。
tidb_max_tiflash_threads 默认值是 -1,表示此系统变量无效,由 TiFlash 的配置文件决定 max_threads。你可以通过设置系统变量 tidb_max_tiflash_threads 将其修改为 10:
set tidb_max_tiflash_threads = 10;
Query OK, 0 rows affected (0.00 sec)
select @@tidb_max_tiflash_threads;
三、变量查询修改
TiDB 在 MySQL 的基础上,定义了一些专用的系统变量和语法用来优化性能。
变量查询
show variables like ‘’
*对SESSION作用域变量的更改,设置后只影响当前会话。
*对GLOBAL作用域变量的更改,设置后立即生效。如果该变量也有SESSION作用域,已经连接的所有会话 (包括当前会话) 将继续使用会话当的SESSION变量值
变量可以通过 SET 语句设置,例如
# 以下两个语句等价地改变一个 Session 变量
SET tidb_distsql_scan_concurrency = 10;
SET SESSION tidb_distsql_scan_concurrency = 10;
# 以下两个语句等价地改变一个 Global 变量
SET @@global.tidb_distsql_scan_concurrency = 10;
SET GLOBAL tidb_distsql_scan_concurrency = 10;
变量描述及使用详情请参考官方文档:
本文所有命令及解释均参考官方文档,如有错误或遗漏,欢迎批评指正!