一、数据增量同步
我们之前搞定了如何使用 mydumper/loader 将 MySQL 的数据全量导入到 TiDB,但如果后续 MySQL 的数据有更新,我们仍然希望快速导入,这时候使用全量的方式就不合适了。
TiDB 提供 syncer 工具能方便的将 MySQL 的数据增量的导入到 TiDB 里面。
步骤同样需要下载工具集,由于这里是测试环境,工具集已经下载了,所以直接用即可
二、场景描述
之前我们已经使用 mydumper/loader 导入了reports 数据库中 RMAN_USERGROUPHISTORY这张表的数据,现在我们希望这两张表的任何更新,更新的数据都是实时的同步到 TiDB 上面。
三、同步工具
TiDB 数据同步用 Syncer 进行操作,Syncer 是一个数据导入工具,能方便地将 MySQL 的数据增量导入到 TiDB。Syncer 包含在 tidb-enterprise-tools 安装包中,下载地址
1、Syncer 架构
2、Syncer 部署位置
Syncer 可以部署在任一台可以连通对应的 MySQL 和 TiDB 集群的机器上,推荐部署在 TiDB 集群。
四、Syncer 同步前预检查了
数据在同步前需要进行预检查,如果参数或者状态不对应数据会同步不成功
1、检查数据库版本,Syncer 只支持以下版本
select @@version
5.5 < MySQL 版本 < 5.8
MariaDB 版本 >= 10.1.2 #(更早版本的 binlog 部分字段类型格式与 MySQL 不一致)
2、检查源库 server-id
show global variables like 'server_id';
结果为空或者为 0,Syncer 无法同步数据。
Syncer server-id 与 MySQL server-id 不能相同,且必须在 MySQL cluster 中唯一。
3、检查 Binlog 相关参数
Binlog 是Mysql的二进制文件
a、它的开启用于数据增量备份
b、用于主从复制,mysql注节点维护了一个binlog日志文件,从节点从binlog中同步数据
1)检查 Mysql 的 Binlog 是否开启,使用如下命令确认开启
show global variables like 'log_bin';
如果结果是 log_bin = OFF,则需要开启 binlog,详情请见 Mysql 开启 Binlog
4、检查 MySQL binlog 格式是否为 ROW
binlog 格式必须为 ROW,且参数 binlog_row_image 必须设置为 FULL,可使用如下命令查看参数设置:
show global variables like 'binlog_format'