質問

マスタースレーブレプリケーションのセットアップがあり、正常に実行されているようです。以下は結果です SHOW SLAVE STATUS 指図:

show slave STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: *.*.*.*
                  Master_User: repliV1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 10726644
               Relay_Log_File: mysqld-relay-bin.000056
                Relay_Log_Pos: 231871
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: data1
          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: 10726644
              Relay_Log_Space: 232172
              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
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:

さらに理解したいと思います Relay_Log_File, Relay_Log_PosRelay_Master_Log_File.

私の質問は次のとおりです。

  • リレーログファイルが読み取られているものであり、レプリケーションが実行されるためにローカルに保存されているのは本当ですか?

  • はどうですか relay_master_log_file それから;それはどのように違いますか Master_Log_File?

  • これらの値は何ですか、 つまり。, Read_Master_Log_PosRelay_Log_Pos ?複製が完全で同期していても、なぜそれらが現れるのですか?

  • これらのファイルがバイナリ形式であるため、それらを表示できないのは本当ですか?

役に立ちましたか?

解決

さらに理解したいのは、Relay_log_file、leray_log_pos、relay_master_log_fileです。

から SHOW SLAVE STATUS\G, 、2つの値を取得します

  • Relay_Log_File :現在のリレーログレプリケーション中に新しいエントリを受け入れます
  • Relay_Log_Pos :レプリケーション中に新しいエントリを受け入れる現在のリレーログの現在の位置
  • Relay_Master_Log_File :奴隷で実行されたマスター上の最後に正常に実行されたSQLステートメントを含むリレーログファイル。
  • MASTER_LOG_FILE:現在のリレーログファイルと現在のリレーログ位置に対応するマスターのログのログ

ファイルはバイナリであるため、それらを正しく表示できません

はい、リレーログを表示できます。それらは通常のバイナリログと同じ構造を持っているので、 mysqlbinlog プログラム。たとえば、最後のログなど、リレーログのいずれか内でSQLを表示するには、これを行います。

mysqlbinlog mysqld-relay-bin.000056 > /root/SQLForCurrentRelayLog.txt
less /root/SQLForCurrentRelayLog.txt

他のヒント

Relay_Master_Log_File 実際、マスターのビンログの名前は、奴隷で実行された最後のSQLステートメントを含むマスターの名前です。奴隷のリレーログの名前ではありません。見る: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html

Exec_Master_Log_Pos スレーブSQLスレッドが実行したleray_master_log_fileの位置です。あなたの例では、スレーブDBはBinlogまですべての声明を実行しました mysql-bin.000001 マスターDBのPOS 10726644。

until_log_pos 奴隷を構文で起動する場合にのみ実際に使用されます START SLAVE UNTIL master_log_pos = $integer. 。その構文はその位置まで複製します(それは exec_master_log_pos)そして停止します。通常、特定のポイントに再現したい場合にのみこれを行いますが、それ以上はありません(次のステートメントが偶発的なテーブルドロップなどである場合など)。の値 until_log_pos 指定されていない場合は0なので、あなたの場合、複製が前進し続けることを意味します。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top