相比於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。