Mysql
mysql複製失敗
在我們意識到我們的備份(轉儲)花費的時間太長,以及 VPS 提供商關閉我們的數據庫 vps 2 小時的事件後,我們決定嘗試複製(不刪除備份,只需在複製伺服器中進行備份) .
我遵循了關於 mysql 8 的複制指南,但沒有意識到這樣的指南是為沒有已經執行的數據庫的全新安裝而製作的。然後我嘗試導入我們早上的備份,希望神奇地日誌知道從哪裡開始複製,但我錯了。
任何人都可以告訴我我應該怎麼做?我們有大約 30 個數據庫,總大小必須為 50GB。我真的不想阻止兩台伺服器進行轉儲,然後將它們導入另一台伺服器……
這是我的奴隸狀態:
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: SERVER_IP Master_User: replicador Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 24876902 Relay_Log_File: pergamum-relay-bin.000004 Relay_Log_Pos: 714 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1032 Last_Error: Could not execute Update_rows event on table gc57125800.ate_rondas_virtuais_pontos_registro; Can't find record in 'ate_rondas_virtuais_pontos_registro', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000001, end_log_pos 905 Skip_Counter: 0 Exec_Master_Log_Pos: 546 Relay_Log_Space: 293925133 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: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 1032 Last_SQL_Error: Could not execute Update_rows event on table gc57125800.ate_rondas_virtuais_pontos_registro; Can't find record in 'ate_rondas_virtuais_pontos_registro', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000001, end_log_pos 905 Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: bef45e1b-99d6-11ea-a355-3e2547e4f083 Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: 200810 19:53:10 Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row in set (0.00 sec)
更新: 我做錯了。我使用了從屬日誌文件引用,在備份時未能獲得引用。如果有人正在閱讀本文並在想您的第一次複製時撓頭,那麼本指南對我非常有用。
基本上我需要對日誌位置進行完整轉儲,這樣我就可以告訴我的奴隸從哪裡開始複製。
我假設您正在使用
mysqldump
.要啟動複製過程,從節點需要兩件事:
- 來自 master 的最近數據庫的副本
- 主二進制日誌中對應副本中狀態的座標
您可以在命令中添加
--master-data
參數以mysqldump
在備份中包含座標設置。以這種方式獲取副本後,您可以在從屬設備上恢復副本,然後用於
START SLAVE
啟動複製。slave 將在指定的位置從 master 二進制 log 開始讀取mysqldump
並繼續進行複制。