黄东旭解析 TiDB 的核心优势
521
2024-02-29
tiup cluster list
启动集群操作会按 PD -> TiKV -> Pump -> TiDB -> TiFlash -> Drainer -> TiCDC -> Prometheus -> Grafana -> Alertmanager 的顺序启动整个 TiDB 集群所有组件
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}
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
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
替换所有 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
tiup cluster rename ${cluster-name} ${new-name}
备注:重命名集群会重启 prometheus和grafana;重命名集群后grafana 可能会残留一些旧集群名的面板,需要手动删除
顺序 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
(关闭所有服务、清空数据目录/日志目录,数据无法恢复,谨慎!)
清空数据保留日志: 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
(关闭服务、清空数据和部署目录,无法恢复)
tiup cluster destory ${cluster-name}
tiup cluster scale-in ${cluster-name} --node 21.72.124.38:4000
tiup cluster scale-out ${cluster-name} tidb-scale-out.yaml
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;
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) 的有所不同。
查看集群所有实例的配置信息
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
注意:
在线修改 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;
注意:
输入修改变量时建议使用反引号包裹变量名称。
在线修改 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`。
在线修改 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 查询阈值
目前,你可以通过修改系统变量 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
本文所有命令及解释均参考官方文档,如有错误或遗漏,欢迎批评指正!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。