简介
TiDB实战篇-TiDB Binlog实战。
原理
读取流程
MySQL的row格式是影响了多少条就记录多少数据,TiDB 的Binlog默认就是这个。
Pump
Drainer
限制
数据准备
因为Binlog同步就是只会同步最新改变的数据,之前的数据不会同步过来。
操作
扩容
#编写扩容文件
vi scale-out-binlog.yaml
pump_servers:
- host: 192.168.66.10
drainer_servers:
- host: 192.168.66.20
config:
syncer.db-type: "mysql"
syncer.to.host: "192.168.66.10"
syncer.to.user: "root"
syncer.to.password: "root"
syncer.to.port: "3306"
#开始扩容
tiup cluster scale-out tidb-test scale-out-binlog.yaml -uroot -p
开启TiDB的Binlog
show variables like 'log_bin';
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
1 row in set (0.00 sec)
#修改配置
tiup cluster edit-config tidb-test
server_configs:
tikv:
log-level: warning
tidb:
binlog.enable: true
binlog.ignore-error: true
:wq #保存
#重新加载配置文件
tiup cluster reload tidb-test
#连接查看是否开启成功
mysql -uroot -ptidb -h127.0.0.1 -P4000
show variables like 'log_bin';
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)
然后现在只要TiDB数据改变,那么MySQL的数据也会跟着改变了。
Binlog ctl工具
使用
下载
安装
#解压下载好的安装包
tar -zxvf tidb-community-toolkit-v6.5.0-linux-amd64.tar.gz
#进入到文件夹以后解压出dumpling
cd tidb-community-toolkit-v6.5.0-linux-amd64
vi /etc/profile.d/my.sh
#TOOLKIT_HOME
export TOOLKIT_HOME=/root/tidb-community-toolkit-v6.5.0-linux-amd64
export PATH=$PATH:$TOOLKIT_HOME
source /etc/profile.d/my.sh
基本命令
#查看状态
binlogctl -pd-urls=http://192.168.66.21:2379 -cmd pumps
[root@master ~]# binlogctl -pd-urls=http://192.168.66.21:2379 -cmd pumps
[2023/04/22 20:26:39.612 +08:00] [INFO] [nodes.go:53] ["query node"] [type=pump] [node="{NodeID: 192.168.66.10:8250, Addr: 192.168.66.10:8250, State: online, MaxCommitTS: 440969828034150409, UpdateTime: 2023-04-22 20:26:38 +0800 CST}"]
[2023/04/22 20:26:39.612 +08:00] [INFO] [nodes.go:53] ["query node"] [type=pump] [node="{NodeID: 192.168.66.21:8250, Addr: 192.168.66.21:8250, State: online, MaxCommitTS: 440969827798220803, UpdateTime: 2023-04-22 20:26:38 +0800 CST}"]
#暂停对应的状态(同步停止)
binlogctl -pd-urls=http://192.168.66.21:2379 -cmd pause-drainer -node-id 192.168.66.21:8249
查看pump状态
mysql> show pump status;
+--------------------+--------------------+--------+--------------------+---------------------+
| NodeID | Address | State | Max_Commit_Ts | Update_Time |
+--------------------+--------------------+--------+--------------------+---------------------+
| 192.168.66.10:8250 | 192.168.66.10:8250 | online | 440969659646214154 | 2023-04-22 20:15:55 |
| 192.168.66.21:8250 | 192.168.66.21:8250 | online | 440969659397177350 | 2023-04-22 20:15:55 |
+--------------------+--------------------+--------+--------------------+---------------------+
2 rows in set (0.00 sec)
查看drainer状态
mysql> show drainer status;