我按照本教程进行主从复制:http://www.howtoforge.com/mysql_master_master_replication
基本上,这就是我所做的。
- 在两台服务器上卸载了 mysql。 在两台服务器上安装了 mysql。
- 将数据加载到两个服务器上。
- 遵循复制程序。
- 复制删除了我的表,然后再次创建了它们。
- 然后,复制开始将行插入表中。然后在达到 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 文件的内容。
洛基