手動修改master-bin.index
我對 MariaDB Server 5.5.56 複製有疑問。奴隸卡住了,當我意識到我們已經失去了一些垃圾箱時。所以這是場景:
在主:
瑪麗亞數據庫
$$ (none) $$> 顯示二進制日誌;
+——————-+————+
| 日誌名稱 | 文件大小 |
+——————-+————+
| 主-bin.000320 | 1073742333 |
| 主-bin.000321 | 1074247558 |
| 主-bin.000322 | 753717941 |
| 主-bin.000323 | 883803465 |
+——————-+————+
4 行在一組(0.01 秒) 貓 master-bin.index
./master-bin.000320
./master-bin.000321
./master-bin.000322
./master-bin.000323
在奴隸(節選)
瑪麗亞數據庫
$$ (none) $$> SHOW SLAVE STATUS\G
*************************** 1. 行 *************** *************
Slave_IO_State:
Master_Log_File: master-bin.000312
Read_Master_Log_Pos: 405852801
Relay_Log_File: mariadb-relay-bin.000942
Relay_Log_Pos: 405852988
Relay_Master_Log_File: master-bin.000312
Slave_IO_Running: 否
Slave_SQL_Running: 是
Exec_Master_Log_Pos:405852703
Relay_Log_Space:405853426
Seconds_Behind_Master:NULL
Master_SSL_Verify_Server_Cert:否
Last_IO_Errno:1236
Last_IO_Error:從二進制日誌讀取數據時從主伺服器收到致命錯誤 1236:“無法在二進制日誌索引文件中找到第一個日誌文件名”
Last_SQL_Errno:0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:1
1 行在集合中(0.00 秒) 所以我嘗試恢復奴隸的想法是:
1.- 在 master 中:停止 mariadb 服務
2.- 在 master 中:從備份 bin 312 複製到 319
3.- 在 master 中:手動將 bin 312 到 319 添加到 master-bin.index
4.- 在 master 中:啟動 mariadb 服務
5 .- 在從機中:啟動從機
那行得通嗎?有沒有其他方法可以解決我的問題?我知道不建議手動修改 master-bin.index 但我想不出任何其他替代方法來避免重新創建從屬。
提前致謝。
**最好的建議是重建奴隸。**缺少 8 個二進制日誌意味著您可能會失去很多事務。另一種選擇是執行 CHANGE MASTER 並移動到下一個可用的二進制日誌。您可能需要一路跳過從屬錯誤,直到從屬“趕上”,但您必須使用 pt-table-checksum 和 pt-table-sync 在這些節點之間“重新同步”數據。
我已經嘗試了我的方法並部分工作。手動更改(停止 mariadb)master-bin.index 後,從屬設備再次開始工作,但只有 Master_Log_File 增加
Master_Log_File:master-bin.000319
Relay_Master_Log_File:master-bin.000312
Slave_IO_Running:是
Slave_SQL_Running:是
好像奴隸只讀不寫。所以我放棄了,我現在要重新創建奴隸。