Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MySQL5.6でGTIDを試してそっと閉じた

16,661 views

Published on

MySQL Casual Talks #5 で話した、MySQL5.6でGTIDを試してそっと閉じたお話です。

  • Be the first to comment

MySQL5.6でGTIDを試してそっと閉じた

  1. 1. MySQL5.6でGTIDを試し てそっと閉じた Yuryu @ MySQL Casual Talks #5 2013/10/25
  2. 2. あらすじ  自己紹介  GTIDとは  マスタ切り替えの流れ  GTIDの利点と欠点  ふつごうとのそうぐう  まとめ
  3. 3. Disclaimer  この発表の内容は所属組織としての見解で はありません  情報の正確性を保つように努めていますが、 間違ってても許してください  そして教えてください  転んでも泣かない
  4. 4. 自己紹介
  5. 5. 自己紹介  名前: 岩尾 はるか (Yuryu)  職業: DevOpsエンジニア(自称)  2013年7月から(株)フリークアウトに所属  副業で光の戦士(白魔道士)  MySQL歴は1年半+α  出身は大阪府
  6. 6. GTIDとは
  7. 7. GTIDとは  MySQL 5.6 で導入された新機能  Global Transaction ID  トランザクションごとに固有のIDを付与  <サーバーのUUID>:<通し番号>  自分がどこまで実行したかを記録  GTID_Executed  クラスタレベルでの一貫性を保証
  8. 8. サーバーごとにUUIDを付与 Master UUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652 Slaves UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4
  9. 9. 自分がどこまで実行したかを記録 Master UUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 Slaves UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1 UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2
  10. 10. GTID関係の変数  Show variables でみるもの  GTID_Next  GTID_Executed  GTID_Purged  SHOW SLAVE STATUS でみるもの  Executed_Gtid_Set  Retrieved_Gtid_Set (MASTER STATUSにも登場)
  11. 11. GTID_Next  次に実行するトランザクションのID  <UUID>:<番号>  40bbcf9b-e556-45b0-bdb3-e528f0041652:123  デフォルト値はAUTOMATIC  自分のサーバーUUIDをもとに連番が生成  Binlog内で指定される  マスターと同じGTIDを指定するため
  12. 12. Binlogの例 SET @@SESSION.GTID_NEXT= 'a8679745-1864-11e3-a1ec28924a2bea1c:14'/*!*/; SET TIMESTAMP=1378641904/*!*/; BEGIN BINLOG ' 8GcsUhMKAAAAMAAAAOEKAAAAAEYAAAAAAAEABXl1cnl1AAR0ZXN0A AEIAADJonx1 8GcsUh4KAAAALAAAAA0LAAAAAEYAAAAAAAEAAgAB//4RAAAAAAAA AOc/BE4= '/*!*/; COMMIT/*!*/;
  13. 13. GTID_Executed  実行(commit)したトランザクション  <UUID>:<Start>-<End>[:<Start>-<End>…]  40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2  Executed_Gtid_Set も同じ内容  Exec_Master_Log_Pos に近い意味  ただし自分自身のトランザクションも記録
  14. 14. GTID_Purged  バイナリログから消えたトランザクション  <UUID>:<Start>-<End>[:<Start>-<End>…]  GTID_Executed と同じ形式  バイナリログが一周すると増えていく
  15. 15. Retrieved_Gtid_Set  マスターから受信したトランザクション  <UUID>:<Start>-<End>[:<Start>-<End>…]  GTID_Executed と同じ形式  Read_Master_Log_Pos に近い役割
  16. 16. マスタ切り替えの流れ
  17. 17. 今回使用するクラスタ Master UUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 Slaves UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1 UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2
  18. 18. マスタfailから新スレーブ決定 Master UUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 Slaves UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1 UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2
  19. 19. CHANGE MASTER 後 New Master UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 Slaves UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1
  20. 20. 新マスターでトランザクション実行後 New Master UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 Slaves UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3
  21. 21. マスタ変更前のスレーブのコピーを追加 New Master UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 Slaves UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 UUID: 60746b02-bc87-4574-aa23-95f0631e4fef GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3
  22. 22. すべてが同期した状態へ New Master UUID: 8560bec3-4639-4b73-91e8-c93b559efa73 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 Slaves UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 UUID: 60746b02-bc87-4574-aa23-95f0631e4fef GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3 UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687 GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2 8560bec3-4639-4b73-91e8-c93b559efa73:1-3
  23. 23. GTIDの利点と欠点
  24. 24. GTIDの利点  すべてのトランザクションが一意に識別可  GTID_Executedが同一ならば一貫性を保証  Binlogのポジションを自動決定  CHANGE MASTER TO… MASTER_AUTO_POSITION=1  スレーブがマスタに昇格しても大丈夫
  25. 25. 利点: MySQL Workbench対応  mysqlfailover  監視+自動でマスタ切り替え  mysqlrpladmin  手動でマスタ切り替え  自動でスレーブを選んでくれる
  26. 26. GTIDの欠点  クラスタ内でGTID有効/無効の混在不可  全ノード停止→再起動が必要  MyISAMが使えない  まだ枯れていない  運用ノウハウの不足  「それってMHAでもできるよね」
  27. 27. ふつごうとのそうぐう
  28. 28. ふつごうとのそうぐう  FLUSH LOGS でレプリケーションが止まる (5.6.11のみ)  転送中のトランザクションがSTOP/START SLAVEでスキップ(未修正)  ネットワークが切断されると転送中のトラ ンザクションがスキップ(未修正)
  29. 29. FLUSH LOGS でレプリケーションが止まる  GTID を有効にした状態でマスターに FLUSH LOGS を発行するとレプリケーションが停止  GTID_NEXT が AUTOMATIC でない時に暗黙 のトランザクションを禁止しようとして、 副作用として発生  5.6.11 のみの不都合(5.6.12で修正)
  30. 30. 転送中のトランザクションが STOP/START SLAVEでスキップ  (大きな)トランザクションを転送中に STOP SLAVE IO_THREAD すると、次に再開した時 にそのトランザクションがスキップされる  今のところ未修正  http://bugs.mysql.com/bug.php?id=69943
  31. 31. ネットワークが切断されると転送 中のトランザクションがスキップ  再接続した時に実行されないトランザク ションが発生する  一つ前のバグと似たようなバグ?  今のところ未修正  http://bugs.mysql.com/bug.php?id=69758
  32. 32. まとめ
  33. 33. GTIDでできること  すべてのトランザクションを一意に識別  クラスタ単位での一貫性を保証  バイナリログのポジションを自動決定  mysqlrpladmin / mysqlfailover を利用した マスタ切り替え
  34. 34. GTIDで困ること  サービスを止めないと有効にできない  まだ大きいバグがある  運用ノウハウが不足
  35. 35. 私たちの現在の方向性  現在GTIDを有効にする利点は少ない  HAはMHAで実現できる  将来状況が変われば使えるように勉強する
  36. 36. Thank you! / Questions?

×