mysql:9789
From: Yasumitsu Ito <Yasumitsu Ito <y-ito@xxxxxxxxxx>>
Date: Wed, 7 Jul 2004 15:33:36 +0900
Subject: [mysql 09789] レプリケーションスレーブの能動的な同期
伊藤と申します。
レプリケーションについてお聞きしたいことがあります。
レプリケーションスレーブが同期していないことを気づいたときに、
スレーブ側から能動的に同期を取りに行く方法を探しています。
[環境]
mysql-4.0.18-*.rpm  (mysql.comから取得したRPM)
*master
TurboLinux 8.0WS
常時接続 固定IP
*slave
VineLinux 2.6r4
ダイアルアップルータを介して 64Kで接続
マスター-スレーブ 間はインターネットを介しており、
stunnel-4.04にてSSL暗号化しています。
(ここではstunnelについては除外して書きます)
[問題点]
何らかの原因で、ネットワークが切断されるため、
同期がとれず、同期回復まで待たなければならない。
そこで、スレーブから能動的に同期をあわせたい。
[質問]
スレーブ側で
slave$ mysql --user=root --password=pass -e "show slave status"
slave$ mysql --user=slave_account --host=master --password=pass -e "show master status"
を行い、ポジションの違いを発見した場合に、
slave$ mysql_synchronise
の様な自作コマンドを発行して、強制的に同期をあわせる作業を行いたい。
たとえば、その中身を
slave mysql> slave stop;
slave mysql> slave start;
slave mysql> select master_pos_wait('master_log_file', master_log_pos);
などと考えるのですが、どうでしょうか?
強引な方法に感じるのですが。
もっとスマートな方法はあるのでしょうか?
LANケーブルを引っこ抜いてしまったあとに、
slave stop;
slave start;
を実行しても、すんなりと通ってしまったり、
逆に slave stop; を実行したときにプロンプトがかえってくるまでに
非常に多くの時間がかかったりと、
いまいち挙動が掴めていないのが現状です。
slave_net_timeout の時間を小さくする方法も考えられますが、
あまり小さな値では、無駄なトラフィックを生むだけのような気がします。
デフォルトでは3600秒になっているのですが、
たとえば、これを10秒などとしてしまうと、なにか弊害があったりするのでしょうか?
よろしくお願いいたします。
-> 9789 2004-07-07 15:33 [Yasumitsu Ito <y-ito] レプリケーションスレーブの能動的な同期 9790 2004-07-07 21:58 ┣["Ohashi Koji" <ohash] mysqldumpの出力結果を取り込もうとするとUnknwon command 9804 2004-07-09 19:06 ┗["HIROSE, Masaaki" <h] 9805 2004-07-09 23:43 ┗[Yasumitsu Ito <y-ito] 9845 2004-07-14 00:22 ┗[Yasumitsu Ito <y-ito] 9866 2004-07-16 00:08 ┗["HIROSE, Masaaki" <h]