TIDB - 使用 TiDB Binlog 实现数据复制
Posted 小毕超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TIDB - 使用 TiDB Binlog 实现数据复制相关的知识,希望对你有一定的参考价值。
一、TiDB Binlog简介
TiDB Binlog 是一个用于收集 TiDB 的 binlog,并提供准实时备份和同步功能的工具,可以理解为mysql 的 Binlog 主从服务模式,并且TiDB Binlog还支持将数据发送到Kafka中,这又类似与Canal中间件。目前TIDB Binlog集群主要分为 Pump 和 Drainer 两个组件,以及 binlogctl 工具。
TiDB Binlog 整体架构
注意:
TiDB Binlog 与 TiDB v5.0 版本开始引入的一些特性不兼容,无法一起使用,建议使用 TiCDC 替代 TiDB Binlog。TiCDC在后面的文章中也会讲到。
下面实现TIDB 到 Mysql的数据复制。
二、在集群中扩容出pump和drainer
当前的集群情况:
tiup cluster display tidb-test
一台tidb-server,三台tikv-server,三台pd-server。
并在mysql中创建和Tidb相同的库和表结构。
1. 在mysq数据库中,添加同步用户
创建用户
create user 'tidb' identified by 'tidb123';
赋予权限
grant all privileges on *.* to 'tidb';
2. 编写scale-out-binlog.yaml文件
vi scale-out-binlog.yaml
填写下面内容:
pump_servers:
- host: 192.168.40.160
config:
gc: 7
drainer_servers:
- host: 192.168.40.162
config:
syncer.db-type: "mysql"
syncer.to.host: "www.bixc.net"
syncer.to.user: "tidb"
syncer.to.password: "tidb123"
syncer.to.port: 3307
#kafka配置
#syncer.db-type: "kafka"
#syncer.to.kafka-addrs: "127.0.0.1:9092"
#syncer.to.kafka-version: "0.8.2.0"
注意pump_servers,要和tidb-server在一个节点。
3. 开始扩容
tiup cluster scale-out tidb-test scale-out-binlog.yaml -u root -p
从打印日志可以看出已经扩容成功,下面看下集群状态:
tiup cluster display tidb-test
这样 pump 和 drainer 就已经部署好了,但是如果试下在tidb中添加数据,并不会同步给mysql,此时是因为Tidb集群需要开启binlog。
开启binlog
tiup cluster edit-config tidb-test
添加下面东西:
server_configs:
tidb:
binlog.enable: true
binlog.ignore-error: true
重载配置文件:
tiup cluster reload tidb-test
重新配置后,可以在Tidb客户端,查看binlog开启状态:
show variables like "log_bin";
ON即为开启状态。
看下pump和drainer的状态:
show pump status;
show drainer status;
状态都为online在线状态。
三、测试数据同步
在TIDB中添加一行数据:
在mysql中查看数据:
已经同步成功了。
四、binlogctl使用
1. 安装binlogctl
wget https://download.pingcap.org/tidb-v5.0.0-linux-amd64.tar.gz
tar xvf tidb-v5.0.0-linux-amd64.tar.gz
cd tidb-v5.0.0-linux-amd64/bin/
查看 pump 节点的状态
./binlogctl -pd-urls=http://192.168.40.160:2379 -cmd pumps
查看 drainer 节点的状态
./binlogctl -pd-urls=http://192.168.40.160:2379 -cmd drainers
暂停 drainer 节点
./binlogctl -pd-urls=http://192.168.40.160:2379 -cmd pause-drainer -node-id
重新启动drainer,进入安装drainer主机:
cd /tidb-deploy/drainer-8249/bin/
./drainer -pd-urls=http://192.168.40.160:2379 -config ../conf/drainer.toml
喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!
以上是关于TIDB - 使用 TiDB Binlog 实现数据复制的主要内容,如果未能解决你的问题,请参考以下文章
TIDB - 使用 TiDB Binlog 将日志同步至下游 Kafka 中
TIDB - 使用 TICDC 将数据同步至下游 Mysql 中
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB