當前位置:
首頁 > 知識 > 以實際情況切入,查看MySQL複製問題的解決方案

以實際情況切入,查看MySQL複製問題的解決方案

MySQL最常見的操作之一就是在主伺服器和從伺服器之間複製資料庫。雖然大多數此類連接都很容易建立和維護,但有時也會出現問題,例如某些主數據可能無法在從屬設備上複製或者讀取請求可能會路由到主設備而不是伺服器。

問題出現很容易,但是想要找到解決複製失敗的方法卻需要我們花些心思。

複製是所有資料庫的最基本操作,它主要是將數據從一個資料庫伺服器(主伺服器)複製到一個或多個其他資料庫(從伺服器)。該過程通過允許在多個從屬伺服器之間分配負載來進行讀取、通過將主伺服器限制為寫入來提高性能。

複製的好處包括通過從備份來提高安全性;分析可以在從資料庫執行且不影響主資料庫的性能表現;廣泛的數據分發,無需訪問主數據即可完成……

和很多資料庫管理操作一樣,複製有時也會不按預期進行,MySQL參考手冊中的「複製故障排除」提示了我們當複製出現問題時,應該檢查錯誤日誌中的哪些信息。如果錯誤日誌未指向解決方案,可通過發出SHOW MASTER STATUS語句在主伺服器中啟用二進位日誌記錄,如果已啟用,那麼「status」不為零, 如果沒有,請確保主伺服器正在運行--log-bin選項。

除此之外,該手冊還提供了其他幾個複製故障排除步驟:

  • 主伺服器和從伺服器都必須以--server-id選項啟動,並且每個伺服器必須具有唯一的ID值;
  • 運行SHOW SLAVE STATUS以確保Slave_IO_Running和Slave_SQL_Running值均為「yes」;
  • 運行SHOW_PROCESSLIST並查看State列以驗證從站是否正在連接到主站;
  • 如果一個語句在主伺服器上成功但在從伺服器上失敗,那麼核心選項是執行完整的資料庫重同步,這需要刪除從伺服器的資料庫並從主伺服器複製一個新的快照。

解決實際的MySQL複製問題

當MySQL主從連接有序時,為什麼主設備上的數據沒有被複制到從設備上呢?我們以Stack Overflow帖子中提到的問題為例,來看看實際的MySQL複製問題應該如何解決。

以實際情況切入,查看MySQL複製問題的解決方案

第一步是在master資料庫上運行「show master status」或「show master status G」以獲取從站的正確值,根據上圖反映的從站狀態,從站已連接到主站並等待日誌事件。同步正確的日誌文件位置應該恢復到從伺服器的複製。

為了確保良好的同步,停止主日誌文件,轉儲資料庫,記錄主日誌文件的位置,重新啟動主日誌文件,將資料庫導入從模式,並以正確的主日誌文件位置啟動從模式。

2014年3月發布的另一個Stack Overflow帖子提供了使用JDBC驅動程序的主/從設置,其中標記為只讀的事務仍在ping主設備。由於MySQL JDBC驅動程序正在管理與物理伺服器(主伺服器和從伺服器)的連接,因此連接池和Spring事務管理器不知道資料庫連接是否鏈接到多個伺服器。

解決方案是將控制權返回給Spring,之後提交連接上的事務。事務調試消息將指示,只要連接處於只讀模式,查詢將被路由到從伺服器。通過在連接返回到池之前重置連接,清除只讀模式,最後一條日誌消息將顯示查詢現在正被路由到主伺服器。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

黃陳宏:跨國企業不要 把自己當外人
盤點|提高雲計算安全性的5個技巧

TAG:IT168企業級 |