Docker

斷電後自動恢復 SQL 複製

  • July 17, 2019

我有兩個 Sql 數據庫,“MASTER”和“SLAVE”,我使用 Sql 複製來使它們同步。我在兩個數據庫上都使用 MariaDB 10。

MASTER 數據庫使用 Docker 安裝在 linux PLC 上。

SLAVE 位於 NAS 伺服器上,也使用 Docker。

在我切斷 PLC 的電源之前它工作得很好……當我重新啟動它時,SLAVE 無法讀取二進制日誌並且複製過程停止。

這似乎是一個很常見的問題,但我還沒有找到一個解決方案來讓複製在斷電後自動重新工作……

有沒有辦法解決這個問題?

我已經看到 PerconaDB 可能是一個解決方案,但我的 armv7 PLC 不兼容。

謝謝

如果失去一些數據不打擾我怎麼辦?像 1 小時的數據採集一樣失去不是問題,但我真的需要複製來自動恢復並具有可靠性

我不喜歡這種方式。最好找出原因並在重啟後停止 mariadb 清除/重置主伺服器。那將是最好的解決方案。

自動:好吧,創建一個簡單的腳本並在 crontab @reboot 中執行它。

RESULT=$(mysql -NLr -e  'show master status')
FILE=$(echo ${RESULT} | cut -d ' ' -f 1)
LOGPOS=$(echo ${RESULT} | cut -d ' ' -f 2)

and maybe execute remote: mysql -h slavedb -e "CHANGE MASTER TO MASTER_LOG_FILE=$FILE, MASTER_LOG_POS=$LOGPOS;"

也許在這裡您可以找到一種更安全的方法來自動恢復數據庫。但是不要在之前刪除/清理奴隸。不確定您的數據。可能需要一段時間。

只需在 cronjob 中執行: 初始化位於另一個網路上的 MySQL 從伺服器,而不是主伺服器

mysqldump --all-databases --master-data=1 | mysql -h slavedb 

所有你需要的,連接到從屬數據庫和一個具有從主到從的管理員權限的超級使用者/根。使用者也必須存在於主伺服器上。轉儲/恢復後將被覆蓋。

引用自:https://serverfault.com/questions/975578