我有一个主奴隶复制设置,看起来它运行良好。以下是 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,relay_log_pos和relay_master_log_file。

SHOW SLAVE STATUS\G, ,获得两个值

  • 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语句的BINLOG的名称。它不是从属上的继电器日志的名称。看: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html

Exec_Master_Log_Pos 是从属SQL线程执行的Relay_Master_Log_File中的位置。因此,在您的示例中,从属数据库已执行所有语句,直到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