TiDB Binlog 部署拓扑
本文介绍在部署最小拓扑集群的基础上,同时部署 TiDB Binlog。TiDB Binlog 是目前广泛使用的增量同步组件,可提供准实时备份和同步功能。
拓扑信息
| 实例 | 个数 | 物理机配置 | IP | 配置 |
|---|---|---|---|---|
| TiDB | 3 | 16 VCore 32 GB | 10.0.1.1 10.0.1.2 10.0.1.3 | 默认端口配置; 开启 enable_binlog; 开启 ignore-error |
| PD | 3 | 4 VCore 8 GB | 10.0.1.4 10.0.1.5 10.0.1.6 | 默认端口配置 |
| TiKV | 3 | 16 VCore 32 GB | 10.0.1.7 10.0.1.8 10.0.1.9 | 默认端口配置 |
| Pump | 3 | 8 VCore 16GB | 10.0.1.1 10.0.1.7 10.0.1.8 | 默认端口配置; 设置 GC 时间 7 天 |
| Drainer | 1 | 8 VCore 16GB | 10.0.1.12 | 默认端口配置; 设置默认初始化 commitTS -1 为最近的时间戳 配置下游目标 TiDB 10.0.1.12:4000 |
拓扑模版
简单 TiDB Binlog 配置模板(下游为 MySQL)
1. # # Global variables are applied to all deployments and used as the default value of
2. # # the deployments if a specific deployment value is missing.
3. global:
4. user: "tidb"
5. ssh_port: 22
6. deploy_dir: "/tidb-deploy"
7. data_dir: "/tidb-data"
9. server_configs:
10. tidb:
11. binlog.enable: true
12. binlog.ignore-error: true
14. pd_servers:
15. - host: 10.0.1.4
16. - host: 10.0.1.5
17. - host: 10.0.1.6
18. tidb_servers:
19. - host: 10.0.1.1
20. - host: 10.0.1.2
21. - host: 10.0.1.3
22. tikv_servers:
23. - host: 10.0.1.7
24. - host: 10.0.1.8
25. - host: 10.0.1.9
27. pump_servers:
28. - host: 10.0.1.1
29. - host: 10.0.1.2
30. - host: 10.0.1.3
31. drainer_servers:
32. - host: 10.0.1.12
33. config:
34. syncer.db-type: "tidb"
35. syncer.to.host: "10.0.1.12"
36. syncer.to.user: "root"
37. syncer.to.password: ""
38. syncer.to.port: 4000
40. monitoring_servers:
41. - host: 10.0.1.10
43. grafana_servers:
44. - host: 10.0.1.10
46. alertmanager_servers:
47. - host: 10.0.1.10
48. ``` 简单 TiDB Binlog 配置模板(下游为 file)
# Global variables are applied to all deployments and used as the default value of
# the deployments if a specific deployment value is missing.
global: user: “tidb” ssh_port: 22 deploy_dir: “/tidb-deploy” data_dir: “/tidb-data”
server_configs: tidb: binlog.enable: true binlog.ignore-error: true
pd_servers:
- host: 10.0.1.4
- host: 10.0.1.5
- host: 10.0.1.6 tidb_servers:
- host: 10.0.1.1
- host: 10.0.1.2
- host: 10.0.1.3 tikv_servers:
- host: 10.0.1.7
- host: 10.0.1.8
- host: 10.0.1.9
pump_servers:
- host: 10.0.1.1
- host: 10.0.1.2
- host: 10.0.1.3 drainer_servers:
- host: 10.0.1.12
# drainer meta data directory path
data_dir: “/path/to/save/data” config: syncer.db-type: “file”
# directory to save binlog file, default same as data-dir(save checkpoint file) if this is not configured.
# syncer.to.dir: “/path/to/save/binlog”
monitoring_servers:
- host: 10.0.1.10
grafana_servers:
- host: 10.0.1.10
alertmanager_servers:
- host: 10.0.1.10 ``` 详细 TiDB Binlog 配置模板
1. # # Global variables are applied to all deployments and used as the default value of
2. # # the deployments if a specific deployment value is missing.
3. global:
4. user: "tidb"
5. ssh_port: 22
6. deploy_dir: "/tidb-deploy"
7. data_dir: "/tidb-data"
9. # # Monitored variables are applied to all the machines.
10. monitored:
11. node_exporter_port: 9100
12. blackbox_exporter_port: 9115
13. # deploy_dir: "/tidb-deploy/monitored-9100"
14. # data_dir: "/tidb-data/monitored-9100"
15. # log_dir: "/tidb-deploy/monitored-9100/log"
17. # # Server configs are used to specify the runtime configuration of TiDB components.
18. # # All configuration items can be found in TiDB docs:
19. # # - TiDB: https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file
20. # # - TiKV: https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file
21. # # - PD: https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file
22. # # All configuration items use points to represent the hierarchy, e.g:
23. # # readpool.storage.use-unified-pool
24. # #
25. # # You can overwrite this configuration via the instance-level `config` field.
27. server_configs:
28. tidb:
29. log.slow-threshold: 300
30. binlog.enable: true
31. binlog.ignore-error: true
32. tikv:
33. # server.grpc-concurrency: 4
34. # raftstore.apply-pool-size: 2
35. # raftstore.store-pool-size: 2
36. # rocksdb.max-sub-compactions: 1
37. # storage.block-cache.capacity: "16GB"
38. # readpool.unified.max-thread-count: 12
39. readpool.storage.use-unified-pool: false
40. readpool.coprocessor.use-unified-pool: true
41. pd:
42. schedule.leader-schedule-limit: 4
43. schedule.region-schedule-limit: 2048
44. schedule.replica-schedule-limit: 64
46. pd_servers:
47. - host: 10.0.1.4
48. # ssh_port: 22
49. # name: "pd-1"
50. # client_port: 2379
51. # peer_port: 2380
52. # deploy_dir: "/tidb-deploy/pd-2379"
53. # data_dir: "/tidb-data/pd-2379"
54. # log_dir: "/tidb-deploy/pd-2379/log"
55. # numa_node: "0,1"
56. # # The following configs are used to overwrite the `server_configs.pd` values.
57. # config:
58. # schedule.max-merge-region-size: 20
59. # schedule.max-merge-region-keys: 200000
60. - host: 10.0.1.5
61. - host: 10.0.1.6
62. tidb_servers:
63. - host: 10.0.1.1
64. # ssh_port: 22
65. # port: 4000
66. # status_port: 10080
67. # deploy_dir: "/tidb-deploy/tidb-4000"
68. # log_dir: "/tidb-deploy/tidb-4000/log"
69. # numa_node: "0,1"
70. # # The following configs are used to overwrite the `server_configs.tidb` values.
71. # config:
72. # log.slow-query-file: tidb-slow-overwrited.log
73. - host: 10.0.1.2
74. - host: 10.0.1.3
75. tikv_servers:
76. - host: 10.0.1.7
77. # ssh_port: 22
78. # port: 20160
79. # status_port: 20180
80. # deploy_dir: "/tidb-deploy/tikv-20160"
81. # data_dir: "/tidb-data/tikv-20160"
82. # log_dir: "/tidb-deploy/tikv-20160/log"
83. # numa_node: "0,1"
84. # # The following configs are used to overwrite the `server_configs.tikv` values.
85. # config:
86. # server.grpc-concurrency: 4
87. # server.labels: { zone: "zone1", dc: "dc1", host: "host1" }
88. - host: 10.0.1.8
89. - host: 10.0.1.9
91. pump_servers:
92. - host: 10.0.1.1
93. ssh_port: 22
94. port: 8250
95. deploy_dir: "/tidb-deploy/pump-8250"
96. data_dir: "/tidb-data/pump-8250"
97. # The following configs are used to overwrite the `server_configs.pump` values.
98. config:
99. gc: 7
100. - host: 10.0.1.2
101. ssh_port: 22
102. port: 8250
103. deploy_dir: "/tidb-deploy/pump-8250"
104. data_dir: "/tidb-data/pump-8250"
105. # The following configs are used to overwrite the `server_configs.pump` values.
106. config:
107. gc: 7
108. - host: 10.0.1.3
109. ssh_port: 22
110. port: 8250
111. deploy_dir: "/tidb-deploy/pump-8250"
112. data_dir: "/tidb-data/pump-8250"
113. # The following configs are used to overwrite the `server_configs.pump` values.
114. config:
115. gc: 7
116. drainer_servers:
117. - host: 10.0.1.12
118. port: 8249
119. deploy_dir: "/tidb-deploy/drainer-8249"
120. data_dir: "/tidb-data/drainer-8249"
121. # If drainer doesn't have a checkpoint, use initial commitTS as the initial checkpoint.
122. # Will get a latest timestamp from pd if commit_ts is set to -1 (the default value).
123. commit_ts: -1
124. # The following configs are used to overwrite the `server_configs.drainer` values.
125. config:
126. syncer.db-type: "tidb"
127. syncer.to.host: "10.0.1.12"
128. syncer.to.user: "root"
129. syncer.to.password: ""
130. syncer.to.port: 4000
131. syncer.to.checkpoint:
132. schema: "tidb_binlog"
133. type: "tidb"
134. host: "10.0.1.14"
135. user: "root"
136. password: "123"
137. port: 4000
138. - host: 10.0.1.13
139. port: 8249
140. deploy_dir: "/tidb-deploy/drainer-8249"
141. data_dir: "/tidb-data/drainer-8249"
142. # If Drainer does not have a checkpoint, use the initial commitTS as the initial checkpoint.
143. # If commit_ts is set to -1 (the default value), you will get a latest timestamp from PD.
144. commit_ts: -1
145. # The following configurations are used to overwrite the `server_configs.drainer` values.
146. config:
147. syncer.db-type: "kafka"
148. syncer.replicate-do-db:
149. - db1
150. - db2
151. syncer.to.kafka-addrs: "10.0.1.20:9092,10.0.1.21:9092,10.0.1.22:9092"
152. syncer.to.kafka-version: "2.4.0"
153. syncer.to.topic-name: "asyouwish"
155. monitoring_servers:
156. - host: 10.0.1.10
157. # ssh_port: 22
158. # port: 9090
159. # deploy_dir: "/tidb-deploy/prometheus-8249"
160. # data_dir: "/tidb-data/prometheus-8249"
161. # log_dir: "/tidb-deploy/prometheus-8249/log"
163. grafana_servers:
164. - host: 10.0.1.10
165. # port: 3000
166. # deploy_dir: /tidb-deploy/grafana-3000
168. alertmanager_servers:
169. - host: 10.0.1.10
170. # ssh_port: 22
171. # web_port: 9093
172. # cluster_port: 9094
173. # deploy_dir: "/tidb-deploy/alertmanager-9093"
174. # data_dir: "/tidb-data/alertmanager-9093"
175. # log_dir: "/tidb-deploy/alertmanager-9093/log"
以上 TiDB 集群拓扑文件中,详细的配置项说明见通过 TiUP 部署 TiDB 集群的拓扑文件配置。
关键参数介绍
拓扑配置模版的关键参数如下:
server_configs.tidb.binlog.enable: true
开启 TiDB Binlog 服务,默认为 false。
- server_configs.tidb.binlog.ignore-error: true
高可用场景建议开启,如果设置为 true,发生错误时,TiDB 会停止写入 TiDB Binlog,并且在监控项 tidb_server_critical_error_total 上计数加 1;如果设置为 false,一旦写入 TiDB Binlog 失败,会停止整个 TiDB 的服务。
- drainer_servers.config.syncer.db-type
TiDB Binlog 的下游类型,目前支持 mysql、tidb、kafka 和 file。
- drainer_servers.config.syncer.to
TiDB Binlog 的下游配置。根据 db-type 的不同,该选项可配置下游数据库的连接参数、Kafka 的连接参数、文件保存路径。详细说明可参见 TiDB Binlog 配置说明。

注意
- 编辑配置文件模版时,如无需自定义端口或者目录,仅修改 IP 即可。
- 无需手动创建配置文件中的
tidb用户,TiUP cluster 组件会在目标主机上自动创建该用户。可以自定义用户,也可以和中控机的用户保持一致。 - 如果部署目录配置为相对路径,会部署在用户的 Home 目录下。
