Linux
為什麼在我的複制(主從)過程中,它一直在插入數據,然後刪除數據,然後插入數據?
我按照本教程進行主從複製: 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)
在 MySQL 複製中,master 寫出“binlog”文件,僅詳細說明更改複製數據庫的查詢(UPDATE、DELETE、INSERT、CREATE TABLE…,而不是 SELECT 等…)。
從數據庫的相同副本開始,master 寫入 binlog 文件,slave 讀取它們,並執行所有更改:因此複製發生。
您的狀態消息表明從屬伺服器的主伺服器副本不是最新的(6343s = 105 分鐘),並且有一個 SQL 語句隊列要執行,位於 binlog 文件中:
掌握:
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 文件的內容。
洛克