MySQL实例间的双向同步 本页为使用数据传输服务DTS进行MySQL实例间数据双向同步的详细介绍,包括双向同步支持的源库、目标库,支持的同步的SQL操作,数据库账号权限说明,源库、目标库要求,操作须知,冲突检测,操作步骤等。 MySQL实例间双向同步支持的源和目标数据库 源数据库 目标数据库 RDS for MySQL 自建 MySQL 5.6部分版本/5.7/8.0 RDS for MySQL 自建 MySQL 5.6部分版本/5.7/8.0 说明 自建MySQL数据库版本为5.6部分版本/5.7/8.0,RDS for MySQL数据库版本为5.7/8.0,且源数据库和目标数据库的大版本需保持一致。 支持同步的SQL操作 DML INSERT、UPDATE、DELETE。 DDL 增量同步的DDL操作仅支持CREATE INDEX、DROP INDEX、ALTER TABLE、TRUNCATE TABLE 和DROP TABLE,如果是整库迁移或同步,支持CREATE TABLE。 说明 1. 暂不支持 CREATE TABLE 表名 AS SELECT 语句。 2. 仅正向同步(源库同步至目标库)支持DDL,反向同步(目标库同步至源库)不支持同步DDL,将自动过滤DDL操作。 数据库账号及权限 MySQL5.7 MySQL5.7双向同步 数据库 所需权限 参考赋权语句 源库 正向同步(源库A同步至目标库B)A库所需权限: 对MySQL库的SELECT权限。 对待迁移库的SELECT,EVENT,TRIGGER权限。 部分全局权限: REPLICATION CLIENT REPLICATION SLAVE SHOW VIEW PROCESS 如果是整实例迁移,需要对所有数据库的查询权限。 反向同步(目标库B同步至源库A)A库所需权限为以下全局权限: ALTER ALTER ROUTINE CREATE CREATE ROUTINE CREATE TEMPORARY TABLES CREATE USER CREATE VIEW DELETE DROP EVENT EXECUTE INDEX INSERT PROCESS REFERENCES SELECT SHOW DATABASES SHOW VIEW TRIGGER UPDATE 正向同步(源库A同步至目标库B)A库参考赋权语句: GRANT SELECT ON mysql. TO '迁移账号'@'%'; GRANT SELECT,EVENT,TRIGGER ON 待迁移的库. TO '迁移账号'@'%'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON . TO '迁移账号'@'%'; 反向同步(目标库B同步至源库A)A库参考赋权语句: GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE ON . TO '迁移账号'@'%'; 目标库 同上 同上 注意 双向同步时,如果待同步对象包含用户自定义function,则在满足上述权限的基础上,源端和目标库数据库都需要将logbintrustfunctioncreators设置为1,参考语句如下: set global logbintrustfunctioncreators 1;