mysql:14090
From: "Katsuyuki Sakai" <"Katsuyuki Sakai" <sakai@xxxxxxxxxx>>
Date: Wed, 4 Jul 2007 01:51:35 +0900
Subject: [mysql 14090] Re: レプリケーションが一瞬だけ遅れる
松信さん、 的確な指摘、ありがとうございます。 てっきりSHOW SLAVE STATUS;時に、毎回マスタ・スレーブ間の時刻差を測定しているものと思いこんでいました(ソースの読み込みが甘かったです)。 参考リソースなど、もう少しソースを読み込んでいきたいと思います。 酒井 On 7/4/07, Yoshinori Matsunobu <ymatsunobu@xxxxxxxxxx> wrote: > 松信です。 > > > > ところで、MySQLのオンラインのマニュアルでは、 > > > 「マスタとスレーブで同一の時計を使用していなくても問題ない。」 > > > とあるのですが、 > > > http://dev.mysql.com/doc/refman/4.1/ja/show-slave-status.html > > > これは、今回のような場合には当てはまらないのですかね? > > > > 5.0.41のソースでSeconds_Behind_Masterを算出する部分は以下のようになってい > ます。 > > sql/slave.cc 2520行目 > > --- > > long time_diff= ((long)((time_t)time((time_t*) 0) > > - mi->rli.last_master_timestamp) > > - mi->clock_diff_with_master); > > --- > > 大ざっばに言うと、 > > (スレーブの現在時刻)-(現在スレーブのSQLスレッドで実行中のSQLがマスタで発行 > された時刻)-(マスタとスレーブの時刻差) > > という式です。 > > なので、マスタとスレーブの時刻差は考慮されているはずなのですが…。 > > (マスタとスレーブの時刻差)は、レプリケーションの開始時点での時刻差になるの > で、 > 開始時点でのマスターとスレーブの時刻の同期が取れていて、 > 運用後の長期経過のうちに時間が大きくずれれば、 > 今回のような現象はあり得ます。 > > 興味があれば、slave.ccの、 > pthread_handler_t handle_slave_io(void *arg) > の中のget_master_version_and_clock(mysql, mi)や、 > そのすぐ後のwhile文を見てみてください。 > > ---- > Yoshinori Matsunobu > Senior Consultant > MySQL AB, www.mysql.com > > MySQL Consulting Services: > http://www-jp.mysql.com/consulting/ > > > >
14084 2007-07-02 21:15 ["橋本健太" <kem@xxxx] レプリケーションが一瞬だけ遅れる 14085 2007-07-03 16:46 ┗["Katsuyuki Sakai" <s] 14086 2007-07-03 21:08 ┗["橋本健太" <kem@xxxx] 14087 2007-07-03 22:07 ┗["Katsuyuki Sakai" <s] 14088 2007-07-03 22:45 ┣[<kenrouse@xxxxxxxxxx] 14089 2007-07-04 00:45 ┗["Yoshinori Matsunobu] -> 14090 2007-07-04 01:51 ┗["Katsuyuki Sakai" <s] 14096 2007-07-05 00:45 ┗["橋本健太" <kem@xxxx]