Home > MySQLレプリケーションの遅延

MySQLレプリケーションの遅延

  • July 9, 2007 3:32 PM

MySQLのレプリケーションは非同期型であるため、バイナリログの伝送遅延とSQLの実行遅延の二つの遅延が発生する。

1.伝送遅延

 マスター側で更新クエリが実行され、バイナリログへも出力されているが、スレーブのリレーログへは出力されていないクエリが存在する場合、この差分を「伝送遅延」と呼ぶ。

伝送遅延の確認方法は次の通りとなる。

 

1. マスター側でSHOW MASTER STATUSを実行する

mysql> show master status\G

*************************** 1. row ***************************

            File: OC210515012-bin.000005

        Position: 98

    Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

SHOW MASTER STATUS結果

 

2. スレーブ側でSHOW SLAVE STATUSを実行する

mysql> show slave status\G

*************************** 1. row ***************************

             Slave_IO_State: Waiting for master to send event

                Master_Host: localhost

                Master_User: rep

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: OC210515012-bin.000005

        Read_Master_Log_Pos: 98

             Relay_Log_File: OC210515012-relay-bin.000037

              Relay_Log_Pos: 241

      Relay_Master_Log_File: OC210515012-bin.000005

           Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

            Replicate_Do_DB:

        Replicate_Ignore_DB:

         Replicate_Do_Table:

     Replicate_Ignore_Table:

    Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

                 Last_Errno: 0

                 Last_Error:

               Skip_Counter: 0

        Exec_Master_Log_Pos: 98

            Relay_Log_Space: 241

            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.01 sec)

SHOW SLAVE STATUS結果

 

3. ファイル名とポジションを比較する。

 

の各ファイル名と各ポジションを確認する。ファイル名が同一で、ポジションが同じ数値であれば、伝送遅延はゼロということになる。

 

 

バイナリログ @マスター

リレーログ @スレーブ

ファイル名

FILE

MASTER_LOG_FILE

ポジション

POSITION

READ_MASTER_LOG_PO

伝送遅延の確認

2.実行遅延 

スレーブ側のリレーログへは伝送されているが、未だSQLスレッドが実行していない更新クエリが存在する場合、その差分を「実行遅延」と呼ぶ。

実行遅延の確認は次の通りとなる。

 

1. スレーブ側でSHOW SLAVE STATUSを実行する。

 



mysql> show slave status\G

*************************** 1. row ***************************

             Slave_IO_State: Waiting for master to send event

                Master_Host: localhost

                Master_User: rep

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: OC210515012-bin.000005

        Read_Master_Log_Pos: 98

             Relay_Log_File: OC210515012-relay-bin.000037

              Relay_Log_Pos: 241

      Relay_Master_Log_File: OC210515012-bin.000005

           Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

            Replicate_Do_DB:

        Replicate_Ignore_DB:

         Replicate_Do_Table:

     Replicate_Ignore_Table:

    Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

                 Last_Errno: 0

                 Last_Error:

               Skip_Counter: 0

        Exec_Master_Log_Pos: 98

            Relay_Log_Space: 241

            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.01 sec)

SHOW SLAVE STATUS結果

 

2. ファイル名とポジションを確認する。

 

図の各ファイル名と各ポジションを確認する。ファイル名が同一で、ポジションが同じ数値であれば、伝送遅延はゼロということになる。

 

 

IOスレッド読み込み @スレーブ

SQLスレッド実行 @スレーブ

ファイル

MASTER_LOG_FILE

RELAY_MASTER_LOG_FILE

ポジション

READ_MASTER_LOG_POS

EXEC_MASTER_LOG_POS

実行遅延の確認

Home > MySQLレプリケーションの遅延

Search
Feeds

Return to page top