相比于5.5,5.6的新特性很多,其中复制的新特性中支持GTID复制。
个人毫不留情地觉得应该复制调整为基于GTID的复制。
因为其提供了复制更多的灵活性。
详见:http://blog.csdn.net/q3dxdx/article/details/50953289
另外,slave库在接收到gtid时,要同本地的gtid_executed和gtid_purged对比。
如果发现该gtid以及被executed或者被purged,那么会跳过该gtid对应的event。
所以我们在基于gtid复制环境中添加slave库时,在配置复制master(CHANGE MASTER TO)之前,一定要手工设置gtid_purged。
而在设置gtid_purged之前,gtid_executed必须为空。
所以在设置gtid_purged之前,必须执行reset master,让binlog重置(也就是置空了gtid_executed)。
这样才能让slave库知道自己已经“执行”了哪些gtid。
也可以在启动gtid的数据库上使用mysqldump全库导出时,加上(默认也加上)--set-gtid-purged=auto参数。
该参数会让导出文件里注明gtid_purged值,类如:
SET @@GLOBAL.GTID_PURGED='e2e2f927-e75c-11e5-ac89-5c260a17ccde:1-16941';
这个gtid-sets就是导出库导出时的gtid_executed值。
这会让新的slave库知道自己应该跳过哪些gtid。