为什么在我的复制(主从)过程中,它不断插入数据,然后删除数据,然后插入数据?

为什么在我的复制(主从)过程中,它不断插入数据,然后删除数据,然后插入数据?

我按照本教程进行主从复制:http://www.howtoforge.com/mysql_master_master_replication

基本上,这就是我所做的。

  1. 在两台服务器上卸载了 mysql。 在两台服务器上安装了 mysql。
  2. 将数据加载到两个服务器上。
  3. 遵循复制程序。
  4. 复制删除了我的表,然后再次创建了它们。
  5. 然后,复制开始将行插入表中。然后在达到 300 万行后将其删除...然后再次插入行。

为什么它不能直接插入所有行,并使之与我的主表完全相同?为什么它会一遍又一遍地删除和插入内容?

show slave status\G;
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 
                Master_User: 
                Master_Port: 
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000025
        Read_Master_Log_Pos: 694442541
             Relay_Log_File: mysqld-relay-bin.000039
              Relay_Log_Pos: 201628150
      Relay_Master_Log_File: mysql-bin.000018
           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: 201628013
            Relay_Log_Space: 8213564485
            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: 6343
1 row in set (0.00 sec)

ERROR:
No query specified


 show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000033
        Position: 540194
    Binlog_Do_DB: fal
Binlog_Ignore_DB:
1 row in set (0.01 sec)

答案1

在 MySQL 复制中,主服务器写出“binlog”文件,仅详细说明改变复制数据库的查询(UPDATE、DELETE、INSERT、CREATE TABLE......,而不是 SELECT 等...)。

从数据库的相同副本开始,主服务器写入 binlog 文件,从服务器读取它们并执行所有更改:因此发生复制。

您的状态消息表明从属服务器的主副本尚未完全更新(6343 秒 = 105 分钟),并且在 binlog 文件中有一个要运行的 SQL 语句队列:

掌握:

File: mysql-bin.000033
Position: 540194

奴隶:

Master_Log_File: mysql-bin.000025
Read_Master_Log_Pos: 694442541
...
Exec_Master_Log_Pos: 201628013
....
Seconds_Behind_Master: 6343

我怀疑主服务器上发生了一些 DELETE/INSERT 类型的操作,而从属服务器只是复制了更改,尽管有将近几个小时的延迟。

要识别正在运行/即将运行哪些查询,您可以使用mysqlbinlog查看(二进制)binlog 文件的内容。

洛基

相关内容