Replication

手動修改master-bin.index

  • June 18, 2020

我對 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:是

好像奴隸只讀不寫。所以我放棄了,我現在要重新創建奴隸。

引用自:https://dba.stackexchange.com/questions/268316