2013-03-26 96 views
1

我有一個使用MySQL存儲數據的Web應用程序。 網絡應用程序是內部的(不可通過互聯網)。跨數據庫的MySQL數據庫同步

我現在必須跨3個(也可能更多)地點(分支機構)部署此應用程序。 他們需要能夠同步數據(在一個位置創建的條目在其他分支位置可用)。

要求

  • 每個位置讀取和本地寫入/爲自己的網絡上
  • 數據庫同步每天一個(可能通過通過SSH腳本)的Web應用程序+ mysql數據庫的本地實例這樣每個地點都有相同的數據。

我能夠解決這個問題(迄今爲止)的唯一方法是創建UUID(唯一標識符)並用源位(用於起始位置)和同步位(新= 0 ,synced = 1),然後寫一個腳本,我每晚SSH SSH到每個位置,並添加=我的源和同步= 0到每個位置的行...我意識到這是蠻橫的,不是很優雅/可靠,但我不確定還有什麼要做。

客戶端擔心,如果互聯網連接失敗,他希望應用能夠在本地運行,但其他分支(通過夜間腳本或其他方式)仍然會同步。正如我所說,今年晚些時候總共有3個地點,可能還會有更多地點。

任何意見的建築將不勝感激。

PS。由於安全問題,我沒有將數據庫連接到互聯網。但我願意接受所有建議。

謝謝。

+0

如果您的數據沒有刪除或更新,那麼每晚只需插入新行就可以了...但如果有更新或刪除操作,如果您嘗試執行操作,則會遇到很多麻煩它手工。檢查參考手冊中的'複製':http://dev.mysql.com/doc/refman/5.6/en/replication.html – Barranka 2013-03-26 21:50:38

+0

正確。如果發生變化,將會帶來巨大的痛苦(即使沒有人預測到,這是一種危險的情況) – 2013-03-26 22:16:39

回答

1

您的客戶在這樣的體系結構決策中可能會花費額外的硬件,開發和維護成本。除非他們有任務關鍵的數據輸入需求,否則複製所有分支機構位置的硬件堆棧可能有點瘋狂。

這就是說,他們仍然需要通過開放的互聯網傳輸數據,以便將數據從服務器複製到服務器,除非他們擁有自己的VPN,您可以在其中進行設置。試圖讓一些日常流程遷移/合併數據應該是您的頭腦中的一面紅旗,並且是一個完全不起動的人。這是一個非常複雜的問題。您可能需要的是某種主 - 主數據庫複製羣集。幸運的是,MySQL爲您提供了執行此操作的能力。不幸的是,設置和正確設置可能很複雜,如果您不得不在這裏提出這個問題,可能會對您有些挑戰。

就數據庫安全而言,只要您採取適當的預防措施來保護服務器,就沒有理由擔心將MySQL數據庫託管在Internet上。可能會在網絡級別啓動,只允許訪問端口3306(和22用於SSH訪問),並且只允許訪問Web應用程序服務器的IP地址。這也將包括設置MySQL用戶帳戶只接受來自您將訪問的特定已知主機的流量。

+0

這是一家擁有3個地點的醫療辦公室。他們希望能夠跨地點共享電子海圖。目前硬件並不是非常昂貴,Synology服務器(每個地點約1500美元= ok)。他們還使用服務器作爲本地文件服務器,因此他們仍然計劃在硬件上。我可以打開端口3306和22,並將其限制爲來自每個位置的靜態IP。訣竅在於本地讀/寫方法,然後進行更新。我知道同步是非常困難的。我試圖像瘋了一樣研究這個。 – 2013-03-26 22:21:07

+0

我確實在Synology上運行了VPN服務器,並且我在每臺計算機上使用VPN來與家中的數據庫一起工作。我也有SSH運行。 – 2013-03-26 22:22:50

+0

我也在考慮進行此設置:1.讀取本地(速度),2.寫入主服務器(其中一個位置)。 3.創建一個腳本,在每天結束時將主數據庫重新分配到每個位置,以便全部更新。這裏的問題又是互聯網需要啓動和運行。他們非常害怕它下降,並且由於時代華納的沮喪,他們無法看到病人。 – 2013-03-26 22:28:02