- 关于 TiDB
- 快速上手
- 部署标准集群
- 数据迁移
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 系统调优
- 软件调优
- SQL 性能调优
- SQL 性能调优概览
- 理解 TiDB 执行计划
- SQL 优化流程
- 控制执行计划
- 教程
- TiDB 工具
- 功能概览
- 适用场景
- 工具下载
- TiUP
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB Data Migration
- Backup & Restore (BR)
- TiDB Binlog
- TiCDC
- sync-diff-inspector
- TiSpark
- 参考指南
- 架构
- 监控指标
- 安全加固
- 权限
- SQL
- SQL 语言结构和语法
- SQL 语句
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER USER
ANALYZE TABLE
BACKUP
BEGIN
CHANGE COLUMN
CHANGE DRAINER
CHANGE PUMP
COMMIT
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP PLACEMENT POLICY
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW [BACKUPS|RESTORES]
SHOW ANALYZE STATUS
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- 数据类型
- 函数与操作符
- 聚簇索引
- 约束
- 生成列
- SQL 模式
- 表属性
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 临时表
- 字符集和排序规则
- Placement Rules in SQL
- 系统表
mysql
- INFORMATION_SCHEMA
- Overview
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_RULES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- CLI
- 命令行参数
- 配置文件参数
- 系统变量
- 存储引擎
- 遥测
- 错误码
- 通过拓扑 label 进行副本调度
- 常见问题解答 (FAQ)
- 版本发布历史
- 术语表
通过 TiUP 部署 TiDB 集群的拓扑文件配置
通过 TiUP 部署或扩容 TiDB 集群时,需要提供一份拓扑文件(示例)来描述集群拓扑。
同样,修改集群配置也是通过编辑拓扑文件来实现的,区别在于修改配置时仅允许修改部分字段。本文档介绍拓扑文件的各个区块以各区块中的各字段。
文件结构
一个通过 TiUP 部署的 TiDB 集群拓扑文件可能包含以下区块:
- global:集群全局配置,其中一些是集群的默认值,可以在实例里面单独配置
- monitored:监控服务配置,即 blackbox exporter 和 node exporter,每台机器上都会部署一个 node exporter 和一个 blackbox exporter
- server_configs:组件全局配置,可单独针对每个组件配置,若在实例中存在同名配置项,那么以实例中配置的为准
- pd_servers:PD 实例的配置,用来指定 PD 组件部署到哪些机器上
- tidb_servers:TiDB 实例的配置,用来指定 TiDB 组件部署到哪些机器上
- tikv_servers:TiKV 实例的配置,用来指定 TiKV 组件部署到哪些机器上
- tiflash_servers:TiFlash 实例的配置,用来指定 TiFlash 组件部署到哪些机器上
- pump_servers:Pump 实例的配置,用来指定 Pump 组件部署到哪些机器上
- drainer_servers:Drainer 实例的配置,用来指定 Drainer 组件部署到哪些机器上
- cdc_servers:CDC 实例的配置,用来指定 CDC 组件部署到哪些机器上
- tispark_masters:TiSpark Master 实例的配置,用来指定 TiSpark Master 组件部署到哪台机器上,仅允许部署一个 TiSpark Master 节点
- tispark_workers:TiSpark Worker 实例的配置,用来指定 TiSpark Worker 组件部署到哪些机器上
- monitoring_servers:用来指定 Prometheus 和 NGMonitoring 部署在哪些机器上,TiUP 支持部署多台 Prometheus 实例,但真实投入使用的只有第一个
- grafana_servers:Grafana 实例的配置,用来指定 Grafana 部署在哪台机器上
- alertmanager_servers:Alertemanager 实例的配置,用来指定 Alertmanager 部署在哪些机器上
global
global
区块为集群的全局配置,包含以下字段:
user
:以什么用户来启动部署的集群,默认值:"tidb",如果<user>
字段指定的用户在目标机器上不存在,会自动尝试创建group
:自动创建用户时指定用户所属的用户组,默认和<user>
字段值相同,若指定的组不存在,则自动创建ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,默认值:22enable_tls
:是否对集群启用 TLS,启用之后组件之间、客户端与组件之间都必须使用生成的 TLS 证书链接,启用后无法关闭,默认值:falsedeploy_dir
:每个组件的部署目录,默认值:"deploy"。其应用规则如下:- 如果在实例级别配置了绝对路径的
deploy_dir
,那么实际部署目录为该实例设定的deploy_dir
- 对于每个实例,如果用户未配置
deploy_dir
,其默认值为相对路径<component-name>-<component-port>
- 如果
global.deploy_dir
为绝对路径,那么组件会部署到<global.deploy_dir>/<instance.deploy_dir>
目录 - 如果
global.deploy_dir
为相对路径,那么组件会部署到/home/<global.user>/<global.deploy_dir>/<instance.deploy_dir>
目录
- 如果在实例级别配置了绝对路径的
data_dir
:数据目录,默认值:"data"。其应用规则如下:- 如果在实例级别配置了绝对路径的
data_dir
,那么实际数据目录为该实例设定的data_dir
- 对于每个实例,如果用户未配置
data_dir
,其默认值为<global.data_dir>
- 如果
data_dir
为相对路径,那么组件数据将放到<deploy_dir>/<data_dir>
中,其中<deploy_dir>
的计算规则请参考deploy_dir
字段的应用规则
- 如果在实例级别配置了绝对路径的
log_dir
:日志目录,默认值:"log"。其应用规则如下:- 如果在实例级别配置了绝对路径的
log_dir
,那么实际日志目录为该实例设定的log_dir
- 对于每个实例,如果用户未配置
log_dir
,其默认值为<global.log_dir>
- 如果
log_dir
为相对路径,那么组件日志将放到<deploy_dir>/<log_dir>
中,其中<deploy_dir>
的计算规则请参考deploy_dir
字段的应用规则
- 如果在实例级别配置了绝对路径的
os
:目标机器的操作系统,该字段决定了向目标机器推送适配哪个操作系统的组件,默认值:linuxarch
:目标机器的 CPU 架构,该字段决定了向目标机器推送哪个平台的二进制包,支持 amd64 和 arm64,默认值:amd64resource_control
:运行时资源控制,该字段下所有配置都将写入 systemd 的 service 文件中,默认无限制。支持控制的资源如下:memory_limit
: 限制运行时最大内存,例如 "2G" 表示最多使用 2GB 内存cpu_quota
:限制运行时最大 CPU 占用率,例如 "200%"io_read_bandwidth_max
:读磁盘 I/O 的最大带宽,例如:"/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 100M"io_write_bandwidth_max
:写磁盘 I/O 的最大带宽,例如:"/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 100M"limit_core
:控制 core dump 的大小
global
配置示例:
global:
user: "tidb"
resource_control:
memory_limit: "2G"
上述配置指定使用 tidb
用户启动集群,同时限制每个组件运行时最多只能使用 2GB 内存。
monitored
monitored
用于配置目标机上的监控服务:node_exporter 和 blackbox_exporter。包含以下字段:
node_exporter_port
:node_exporter 的服务端口,默认值:9100blackbox_exporter_port
:blackbox_exporter 的服务端口,默认值:9115deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成
monitored
配置示例:
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
上述配置指定了 node_exporter 使用 9100 端口,blackbox_exporter 使用 9115 端口。
server_configs
server_configs
用于配置服务,生成各组件的配置文件,类似 global
区块,该区块内的配置可以在具体的实例中被覆盖。主要包含以下字段:
tidb
:TiDB 服务的相关配置,支持的完整配置请参考 TiDB 配置文件描述tikv
:TiKV 服务的相关配置,支持的完整配置请参考 TiKV 配置文件描述pd
:PD 服务的相关配置,支持的完整配置请参考 PD 配置文件描述tiflash
:TiFlash 服务的相关配置,支持的完整配置请参考 TiFlash 配置参数tiflash_learner
:每个 TiFlash 中内置了一个特殊的 TiKV,该配置项用于配置这个特殊的 TiKV,一般不建议修改这个配置项下的内容pump
:Pump 服务的相关配置,支持的完整配置请参考 TiDB Binlog 配置说明drainer
:Drainer 服务的相关配置,支持的完整配置请参考 TiDB Binlog 配置说明cdc
:CDC 服务的相关配置,支持的完整配置请参考 TiCDC 安装部署
server_configs
配置示例:
server_configs:
tidb:
run-ddl: true
lease: "45s"
split-table: true
token-limit: 1000
tikv:
log-level: "info"
readpool.unified.min-thread-count: 1
上述配置指定了 TiDB 和 TiKV 的全局配置。
pd_servers
pd_servers
指定了将 PD 的服务部署到哪些机器上,同时可以指定每台机器上的服务配置。pd_servers
是一个数组,每个数组的元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略listen_host
:当机器上有多个 IP 时,可以指定服务的监听 IP,默认为0.0.0.0
ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
name
:指定该 PD 实例的名字,不同实例的名字必须唯一,否则无法部署client_port
:指定 PD 的客户端连接端口,默认值:2379peer_port
:指定 PD 之间互相通信的端口,默认值:2380deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl。在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和server_configs
里的pd
配置规则相同,若配置了该字段,会将该字段内容和server_configs
里的pd
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制。如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
listen_host
name
client_port
peer_port
deploy_dir
data_dir
log_dir
arch
os
pd_servers
配置示例:
pd_servers:
- host: 10.0.1.11
config:
schedule.max-merge-region-size: 20
schedule.max-merge-region-keys: 200000
- host: 10.0.1.12
上述配置指定了将 PD 部署到 10.0.1.11
和 10.0.1.12
,并针对 10.0.1.11
的 PD 进行一些特殊配置。
tidb_servers
tidb_servers
指定了将 TiDB 服务部署到哪些机器上,同时可以指定每台机器上的服务配置。tidb_servers
是一个数组,每个数组的元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略listen_host
:当机器上有多个 IP 时,可以指定服务的监听 IP,默认为0.0.0.0
ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:TiDB 服务的监听端口,用于提供给 MySQL 客户端连接,默认值:4000status_port
:TiDB 状态服务的监听端口,用于外部通过 http 请求查看 TiDB 服务的状态,默认值:10080deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和server_configs
里的tidb
配置规则相同,若配置了该字段,会将该字段内容和server_configs
里的tidb
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器os
:host 字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host 字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
listen_host
port
status_port
deploy_dir
log_dir
arch
os
tidb_servers
配置示例:
tidb_servers:
- host: 10.0.1.14
config:
log.level: warn
log.slow-query-file: tidb-slow-overwrited.log
- host: 10.0.1.15
tikv_servers
tikv_servers
约定了将 TiKV 服务部署到哪些机器上,同时可以指定每台机器上的服务配置。tikv_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略listen_host
:当机器上有多个 IP 时,可以指定服务的监听 IP,默认为0.0.0.0
ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:TiKV 服务的监听端口,默认值:20160status_port
:TiKV 状态服务的监听端口,默认值:20180deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和 server_configs 里的 tikv 配置规则相同,若配置了该字段,会将该字段内容和server_configs
里的tikv
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器os
:host 字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host 字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
listen_host
port
status_port
deploy_dir
data_dir
log_dir
arch
os
tikv_servers
配置示例:
tikv_servers:
- host: 10.0.1.14
config:
server.labels: { zone: "zone1", host: "host1" }
- host: 10.0.1.15
config:
server.labels: { zone: "zone1", host: "host2" }
tiflash_servers
tiflash_servers
约定了将 TiFlash 服务部署到哪些机器上,同时可以指定每台机器上的服务配置。该区块是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用 global 区块中的ssh_port
tcp_port
:TiFlash TCP 服务的端口,默认 9000http_port
:TiFlash HTTP 服务的端口,默认 8123flash_service_port
:TiFlash 提供服务的端口,TiDB 通过该端口从 TiFlash 读数据,默认 3930metrics_port
:TiFlash 的状态端口,用于输出 metric 数据,默认 8234flash_proxy_port
:内置 TiKV 的端口,默认 20170flash_proxy_status_port
:内置 TiKV 的状态端口,默认为 20292deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成,TiFlash 的数据目录支持多个,采用逗号分割log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成tmp_path
: TiFlash 临时文件的存放路径,默认使用 [path
或者storage.latest.dir
的第一个目录] + "/tmp"numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和server_configs
里的tiflash
配置规则相同,若配置了该字段,会将该字段内容和server_configs
里的tiflash
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器learner_config
:每个 TiFlash 中内置了一个特殊的 TiKV 模块,该配置项用于配置这个特殊的 TiKV 模块,一般不建议修改这个配置项下的内容os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上字段中,data_dir
在部署完成之后只能新增目录,而下列字段部署完成之后不能再修改:
host
tcp_port
http_port
flash_service_port
flash_proxy_port
flash_proxy_status_port
metrics_port
deploy_dir
log_dir
tmp_path
arch
os
tiflash_servers
配置示例:
tiflash_servers:
- host: 10.0.1.21
- host: 10.0.1.22
pump_servers
pump_servers
约定了将 TiDB Binlog 组件的 Pump 服务部署到哪些机器上,同时可以指定每台机器上的服务配置。pump_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:Pump 服务的监听端口,默认 8250deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和server_configs
里的pump
配置规则相同,若配置了该字段,会将该字段内容和server_configs
里的pump
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
port
deploy_dir
data_dir
log_dir
arch
os
pump_servers
配置示例:
pump_servers:
- host: 10.0.1.21
config:
gc: 7
- host: 10.0.1.22
drainer_servers
drainer_servers
约定了将 TiDB Binlog 组件的 Drainer 服务部署到哪些机器上,同时可以指定每台机器上的服务配置,drainer_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:Drainer 服务的监听端口,默认 8249deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成commit_ts
:Drainer 启动的时候会去读取 checkpoint,如果读取不到,就会使用该字段做为初次启动开始的同步时间点,该字段默认为 -1(从 PD 总获取最新时间戳作为 commit_ts)numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和server_configs
里的drainer
配置规则相同,若配置了该字段,会将该字段内容和server_configs
里的drainer
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
port
deploy_dir
data_dir
log_dir
commit_ts
arch
os
drainer_servers
配置示例:
drainer_servers:
- host: 10.0.1.21
config:
syncer.db-type: "mysql"
syncer.to.host: "127.0.0.1"
syncer.to.user: "root"
syncer.to.password: ""
syncer.to.port: 3306
syncer.ignore-table:
- db-name: test
tbl-name: log
- db-name: test
tbl-name: audit
cdc_servers
cdc_servers
约定了将 TiCDC 服务部署到哪些机器上,同时可以指定每台机器上的服务配置,cdc_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:TiCDC 服务的监听端口,默认 8300deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录。若不指定该字段或指定为相对目录,数据目录则按照global
中配置的data_dir
生成。log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成gc-ttl
:TiCDC 在 PD 设置的服务级别 GC safepoint 的 TTL (Time To Live) 时长,单位为秒,默认值为 86400,即 24 小时tz
:TiCDC 服务使用的时区。TiCDC 在内部转换 timestamp 等时间数据类型和向下游同步数据时使用该时区,默认为进程运行本地时区。numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config
:该字段配置规则和server_configs
里的cdc
内容合并(若字段重叠,以本字段内容为准),然后生成配置文件并下发到host
指定的机器os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
port
deploy_dir
data_dir
log_dir
arch
os
cdc_servers
配置示例:
cdc_servers:
- host: 10.0.1.20
gc-ttl: 86400
data_dir: "/cdc-data"
- host: 10.0.1.21
gc-ttl: 86400
data_dir: "/cdc-data"
tispark_masters
tispark_masters
约定了将 TiSpark 的 master 节点部署到哪些机器上,同时可以指定每台机器上的服务配置,tispark_masters
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略listen_host
:当机器上有多个 IP 时,可以指定服务的监听 IP,默认为0.0.0.0
ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用 global 区块中的ssh_port
port
:Spark 的监听端口,节点之前通讯用,默认 7077web_port
:Spark 的网页端口,提供网页服务,可查看任务情况,默认 8080deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成java_home
:指定要使用的 JRE 环境所在的路径。该参数对应系统环境变量JAVA_HOME
spark_config
:用于配置 TiSpark 服务,生成配置文件并下发到host
指定的机器spark_env
:配置 Spark 启动时的环境变量os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
listen_host
port
web_port
deploy_dir
arch
os
tispark_masters
配置示例:
tispark_masters:
- host: 10.0.1.21
spark_config:
spark.driver.memory: "2g"
spark.eventLog.enabled: "False"
spark.tispark.grpc.framesize: 2147483647
spark.tispark.grpc.timeout_in_sec: 100
spark.tispark.meta.reload_period_in_sec: 60
spark.tispark.request.command.priority: "Low"
spark.tispark.table.scan_concurrency: 256
spark_env:
SPARK_EXECUTOR_CORES: 5
SPARK_EXECUTOR_MEMORY: "10g"
SPARK_WORKER_CORES: 5
SPARK_WORKER_MEMORY: "10g"
- host: 10.0.1.22
tispark_workers
tispark_workers
约定了将 TiSpark 的 worker 节点部署到哪些机器上,同时可以指定每台机器上的服务配置,tispark_workers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略listen_host
:当机器上有多个 IP 时,可以指定服务的监听 IP,默认为0.0.0.0
ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:Spark 的监听端口,节点之前通讯用,默认 7077web_port
:Spark 的网页端口,提供网页服务,可查看任务情况,默认 8080deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成java_home
:指定要使用的 JRE 环境所在的路径。该参数对应系统环境变量JAVA_HOME
os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
listen_host
port
web_port
deploy_dir
arch
os
tispark_workers
配置示例:
tispark_workers:
- host: 10.0.1.22
- host: 10.0.1.23
monitoring_servers
monitoring_servers
约定了将 Prometheus 服务部署到哪台机器上,同时可以指定这台机器上的服务配置,monitoring_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,必填项ng_port
:指定连接 NGMonitoring 的 SSH 端口,在 TiUP v1.7.0 引入,支持 TiDB v5.3.0 及以上版本的持续性能分析和 Top SQL 功能。ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用 global 区块中的ssh_port
port
:指定 Prometheus 提供服务的端口,默认值:9090deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"storage_retention
:Prometheus 监控数据保留时间,默认 "30d"rule_dir
:该字段指定一个本地目录,该目录中应当含有完整的*.rules.yml
文件,这些文件会在集群配置初始化阶段被传输到目标机器上,作为 Prometheus 的规则remote_config
:用于支持将 Prometheus 数据写到远端,或从远端读取数据,该字段下有两个配置:remote_write
:参考 Prometheus<remote_write>
文档remote_read
:参考 Prometheus<remote_read>
文档
external_alertmanagers
:若配置了external_alertmanagers
,Prometheus 会将配置行为报警通知到集群外的 Alertmanager。该字段为一个数组,数组的元素为每个外部的 Alertmanager,由host
和web_port
字段构成os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
port
deploy_dir
data_dir
log_dir
arch
os
monitoring_servers
配置示例:
monitoring_servers:
- host: 10.0.1.11
rule_dir: /local/rule/dir
remote_config:
remote_write:
- queue_config:
batch_send_deadline: 5m
capacity: 100000
max_samples_per_send: 10000
max_shards: 300
url: http://127.0.0.1:8003/write
remote_read:
- url: http://127.0.0.1:8003/read
external_alertmanagers:
- host: 10.1.1.1
web_port: 9093
- host: 10.1.1.2
web_port: 9094
grafana_servers
grafana_servers
约定了将 Grafana 服务部署到哪台机器上,同时可以指定这台机器上的服务配置,grafana_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
port
:指定 Grafana 提供服务的端口,默认值:3000deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
username
:Grafana 登录界面的用户名password
:Grafana 对应的密码dashboard_dir
:该字段指定一个本地目录,该目录中应当含有完整的dashboard(*.json)
文件,这些文件会在集群配置初始化阶段被传输到目标机器上,作为 Grafana 的 dashboardsresource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
如果配置了 grafana_servers
的 dashboard_dir
字段,在执行 tiup cluster rename
命令进行集群重命名后,需要完成以下操作:
- 对于本地的 dashboards 目录中的
*.json
文件,将datasource
字段的值更新为新的集群名(这是因为datasource
是以集群名命名的) - 执行
tiup cluster reload -R grafana
命令
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
port
deploy_dir
arch
os
grafana_servers
配置示例:
grafana_servers:
- host: 10.0.1.11
dashboard_dir: /local/dashboard/dir
alertmanager_servers
alertmanager_servers
约定了将 Alertmanager 服务部署到哪些机器上,同时可以指定这台机器上的服务配置,alertmanager_servers
是一个数组,每个数组元素包含以下字段:
host
:指定部署到哪台机器,字段值填 IP 地址,不可省略ssh_port
:指定连接目标机器进行操作的时候使用的 SSH 端口,若不指定,则使用global
区块中的ssh_port
web_port
:指定 Alertmanager 提供网页服务的端口,默认值:9093cluster_port
:指定 Alertmanger 和 其他 Alertmanager 通讯的端口,默认值:9094deploy_dir
:指定部署目录,若不指定,或指定为相对目录,则按照global
中配置的deploy_dir
生成data_dir
:指定数据目录,若不指定,或指定为相对目录,则按照global
中配置的data_dir
生成log_dir
:指定日志目录,若不指定,或指定为相对目录,则按照global
中配置的log_dir
生成numa_node
:为该实例分配 NUMA 策略,如果指定了该参数,需要确保目标机装了 numactl,在指定该参数的情况下会通过 numactl 分配 cpubind 和 membind 策略。该字段参数为 string 类型,字段值填 NUMA 节点的 ID,例如 "0,1"config_file
:该字段指定一个本地文件,该文件会在集群配置初始化阶段被传输到目标机器上,作为 Alertmanager 的配置os
:host
字段所指定的机器的操作系统,若不指定该字段,则默认为global
中的os
arch
:host
字段所指定的机器的架构,若不指定该字段,则默认为global
中的arch
resource_control
:针对该服务的资源控制,如果配置了该字段,会将该字段和global
中的resource_control
内容合并(若字段重叠,以本字段内容为准),然后生成 systemd 配置文件并下发到host
指定机器。resource_control
的配置规则同global
中的resource_control
以上所有字段中,部分字段部署完成之后不能再修改。如下所示:
host
web_port
cluster_port
deploy_dir
data_dir
log_dir
arch
os
alertmanager_servers
配置示例:
alertmanager_servers:
- host: 10.0.1.11
config_file: /local/config/file
- host: 10.0.1.12
config_file: /local/config/file