溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何解決實(shí)際的MySQL復(fù)制問題

發(fā)布時(shí)間:2021-10-29 17:24:58 來源:億速云 閱讀:172 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章主要為大家展示了“如何解決實(shí)際的MySQL復(fù)制問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何解決實(shí)際的MySQL復(fù)制問題”這篇文章吧。

MySQL最常見的操作之一就是在主服務(wù)器和從服務(wù)器之間復(fù)制數(shù)據(jù)庫。雖然大多數(shù)此類連接都很容易建立和維護(hù),但有時(shí)也會出現(xiàn)問題,例如某些主數(shù)據(jù)可能無法在從屬設(shè)備上復(fù)制或者讀取請求可能會路由到主設(shè)備而不是服務(wù)器。

問題出現(xiàn)很容易,但是想要找到解決復(fù)制失敗的方法卻需要我們花些心思。

復(fù)制是所有數(shù)據(jù)庫的最基本操作,它主要是將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫服務(wù)器(主服務(wù)器)復(fù)制到一個(gè)或多個(gè)其他數(shù)據(jù)庫(從服務(wù)器)。該過程通過允許在多個(gè)從屬服務(wù)器之間分配負(fù)載來進(jìn)行讀取、通過將主服務(wù)器限制為寫入來提高性能。

復(fù)制的好處包括通過從備份來提高安全性;分析可以在從數(shù)據(jù)庫執(zhí)行且不影響主數(shù)據(jù)庫的性能表現(xiàn);廣泛的數(shù)據(jù)分發(fā),無需訪問主數(shù)據(jù)即可完成……

和很多數(shù)據(jù)庫管理操作一樣,復(fù)制有時(shí)也會不按預(yù)期進(jìn)行,MySQL參考手冊中的“復(fù)制故障排除”提示了我們當(dāng)復(fù)制出現(xiàn)問題時(shí),應(yīng)該檢查錯(cuò)誤日志中的哪些信息。如果錯(cuò)誤日志未指向解決方案,可通過發(fā)出SHOW MASTER STATUS語句在主服務(wù)器中啟用二進(jìn)制日志記錄,如果已啟用,那么“status”不為零, 如果沒有,請確保主服務(wù)器正在運(yùn)行--log-bin選項(xiàng)。

除此之外,該手冊還提供了其他幾個(gè)復(fù)制故障排除步驟:

  • 主服務(wù)器和從服務(wù)器都必須以--server-id選項(xiàng)啟動,并且每個(gè)服務(wù)器必須具有唯一的ID值;

  • 運(yùn)行SHOW SLAVE STATUS以確保Slave_IO_Running和Slave_SQL_Running值均為“yes”;

  • 運(yùn)行SHOW_PROCESSLIST并查看State列以驗(yàn)證從站是否正在連接到主站;

  • 如果一個(gè)語句在主服務(wù)器上成功但在從服務(wù)器上失敗,那么核心選項(xiàng)是執(zhí)行完整的數(shù)據(jù)庫重同步,這需要?jiǎng)h除從服務(wù)器的數(shù)據(jù)庫并從主服務(wù)器復(fù)制一個(gè)新的快照。

解決實(shí)際的MySQL復(fù)制問題

當(dāng)MySQL主從連接有序時(shí),為什么主設(shè)備上的數(shù)據(jù)沒有被復(fù)制到從設(shè)備上呢?我們以Stack Overflow帖子中提到的問題為例,來看看實(shí)際的MySQL復(fù)制問題應(yīng)該如何解決。

如何解決實(shí)際的MySQL復(fù)制問題

第一步是在master數(shù)據(jù)庫上運(yùn)行“show master status”或“show master status \ G”以獲取從站的正確值,根據(jù)上圖反映的從站狀態(tài),從站已連接到主站并等待日志事件。同步正確的日志文件位置應(yīng)該恢復(fù)到從服務(wù)器的復(fù)制。

為了確保良好的同步,停止主日志文件,轉(zhuǎn)儲數(shù)據(jù)庫,記錄主日志文件的位置,重新啟動主日志文件,將數(shù)據(jù)庫導(dǎo)入從模式,并以正確的主日志文件位置啟動從模式。

2014年3月發(fā)布的另一個(gè)Stack Overflow帖子提供了使用JDBC驅(qū)動程序的主/從設(shè)置,其中標(biāo)記為只讀的事務(wù)仍在ping主設(shè)備。由于MySQL JDBC驅(qū)動程序正在管理與物理服務(wù)器(主服務(wù)器和從服務(wù)器)的連接,因此連接池和Spring事務(wù)管理器不知道數(shù)據(jù)庫連接是否鏈接到多個(gè)服務(wù)器。

解決方案是將控制權(quán)返回給Spring,之后提交連接上的事務(wù)。事務(wù)調(diào)試消息將指示,只要連接處于只讀模式,查詢將被路由到從服務(wù)器。通過在連接返回到池之前重置連接,清除只讀模式,最后一條日志消息將顯示查詢現(xiàn)在正被路由到主服務(wù)器。

以上是“如何解決實(shí)際的MySQL復(fù)制問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI