一、生产环境中:
1、几种复制场景都有存在的价值。下面分别描述一下:
2、从成熟度上来选择,推荐:异步复制(GTID+ROW)。
3、从数据安全及更高性能上选择:增强半同步 (在这个结构下也可以把innodb_flush_log_trx_commit调整到非1, 从而获得更好的性能)。
4、对于主从切换控制觉的不好管理,又对数据一致性要求特别高的场景,可以使用MGR。
二、理由:
1、异步复制,相对来讲非常成熟,对于环境运维也比较容易上手。
2、增强半同步复制,可以安全的保证数据传输到从库上,对于单节点的配置上不用要求太严格,特别从库上也可以更宽松一点,而且在一致性和性能有较高的提升,但对运维上有一定的要求。
3、MGR组复制。相对增强半同步复制,MGR更能确保数据的一致性,事务的提交,必须经过组内大多数节点(n/2+1)决议并通过,才能得以提交。MGR架构对运维难度要更高,不过它也更完美。
4、总的来讲,从技术实现上来看:MGR > 增强半同步 > 异步复制。
5、未来可能见到更多的MGR在生产中使用,对于MySQL的运维的要求也会更上一层楼。