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

mysql:14087

From: "Katsuyuki Sakai" <"Katsuyuki Sakai" <sakai@xxxxxxxxxx>>
Date: Tue, 3 Jul 2007 22:07:53 +0900
Subject: [mysql 14087] 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がマスタで発行された時刻)-(マスタとスレーブの時刻差)
という式です。
なので、マスタとスレーブの時刻差は考慮されているはずなのですが…。

--
酒井

On 7/3/07, 橋本健太 <kem@xxxxxxxxxx> wrote:
> 酒井君、お久しぶりです。
>
> ご指摘の通り、調べてみたところ、マスター側での時間がずれていました。
> マスター側のサーバのntpd が止まってしまっていたことが原因でした。
> 時間のずれが追い付いたあたりで、もう一度試してみたいと思います。
>
> ありがとうございます。
>
> ところで、MySQLのオンラインのマニュアルでは、
> 「マスタとスレーブで同一の時計を使用していなくても問題ない。」
> とあるのですが、
> http://dev.mysql.com/doc/refman/4.1/ja/show-slave-status.html
> これは、今回のような場合には当てはまらないのですかね?
>
> 07/07/03 に Katsuyuki Sakai<sakai@xxxxxxxxxx> さんは書きました:
> > 酒井と申します。
> >
> > masterとslaveの時刻は同期していますでしょうか(MySQL
> > 5.0.41のソースを読む限り、masterとslaveの時刻差はSeconds_Behind_Master表示時に補正されているように見えますが)。
> > また
> > SELECT UNIX_TIMESTAMP();
> > をmasterとslaveで同時に実行した際の値はどのようになるか、教えていただけますでしょうか。
> >
> > --
> > 酒井
> >
> > On 7/2/07, 橋本健太 <kem@xxxxxxxxxx> wrote:
> > > クックパッドの橋本と申します。
> > > いつもお世話になっております。
> > >
> > > CentOS4.3上で、
> > > マスターがMySQL 4.1.12、スレーブがMySQL 5.0.41のシステムで、
> > > レプリケーションを行っているのですが、不可解な現象に悩まされております。
> > >
> > > スレーブでSHOW SLAVE STATUS したときに、Seconds_Behind_Masterが、
> > > 一瞬だけ、150秒ほどになったりもどったりするという現象です。
> > >
> > > 1〜2秒の隙間を開けて、4回連続でSHOW SLAVE STATUSしたところ、
> > > 以下のようになりました。
> > > (パラメータは一部の抜粋です。省略なしのものを、メールの最後に載せます。)
> > >
> > > mysql> show slave status \G
> > >         Read_Master_Log_Pos: 150756503
> > >               Relay_Log_Pos: 151129280
> > >         Exec_Master_Log_Pos: 150753080
> > >             Relay_Log_Space: 151132727
> > >       Seconds_Behind_Master: 167
> > >
> > > mysql> show slave status \G
> > >         Read_Master_Log_Pos: 150772717
> > >               Relay_Log_Pos: 151149027
> > >         Exec_Master_Log_Pos: 150772717
> > >             Relay_Log_Space: 151149027
> > >       Seconds_Behind_Master: 0
> > >
> > > mysql> show slave status \G
> > >         Read_Master_Log_Pos: 150808337
> > >               Relay_Log_Pos: 151183739
> > >         Exec_Master_Log_Pos: 150807249
> > >             Relay_Log_Space: 151184835
> > >       Seconds_Behind_Master: 167
> > >
> > > mysql> show slave status \G
> > >         Read_Master_Log_Pos: 150819730
> > >               Relay_Log_Pos: 151196286
> > >         Exec_Master_Log_Pos: 150819730
> > >             Relay_Log_Space: 151196286
> > >       Seconds_Behind_Master: 0
> > >
> > > この様に、数秒の間に、Seconds_Behind_Masterが、遅れたり、
> > > 戻ったりを繰り返すのですが、同じような現象に会ったことがある方、
> > > 原因の見当がつくかたなどいらっしゃいますでしょうか。
> > >
> > > ネットワークの遅延などがあるのかとも思ったのですが、遅れて
> > > 戻った直後に、また同じだけ遅れたりしているので、
> > > 原因はまた、ほかの場所にあるのではないかと思っております。、
> > >
> > > お知恵をお貸しいただけると助かります。
> > > よろしくお願いいたします。
> > >
> > >
> > > ---- show slave status を4回行った結果 ----
> > > mysql> show slave status \G
> > > *************************** 1. row ***************************
> > >              Slave_IO_State: Waiting for master to send event
> > >                 Master_Host: 192.168.1.100
> > >                 Master_User: repl
> > >                 Master_Port: 3306
> > >               Connect_Retry: 60
> > >             Master_Log_File: masterdb-bin.001869
> > >         Read_Master_Log_Pos: 150756503
> > >              Relay_Log_File: slave5-relay-bin.001151
> > >               Relay_Log_Pos: 151129280
> > >       Relay_Master_Log_File: masterdb-bin.001869
> > >            Slave_IO_Running: Yes
> > >           Slave_SQL_Running: Yes
> > >             Replicate_Do_DB:
> > >         Replicate_Ignore_DB:
> > >          Replicate_Do_Table:
> > >      Replicate_Ignore_Table:
> > >     Replicate_Wild_Do_Table: db1.%,db1.%
> > > Replicate_Wild_Ignore_Table:
> > >                  Last_Errno: 0
> > >                  Last_Error:
> > >                Skip_Counter: 0
> > >         Exec_Master_Log_Pos: 150753080
> > >             Relay_Log_Space: 151132727
> > >             Until_Condition: None
> > >              Until_Log_File:
> > >               Until_Log_Pos: 0
> > >          Master_SSL_Allowed: No
> > >          Master_SSL_CA_File:
> > >          Master_SSL_CA_Path:
> > >             Master_SSL_Cert:
> > >           Master_SSL_Cipher:
> > >              Master_SSL_Key:
> > >       Seconds_Behind_Master: 167
> > > 1 row in set (0.00 sec)
> > >
> > > mysql> show slave status \G
> > > *************************** 1. row ***************************
> > >              Slave_IO_State: Waiting for master to send event
> > >                 Master_Host: 192.168.1.100
> > >                 Master_User: repl
> > >                 Master_Port: 3306
> > >               Connect_Retry: 60
> > >             Master_Log_File: masterdb-bin.001869
> > >         Read_Master_Log_Pos: 150772717
> > >              Relay_Log_File: slave5-relay-bin.001151
> > >               Relay_Log_Pos: 151149027
> > >       Relay_Master_Log_File: masterdb-bin.001869
> > >            Slave_IO_Running: Yes
> > >           Slave_SQL_Running: Yes
> > >             Replicate_Do_DB:
> > >         Replicate_Ignore_DB:
> > >          Replicate_Do_Table:
> > >      Replicate_Ignore_Table:
> > >     Replicate_Wild_Do_Table: db1.%,db1.%
> > > Replicate_Wild_Ignore_Table:
> > >                  Last_Errno: 0
> > >                  Last_Error:
> > >                Skip_Counter: 0
> > >         Exec_Master_Log_Pos: 150772717
> > >             Relay_Log_Space: 151149027
> > >             Until_Condition: None
> > >              Until_Log_File:
> > >               Until_Log_Pos: 0
> > >          Master_SSL_Allowed: No
> > >          Master_SSL_CA_File:
> > >          Master_SSL_CA_Path:
> > >             Master_SSL_Cert:
> > >           Master_SSL_Cipher:
> > >              Master_SSL_Key:
> > >       Seconds_Behind_Master: 0
> > > 1 row in set (0.00 sec)
> > >
> > > mysql> show slave status \G
> > > *************************** 1. row ***************************
> > >              Slave_IO_State: Waiting for master to send event
> > >                 Master_Host: 192.168.1.100
> > >                 Master_User: repl
> > >                 Master_Port: 3306
> > >               Connect_Retry: 60
> > >             Master_Log_File: masterdb-bin.001869
> > >         Read_Master_Log_Pos: 150808337
> > >              Relay_Log_File: slave5-relay-bin.001151
> > >               Relay_Log_Pos: 151183739
> > >       Relay_Master_Log_File: masterdb-bin.001869
> > >            Slave_IO_Running: Yes
> > >           Slave_SQL_Running: Yes
> > >             Replicate_Do_DB:
> > >         Replicate_Ignore_DB:
> > >          Replicate_Do_Table:
> > >      Replicate_Ignore_Table:
> > >     Replicate_Wild_Do_Table: db1.%,db1.%
> > > Replicate_Wild_Ignore_Table:
> > >                  Last_Errno: 0
> > >                  Last_Error:
> > >                Skip_Counter: 0
> > >         Exec_Master_Log_Pos: 150807249
> > >             Relay_Log_Space: 151184835
> > >             Until_Condition: None
> > >              Until_Log_File:
> > >               Until_Log_Pos: 0
> > >          Master_SSL_Allowed: No
> > >          Master_SSL_CA_File:
> > >          Master_SSL_CA_Path:
> > >             Master_SSL_Cert:
> > >           Master_SSL_Cipher:
> > >              Master_SSL_Key:
> > >       Seconds_Behind_Master: 167
> > > 1 row in set (0.00 sec)
> > >
> > > mysql> show slave status \G
> > > *************************** 1. row ***************************
> > >              Slave_IO_State: Waiting for master to send event
> > >                 Master_Host: 192.168.1.100
> > >                 Master_User: repl
> > >                 Master_Port: 3306
> > >               Connect_Retry: 60
> > >             Master_Log_File: masterdb-bin.001869
> > >         Read_Master_Log_Pos: 150819730
> > >              Relay_Log_File: slave5-relay-bin.001151
> > >               Relay_Log_Pos: 151196286
> > >       Relay_Master_Log_File: masterdb-bin.001869
> > >            Slave_IO_Running: Yes
> > >           Slave_SQL_Running: Yes
> > >             Replicate_Do_DB:
> > >         Replicate_Ignore_DB:
> > >          Replicate_Do_Table:
> > >      Replicate_Ignore_Table:
> > >     Replicate_Wild_Do_Table: db1.%,db1.%
> > > Replicate_Wild_Ignore_Table:
> > >                  Last_Errno: 0
> > >                  Last_Error:
> > >                Skip_Counter: 0
> > >         Exec_Master_Log_Pos: 150819730
> > >             Relay_Log_Space: 151196286
> > >             Until_Condition: None
> > >              Until_Log_File:
> > >               Until_Log_Pos: 0
> > >          Master_SSL_Allowed: No
> > >          Master_SSL_CA_File:
> > >          Master_SSL_CA_Path:
> > >             Master_SSL_Cert:
> > >           Master_SSL_Cipher:
> > >              Master_SSL_Key:
> > >       Seconds_Behind_Master: 0
> > > 1 row in set (0.00 sec)
> > >
> > > --
> > > 橋本健太
> > > 世界最大の料理サイト!  「クックパッド」 - http://cookpad.com
> > > スタッフ大募集中! - http://cookpad.com/jobs/
> > >
> > >
> > >
> >
> >
>
>
> --
> 橋本健太
> 世界最大の料理サイト!  「クックパッド」 - http://cookpad.com
> スタッフ大募集中! - http://cookpad.com/jobs/
>
>
>

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

     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]