mysql系列~GTID基礎


一 簡介
  1 在主從首次同步時(master_auto_position=1),slave會通過gtid協議將自己已經執行的gtid set(@@global.gtid_executed)發給master,master比較後從首個未被執行的GTID事務開始主從同步
  2 在每個binlog開頭會記錄已經執行過的gtid集合,這樣的好處是解析binlog就能得到對應已執行過的最大集合
  3 全局的執行gtid_executed是唯一的,適用於整個集羣
  4 一個集羣存在多個主機gtid集合的最有可能情況有兩個
     1 是執行過類似MHA的切換 2 從庫有數據寫入
二 具體參數
   gtid_mode=on
   enforce-gtid-consistency=on #gtid的強約束
   log-slave-updates=1 #5.6需要開啓參數,因爲gtid_executed是記錄在文件中
三 相關表
  1 gtid_purged 被刪除的binlog事務集合
  2 gtid_executed 已經執行過的事務集合
四 備份恢復
  1 gtid_executed包含gtid_purged集合,如果想設置gtid_purged,gtid_executed必須設置爲空.所以執行備份恢復時必須先清空gtid_executed
  2 清空gtid_executed的辦法就是reset master.當執行完reset masterm,set gtid_purged=''之後,gtid_executed的值也會同步,和手動設置gtid_purged的值一樣
五 DUMP
  1 dump導出GTID模式下的數據默認會設置語句set global gtid_pured=''; 所以記得dump的時候加上 --set-gtid-purged=off
六 在線轉換
  1  mysql 5.7版本支持由傳統模式轉換成GTID的在線切換,反之也能正常切換

七 跳過異常
  stop slave; # 關閉 slave 複製
  SET GTID_NEXT='$GTID_NO'; # 設置 GTID_NEXT 爲複製出錯的 GTID_NO
  begin; commit; # 向 $GTID_NO 寫入空事務
  SET GTID_NEXT="AUTOMATIC"; # 重新設置 GTID_NEXT 爲自動獲取
  start slave; # 啓動 slave 複製

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章