1

我工作的一個大項目,這是基於微服務架構,因此考慮我有10個服務,他們中的一些有自己的數據庫, 這些數據庫在不同的技術( MySQL和MongoDB的,彈性的,...)微服務架構的數據庫備份和恢復

究竟什麼是用於備份的最佳做法和恢復服務的集合?

真正的問題是這些數據庫的相互關係,例如在我的邏輯後端服務器我把它來自OAuth的服務器的每個用戶的oauhId,

現在考慮單獨現在恢復這兩個數據庫我的用戶db在邏輯服務器中包含一些用戶,這些用戶在oauth服務器上沒有任何相關記錄,

僅供參考,我使用docker,docker-compose和docker swarm來進行服務編排。

回答

1

作爲一個想法:檢查你的服務如何相互依賴。如果您的依賴關係是非循環的,那麼您可能能夠將所有數據備份到外部或內部,而不會遇到一致性問題。

這樣做會保證你有服務依賴於內一個後您的恢復沒有任何元素。

如果你的服務表現出循環依賴,你可能會更好服務於每一個擁有冗餘的服務(例如主從複製)。然後,您可以取下從屬實例,在脫機時從所有從屬設備中進行備份。這將允許您創建跨所有服務的原子備份。但是,您的備份質量取決於每個服務的主從複製質量。

最後你可以保持每個服務改變的記錄,再加上一個完整備份。因此,您可以編寫回滾,並開始應用更改記錄,直到您達到服務實例的一致狀態。我認爲這需要您具有邏輯依賴關係(請求標識符),它允許您關聯更改元素的記錄(即跨服務應用它們,而不存在風險將它們應用於藐視客戶端實際交互時發生的邏輯依賴關係與您的服務)。

我希望這些想法可以幫助你解決你的問題:)

+0

你能解釋一下什麼叫「由外而內或由內向外」是什麼意思? – mhndev