会社の記事に投稿したもの。基本的に下記の値で安定するけれど、きちんと時系列を把握しておいた方が良い。
https://sys-guard.com/post-12263/
もくじ
スレーブからマスターへ接続するSQL文
MySQLのレプリケーションというと下記のようにスレーブからマスターに接続をかけます。
mysql> CHANGE MASTER TO MASTER_HOST='153.xxx.yyy.10', MASTER_USER='replicationuser', MASTER_PASSWORD='パスワード', MASTER_CONNECT_RETRY=10, MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=120;
レプリケーション再接続時の時系列
==+======================+=========================+=========================+========> | | | | | | | | |<-------------------->|<----------------------->|<----------------------->| | slave_net_timeout秒 | master-connect-retry秒 | master-connect-retry秒 | | | (default 60秒) | | | 再接続試行 再接続試行 | | <---------------------------> | master-retry-count回繰り返す | (default 86400回) master停止@see 非同期レプリケーション時のmasterへの再接続の時系列
この図を考慮にいれて値を把握しながら設定していきます。
–slave-net-timeout=秒数
スレーブが読み取りを中止する前に、マスタからのデータを待つ秒数。
スレーブが接続切断と判断して再接続を試行するときのもの。最初の接続試行はタイムアウト直後に行われる。再試行のインターバルは、–master-connect-retry オプションでコントロールできる。再接続の試行回数は –master-retry-count オプションで設定する。デフォルトでは、3600 秒 (1時間)。
@see http://masasuzu.hatenablog.jp/entry/2013/01/18/mysql_master_connect_retry
デフォルトの1時間は長すぎなので、10秒程に設定することが多いです。
–master-connect-retry=秒数
マスタがダウンするか接続不可の場合にマスタへ再接続を試行する前に、スレーブ スレッドがスリープ状態になる秒数。master.info ファイルの値が読み込れる場合、その値が優先される。設定しなければ、デフォルトで 60 秒。
–slave-net-timeout の値に基づくマスタからのデータ読み込みに対してタイムアウトするまで、
スレーブによる再接続の自動呼び出しは行われない。再接続の試行の回数は、–master-retry-count で制限する。
@see http://masasuzu.hatenablog.jp/entry/2013/01/18/mysql_master_connect_retry
60秒は長すぎるので、10秒程に設定することが多いです。
–master-retry-count
(デフォルト:86400回)
@see http://masasuzu.hatenablog.jp/entry/2013/01/18/mysql_master_connect_retry
マスターへのレプリケーション接続試行回数。この値はデフォルトそのままに。
基本的には上記の内容で設定しています。
さらにレプリケーションのヘルスチェックの監視スクリプトを作成し、異常を通知する仕組みをつくると運用として良いです。リスク管理も捗ります。