MySQL semi-synchronous replication メモ

構築の参考にさせて頂いたサイト。

Semisynchronous Replication (半同期レプリケーション?)を試してみた - yoshifumi1975's diary
MySQL 5.5 GA版が出たのでSemisynchronous Replicationを使ってみた · As a Futurist...

構築出来てレプリケーションが開始されている状態で、
semi-synchronous replication なのかどうかを確認する。

参考にさせて頂いたサイトにテスト方法が載っていたので試す。

semi-synchronous replication の特徴は
Slave側のリレーログに書き込みが完了した時点でAckが送信される。
Master側はこのAckを待つ、という点。

テスト方法

Slave側のレプリケーションを止めておいて、
Master側で書き込みを行いコミットした時。

Slave側のレプリケーションが動作していないのでAckが来ず、
設定されたタイムアウト時間まで処理が返事待ちの状態になるはず。

上のような状態を作り出して、試してみたのですが。
何故かMaster側で処理が待ち状態にならず、完了してしまいました。

設定やレプリケーションの状態を確認する

参考にさせて頂いたサイト
MySQL5.5 Semisynchronous Replicationを試してみる ~構築編 | QK
MySQL 5.5 の Semi-sync. を Windows 上で試してみた - sakaikの日々雑感~(T)編

正常にプラグインが設定されたか確認する

mysql> show plugins;

準同期レプリケーションを設定しているサーバ変数が
どのようになっているか確認する

mysql> show variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | OFF   |
| rpl_semi_sync_master_timeout       | 10000 |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+

semi-synchronous replication の状態

mysql> SHOW STATUS LIKE "rpl%";

Master側のステータス
バイナリログのファイル名と書き込み位置を表示する

mysql> show master status;

Slave側のステータス
Masterのバイナリログをどこまで読んだか、どこまで実行したか、
レプリケーションの状態などが表示される

通常の書き方だと表示が崩れる
読みにくいので末尾に\Gをつける

mysql> show slave status\G

一応レプリケーションの状態を見る限り、
semi-synchronous replication が出来ている状態と見て良さそう。

実際にAckが帰ってくるのを待つかどうか、見たかったけど断念するしか無さそう。