2011-12-12 68 views
0

我正在尋找一種有效的方法來保持多個數據庫(在不同的服務器上)與master數據庫(也在不同的服務器上)同步。請注意,我只需要單向同步(從主人到所有其他人)。設置本地數據庫從主數據庫更新

正如我在尋找我遇到了多種解決方案。

  • replication:這(從我讀)是不可靠的,因爲如果從服務器或暫時關閉或類似的東西,他們最終丟失的信息。 (請糾正我,如果我錯了)
  • Injection:我也認爲這是不可靠的,更不用說安全問題,因爲你直接與從屬數據庫進行通信。

因爲我不喜歡我所看到的,我決定把我自己的系統(最終不喜歡它要麼)我的系統是使一個新的表名爲ORDERS,並且將基本上認爲可以翻譯值作爲「在表someTable中刪除ID爲32的項目」,並且在從屬端他們將遵循這些指令中的每一個。

您認爲最好的方法是什麼?數據庫非常小(最多有3000個條目),所以我想要一個非常簡單的解決方案。謝謝

+0

它可能* [Memcache](http://php.net/manual/en/book.memcache.php)可能替代基於磁盤的數據庫克隆。 –

+0

如果兩個服務器都在unix上,那麼你可以將數據庫轉儲到文件'mysqldump -u USER -p PASSWORD DATABASE> filename.sql'然後使用file_get_contents或curl來檢索文件,然後使用'mysqldump -u USER -p PASSWORD DATABASE < filename.sql'加載它或直接通過shell管道:'mysqldump --opt --compress --user = USERHERE --password = PWHERE --host = SOURCE.HOST.HERE SOURCE_DB_NAME | mysql --user = USERHERE --password = PWHERE --host = TARGET.HOST.HERE -D TARGET_DB_NAME -C TARGET_DB_NAME' –

+0

@LawrenceCherone這是我最後的手段(給定效率如何低效)但謝謝。 – vvMINOvv

回答

0

如果你使用mysql,只需使用主/從設置。不知道從哪裏聽到它是不可靠的,如果從屬關閉。其中一個設置是複製日誌歷史記錄要保留多長時間。如果主設備上設置爲7天,則從設備可以關閉並且離線7天。當從站啓動時,它開始從停止的複製日誌中讀取數據。追趕將需要一段時間,但你不會失去任何東西。

公司多年來一直在使用mysql複製,沒有任何問題。我有一個主 - 主循環複製設置,每個主設備關閉。實際上,我在遷移過程中使用了位於該國另一端的服務器進行了三重主設置。

+0

有沒有一種方法可以在從服務器上通知它正在更新?因爲這些表有時會引用僅在主服務器 – vvMINOvv

+0

上可用的圖像,以澄清@BrentBaisley,在我的主表上,我將擁有將具有類似「image.png」值的表的服務器可以運行php腳本在複製,這樣的奴隸也可以下載參考圖像?感謝您的一切 – vvMINOvv

+1

數據庫可能不會使用來自文件系統的圖像,它還會存儲對它們的引用。您的Web服務器是「加載」圖像的內容。如果你需要在兩臺服務器上都有圖像,那麼我會使用類似NFS的東西。另外,我管理的網站是bigstockphoto.com,這是關於圖像的。 –