MySQL 实例间的双向同步 本文介绍了如何通过数据传输服务DTS在其他云数据库与天翼云关系数据库MySQL版间实现数据双向同步。 前提条件 源库要求 正向同步(源库同步至目标库)所需权限: 对MySQL库的查询权限。 对待迁移库的查询权限。 部分全局权限:RELOAD、LOCK TABLES、REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、PROCESS。 如果是整实例迁移,需要对所有数据库的查询权限。 反向同步(目标库同步至源库)所需权限为以下全局权限: ALTER、ALTER ROUTINE、CREATE、CREATE ROUTINE、CREATE TEMPORARY TABLES、CREATE USER、CREATE VIEW、DELETE、DROP、EVENT、EXECUTE、INDEX、INSERT、LOCK TABLES、PROCESS、REFERENCES、RELOAD、SELECT、SHOW DATABASES、SHOW VIEW、TRIGGER、UPDATE。 其他要求: 在磁盘空间允许的情况下,建议数据库binlog保存时间越长越好,建议为3天。 数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。 数据库expirelogsdays参数值为0,可能会导致同步失败。 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。 必须设置MySQL数据库的serverid。如果数据库版本小于或等于MySQL5.6,serverid的取值范围在2-4294967296之间;如果数据库版本大于或等于MySQL5.7,serverid的取值范围在1-4294967296之间。 数据库GTID状态建议为开启状态,数据库实例没有开启GTID的情况下数据传输服务DTS不支持主备HA切换,因为数据传输服务DTS任务会因为位点不续接而中断导致无法恢复。 数据库必须有足够的磁盘空间。 目标库关联RDS数据库的字符集必须与源数据库一致。 源库和目标库的大版本号需保持一致。 数据库必须包含双向同步标记库表(用于解决双向同步数据回环的问题),相关SQL请参考如下语句: sql CREATE DATABASE IF NOT EXISTS retl; CREATE TABLE retl.retlmark ( ID bigint(20) NOT NULL AUTOINCREMENT, CHANNELID int(11) DEFAULT NULL, CHANNELINFO varchar(128) DEFAULT NULL, PRIMARY KEY (ID) ) ENGINEInnoDB AUTOINCREMENT3002 DEFAULT CHARSETutf8;