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

Emma Haruka Iwao
Emma Haruka IwaoDeveloper Advocate
MySQL5.6でGTIDを試し
てそっと閉じた
Yuryu @ MySQL Casual Talks #5
2013/10/25
あらすじ
 自己紹介
 GTIDとは

 マスタ切り替えの流れ
 GTIDの利点と欠点
 ふつごうとのそうぐう
 まとめ
Disclaimer
 この発表の内容は所属組織としての見解で

はありません
 情報の正確性を保つように努めていますが、

間違ってても許してください
 そして教えてください

 転んでも泣かない
自己紹介
自己紹介
 名前:

岩尾 はるか (Yuryu)

 職業:

DevOpsエンジニア(自称)

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

 MySQL歴は1年半+α

 出身は大阪府
MySQL5.6でGTIDを試してそっと閉じた
GTIDとは
GTIDとは
 MySQL

5.6 で導入された新機能
 Global Transaction ID
 トランザクションごとに固有のIDを付与
 <サーバーのUUID>:<通し番号>

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

 クラスタレベルでの一貫性を保証
サーバーごとに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
自分がどこまで実行したかを記録
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
GTID関係の変数
 Show

variables でみるもの

 GTID_Next
 GTID_Executed
 GTID_Purged

 SHOW

SLAVE STATUS でみるもの

 Executed_Gtid_Set
 Retrieved_Gtid_Set

(MASTER STATUSにも登場)
GTID_Next
 次に実行するトランザクションのID
 <UUID>:<番号>
 40bbcf9b-e556-45b0-bdb3-e528f0041652:123

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

 Binlog内で指定される
 マスターと同じGTIDを指定するため
Binlogの例
SET @@SESSION.GTID_NEXT= 'a8679745-1864-11e3-a1ec28924a2bea1c:14'/*!*/;
SET TIMESTAMP=1378641904/*!*/;
BEGIN
BINLOG '
8GcsUhMKAAAAMAAAAOEKAAAAAEYAAAAAAAEABXl1cnl1AAR0ZXN0A
AEIAADJonx1
8GcsUh4KAAAALAAAAA0LAAAAAEYAAAAAAAEAAgAB//4RAAAAAAAA
AOc/BE4=
'/*!*/;
COMMIT/*!*/;
GTID_Executed
 実行(commit)したトランザクション
 <UUID>:<Start>-<End>[:<Start>-<End>…]
 40bbcf9b-e556-45b0-bdb3-e528f0041652:1-2

 Executed_Gtid_Set

も同じ内容

 Exec_Master_Log_Pos

に近い意味

 ただし自分自身のトランザクションも記録
GTID_Purged
 バイナリログから消えたトランザクション
 <UUID>:<Start>-<End>[:<Start>-<End>…]
 GTID_Executed

と同じ形式

 バイナリログが一周すると増えていく
Retrieved_Gtid_Set
 マスターから受信したトランザクション
 <UUID>:<Start>-<End>[:<Start>-<End>…]
 GTID_Executed

と同じ形式

 Read_Master_Log_Pos

に近い役割
マスタ切り替えの流れ
今回使用するクラスタ
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
マスタ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
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
新マスターでトランザクション実行後
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
マスタ変更前のスレーブのコピーを追加
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
すべてが同期した状態へ
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
GTIDの利点と欠点
GTIDの利点
 すべてのトランザクションが一意に識別可
 GTID_Executedが同一ならば一貫性を保証

 Binlogのポジションを自動決定
 CHANGE

MASTER TO…
MASTER_AUTO_POSITION=1

 スレーブがマスタに昇格しても大丈夫
利点: MySQL Workbench対応
 mysqlfailover
 監視+自動でマスタ切り替え

 mysqlrpladmin
 手動でマスタ切り替え

 自動でスレーブを選んでくれる
GTIDの欠点
 クラスタ内でGTID有効/無効の混在不可
 全ノード停止→再起動が必要

 MyISAMが使えない
 まだ枯れていない
 運用ノウハウの不足

 「それってMHAでもできるよね」
ふつごうとのそうぐう
ふつごうとのそうぐう
 FLUSH

LOGS でレプリケーションが止まる
(5.6.11のみ)

 転送中のトランザクションがSTOP/START

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

ンザクションがスキップ(未修正)
FLUSH LOGS でレプリケーションが止まる
 GTID

を有効にした状態でマスターに FLUSH
LOGS を発行するとレプリケーションが停止

 GTID_NEXT

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

 5.6.11

のみの不都合(5.6.12で修正)
転送中のトランザクションが
STOP/START SLAVEでスキップ
 (大きな)トランザクションを転送中に

STOP
SLAVE IO_THREAD すると、次に再開した時
にそのトランザクションがスキップされる

 今のところ未修正

 http://bugs.mysql.com/bug.php?id=69943
ネットワークが切断されると転送
中のトランザクションがスキップ
 再接続した時に実行されないトランザク

ションが発生する
 一つ前のバグと似たようなバグ?
 今のところ未修正

 http://bugs.mysql.com/bug.php?id=69758
まとめ
GTIDでできること
 すべてのトランザクションを一意に識別
 クラスタ単位での一貫性を保証

 バイナリログのポジションを自動決定
 mysqlrpladmin

/ mysqlfailover を利用した
マスタ切り替え
GTIDで困ること
 サービスを止めないと有効にできない
 まだ大きいバグがある

 運用ノウハウが不足
私たちの現在の方向性
 現在GTIDを有効にする利点は少ない
 HAはMHAで実現できる

 将来状況が変われば使えるように勉強する
Thank you! / Questions?
1 of 37

More Related Content

What's hot(20)

Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima13K views
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno26.3K views
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要
Shinya Sugiyama14K views
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.53K views
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
Amazon Web Services Japan103.1K views

Viewers also liked(13)

mysqlcasual6-fabricmysqlcasual6-fabric
mysqlcasual6-fabric
doublemarket12.9K views
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7
yoku082514.2K views
mysqlcasual6-next-key-lockmysqlcasual6-next-key-lock
mysqlcasual6-next-key-lock
karupanerura 12.4K views
My sql casual talks vol.6My sql casual talks vol.6
My sql casual talks vol.6
Satoshi Suzuki20.9K views
MHA on AWS+RailsMHA on AWS+Rails
MHA on AWS+Rails
Sugawara Genki11.7K views
N:1 Replication meets MHAN:1 Replication meets MHA
N:1 Replication meets MHA
do_aki11.9K views
TokuDB試してみるTokuDB試してみる
TokuDB試してみる
yoku082515.8K views
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
yoku08257.8K views
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
Takanori Sejima12.9K views

More from Emma Haruka Iwao(20)

Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube Channels
Emma Haruka Iwao1.7K views
Git for Begineers GitHub ハンズオンGit for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオン
Emma Haruka Iwao12.5K views
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
Emma Haruka Iwao5K views
Storage by Red Hat #rhcpday 2015Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015
Emma Haruka Iwao4K views
RHEL, CentOS 7 に移行しよう! LTRHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LT
Emma Haruka Iwao16.3K views
Ceph Loves OpenStack: Why and HowCeph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and How
Emma Haruka Iwao2.3K views
AWS VM import / export ハンズオンAWS VM import / export ハンズオン
AWS VM import / export ハンズオン
Emma Haruka Iwao7.7K views
Hello, systemdHello, systemd
Hello, systemd
Emma Haruka Iwao35.2K views

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