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

16,211 views

Published on

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

0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
16,211
On SlideShare
0
From Embeds
0
Number of Embeds
8,759
Actions
Shares
0
Downloads
23
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

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?

×