异地多活回环同步问题解决方案
1. 异地多活:一般为两地三中心或者三地五中心,这样设计是为了在发生单点故障或网络分区时,集群能继续提供服务。两地三中心可以容忍机房级别灾难,三地五中心可以容忍城市级别灾难。
2. 回环同步:例如数据库A、B双向同步,A上发生的写操作同步到B,B又将此操作同步回A,可能产生无限循环。
解决方案:利用MySQL的GTID,A上发生数据修改产生binlog日志时,每个事务会生成一个GTID,B同步A的binlog日志时,读取日志中的GTID并写入到自己的binlog中,A再同步B的binlog日志时,读取到日志中的GTID,发现是自己已经执行过的事务,会自动忽略。