[前][次][番号順一覧][スレッド一覧]

mysql:14089

From: "Yoshinori Matsunobu" <"Yoshinori Matsunobu" <ymatsunobu@xxxxxxxxxx>>
Date: Wed, 4 Jul 2007 00:45:43 +0900
Subject: [mysql 14089] Re: レプリケーションが一瞬だけ遅れる

松信です。

> > ところで、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]