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