2011-10-10 136 views
67

我們在各種商店運行一個java POS應用程序,後端爲Mysql,現在我想讓店鋪中的數據庫與服務器中的數據庫保持同步,並且當發生某些更改時它應該在服務器上更新的商店。我如何實現這一目標?請幫助我兩個數據庫之間的Mysql數據庫同步

+7

mysql複製:http://dev.mysql.com/doc/refman/5.0/en/replication.html –

+0

容易嗎?你認爲會花多少時間? – peedee

+2

@peedee MySQL複製非常容易設置。一些命令和一個初始同步。我第一次花了大約30分鐘。 – ceejayoz

回答

56

複製不是很難創建。

下面是一些很好的教程:

http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/

http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/

http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication

這裏是一些簡單的規則,你必須記住(有更多的課程,但這是主要概念):

  1. 設置1用於寫入數據的服務器(主)。
  2. 設置1個或多個服務器(從屬)以讀取數據。

這樣你就可以避免錯誤。

例如: 如果您的腳本插入到主站和從站的相同表中,您將有重複的主鍵衝突。

您可以將「slave」視爲一個「備份」服務器,它保存與主服務器相同的信息,但不能直接添加數據,只能遵循主服務器的指示。

注意:當然,您可以從主服務器讀取數據,並且可以寫入從服務器,但請確保不寫入相同的表(主服務器到從服務器和從服務器到主服務器)。

我會建議監視您的服務器,以確保一切正常。

讓我知道你是否需要額外的幫助

+0

是的,Shop = master,Server = slave –

+0

現在我已經配置了主設備,我將連接到一個從設備數據庫..當我這樣做時,對主設備的任何更改都會反映在從設備中,奴隸反映到主人以及? – peedee

+0

是的,如果設置是好的!您可以在主機中插入一條記錄,然後在從機上進行選擇以進行測試。如果這個傳球,你設置! –

18

三種不同的方法:

  1. 傳統的客戶端/服務器的方法:不要把任何數據庫的商店;只需讓應用程序訪問您的服務器。當然,如果你設置了一個VPN,但只是簡單地用SSL或ssh封裝連接是合理的。 Pro:這是數據庫最初被認爲的方式。 Con:如果你有很高的延遲,複雜的操作可能會變慢,你可能不得不使用存儲過程來減少往返次數。

  2. 複製大師/主:作爲@Book宙斯建議。缺點:設置起來要複雜一些(特別是如果你有幾家商店),打破任何商店機器都可能危及整個系統。優點:更好的響應性,因爲讀取操作完全是本地的,寫入操作是異步傳播的。

  3. 離線操作+同步步驟:在本地和不時進行所有工作(可能是每小時,每天,每週,每天一次)寫一個摘要,包含上次同步操作中的所有新/修改記錄,併發送到服務器。優點:可以無網絡工作,快速,易於檢查(如果摘要是可讀的)。缺點:你沒有實時信息。

+6

我有要求設置第三種類型的數據庫同步(離線操作+同步),很想閱讀更多。無法谷歌這一個出來。他們是否可以參考一本書/文章? – abhishek77in

6

SymmetricDS就是答案。它支持一個方向的多個用戶或雙向異步數據複製。它使用Web和數據庫技術在關係數據庫之間複製表,如果需要,可近實時地複製表。

全面和強大的Java API,以滿足您的需求。

+0

如果產品描述符合他們所說的這個產品是真棒的... – TheStoryCoder