37
MySQL5.6 で GTID でででで でででででで Yuryu @ MySQL Casual Talks #5 2013/10/25

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Yuryu @ MySQL Casual Talks #5

2013/10/25

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

あらすじ自己紹介GTID とはマスタ切り替えの流れGTID の利点と欠点ふつごうとのそうぐうまとめ

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

Disclaimer

この発表の内容は所属組織としての見解ではありません

情報の正確性を保つように努めていますが、間違ってても許してくださいそして教えてください

転んでも泣かない

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

自己紹介

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

自己紹介名前 : 岩尾 はるか (Yuryu)職業 : DevOps エンジニア ( 自称 )

2013 年 7 月から ( 株 ) フリークアウトに所属副業で光の戦士 ( 白魔道士 )

MySQL 歴は 1 年半 +α出身は大阪府

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

GTID とは

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

GTID とはMySQL 5.6 で導入された新機能Global Transaction IDトランザクションごとに固有の ID を付与

< サーバーの UUID>:< 通し番号 >

自分がどこまで実行したかを記録GTID_Executed

クラスタレベルでの一貫性を保証

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

MasterUUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652

Slaves

UUID: 8560bec3-4639-4b73-91e8-c93b559efa73

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687

サーバーごとに UUID を付与

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

自分がどこまで実行したかを記録

MasterUUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

Slaves

UUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1

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

GTID 関係の変数Show variables でみるもの

GTID_NextGTID_ExecutedGTID_Purged

SHOW SLAVE STATUS でみるものExecuted_Gtid_Set (MASTER STATUS にも登

場 )Retrieved_Gtid_Set

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

GTID_Next

次に実行するトランザクションの ID<UUID>:< 番号 >40bbcf9b-e556-45b0-bdb3-

e528f0041652:123

デフォルト値は AUTOMATIC自分のサーバー UUID をもとに連番が生成

Binlog 内で指定されるマスターと同じ GTID を指定するため

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

Binlog の例SET @@SESSION.GTID_NEXT= 'a8679745-1864-11e3-a1ec-28924a2bea1c:14'/*!*/;

SET TIMESTAMP=1378641904/*!*/;

BEGIN

BINLOG '

8GcsUhMKAAAAMAAAAOEKAAAAAEYAAAAAAAEABXl1cnl1AAR0ZXN0AAEIAADJonx1

8GcsUh4KAAAALAAAAA0LAAAAAEYAAAAAAAEAAgAB//4RAAAAAAAAAOc/BE4=

'/*!*/;

COMMIT/*!*/;

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

GTID_Executed

実行 (commit) したトランザクション<UUID>:<Start>-<End>[:<Start>-

<End>…]40bbcf9b-e556-45b0-bdb3-

e528f0041652:1-2

Executed_Gtid_Set も同じ内容Exec_Master_Log_Pos に近い意味

ただし自分自身のトランザクションも記録

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

GTID_Purged

バイナリログから消えたトランザクション<UUID>:<Start>-<End>[:<Start>-

<End>…]GTID_Executed と同じ形式

バイナリログが一周すると増えていく

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

Retrieved_Gtid_Set

マスターから受信したトランザクション<UUID>:<Start>-<End>[:<Start>-

<End>…]GTID_Executed と同じ形式

Read_Master_Log_Pos に近い役割

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

マスタ切り替えの流れ

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

今回使用するクラスタ

MasterUUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

Slaves

UUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1

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

マスタ fail から新スレーブ決定

MasterUUID: 40bbcf9b-e556-45b0-bdb3-e528f0041652GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

Slaves

UUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1

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

CHANGE MASTER 後

Slaves

New MasterUUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1

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

新マスターでトランザクション実行後

Slaves

New MasterUUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

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

マスタ変更前のスレーブのコピーを追加New MasterUUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

Slaves

UUID: 60746b02-bc87-4574-aa23-95f0631e4fefGTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

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

すべてが同期した状態へNew MasterUUID: 8560bec3-4639-4b73-91e8-c93b559efa73GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

UUID: 9926a039-f11c-4ee5-87d8-6abba9b5fce4GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

UUID: 2e3fc2b5-6546-427b-82fe-d3c2134aa687GTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

Slaves

UUID: 60746b02-bc87-4574-aa23-95f0631e4fefGTID_Executed: 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

8560bec3-4639-4b73-91e8-c93b559efa73:1-3

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

GTID の利点と欠点

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

GTID の利点すべてのトランザクションが一意に識別可

GTID_Executed が同一ならば一貫性を保証Binlog のポジションを自動決定

CHANGE MASTER TO… MASTER_AUTO_POSITION=1

スレーブがマスタに昇格しても大丈夫

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

利点 : MySQL Workbench 対応mysqlfailover

監視+自動でマスタ切り替えmysqlrpladmin

手動でマスタ切り替え自動でスレーブを選んでくれる

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

GTID の欠点クラスタ内で GTID 有効 / 無効の混在不可

全ノード停止→再起動が必要MyISAM が使えないまだ枯れていない運用ノウハウの不足「それって MHA でもできるよね」

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

ふつごうとのそうぐう

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

ふつごうとのそうぐうFLUSH LOGS でレプリケーションが止まる

(5.6.11 のみ )転送中のトランザクションが STOP/START

SLAVE でスキップ ( 未修正 )ネットワークが切断されると転送中のトラ

ンザクションがスキップ ( 未修正 )

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

FLUSH LOGS でレプリケーションが止まるGTID を有効にした状態でマスターに

FLUSH LOGS を発行するとレプリケーションが停止

GTID_NEXT が AUTOMATIC でない時に暗黙のトランザクションを禁止しようとして、副作用として発生

5.6.11 のみの不都合 (5.6.12 で修正 )

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

転送中のトランザクションが STOP/START SLAVEでスキップ

( 大きな ) トランザクションを転送中に STOP SLAVE IO_THREAD すると、次に再開した時にそのトランザクションがスキップされる

今のところ未修正http://bugs.mysql.com/bug.php?id=69

943

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

ネットワークが切断されると転送中のトランザクションがスキップ

再接続した時に実行されないトランザクションが発生する

一つ前のバグと似たようなバグ?今のところ未修正http://bugs.mysql.com/bug.php?id=69

758

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

まとめ

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

GTID でできることすべてのトランザクションを一意に識別クラスタ単位での一貫性を保証バイナリログのポジションを自動決定mysqlrpladmin / mysqlfailover を利用し

たマスタ切り替え

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

GTID で困ることサービスを止めないと有効にできないまだ大きいバグがある運用ノウハウが不足

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

私たちの現在の方向性現在 GTID を有効にする利点は少ないHA は MHA で実現できる将来状況が変われば使えるように勉強する

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

Thank you! / Questions?