TiDB基础运维操作汇总

原创
2023/10/30 00:00
阅读数 24

作者: TiDBer_小阿飞 原文来源:https://tidb.net/blog/ad437fb1

一、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;

 

变量描述及使用详情请参考官方文档:

https://docs.pingcap.com/zh/tidb/v6.5/system-variables#tidb_enable_auto_analyze-%E4%BB%8E-v610-%E7%89%88%E6%9C%AC%E5%BC%80%E5%A7%8B%E5%BC%95%E5%85%A5

本文所有命令及解释均参考官方文档,如有错误或遗漏,欢迎批评指正!

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部