2010-10-27 110 views
0

我想將數據庫「複製」到外部服務。爲此,我可以複製整個數據庫(SELECT * FROM TABLE)。複製數據庫更改

如果進行了一些更改(INSERT,UPDATE,DELETE),是否需要重新上傳整個數據庫,或者是否存在描述這些操作的日誌文件?

謝謝!

+0

那個數據庫引擎是這樣的嗎?您標記了MySQL和PostGreSQL。 – 2010-10-27 14:36:13

+0

可能重複的[我如何同步兩個具有相同結構和不同服務器的MySQL表](http://stackoverflow.com/questions/3942380/how-can-i-synchronize-two-mysql-tables-that-have -same-structures-and-different-se) – 2010-10-27 17:23:18

+0

是否有一些用於處理日誌文件的庫(如MySQL二進制日誌)?將數據庫服務器連接到互聯網上的服務器有沒有安全和簡單的方法? – carlosalbertomst 2010-10-27 19:25:13

回答

2

這聽起來像你的「外部服務」不只是另一個數據庫,所以傳統的複製可能不適合你。有關該服務的更多詳細信息會很棒,因此我們可以自定義答案。這取決於你有多久獲取數據到應用程序中的外部服務和性能要求,一些主要的選項是:

  • 觸發器:添加INSERT/UPDATE/DELETE觸發器 不斷更新的外部服務的 數據時您的數據的變化(這 可能是在你的應用程序的 表現粗糙,但提供近 爲您的外部 服務的實時數據)
  • 日誌處理:您可以解析從日誌中的變化,並使用ETL的一定程度的確保他們將在您的外部服務的數據存儲上正常運行。如果你不熟悉你的特定DBMS的結構,我不會推薦進入這個領域。
  • 遞增差異:您可以在某個時間間隔(例如每天3次)運行差異,並且執行cron作業或計劃任務來運行腳本,將所有數據移動到一個大塊中。這優先考慮您的應用在外部服務上的表現。

如果您選擇觸發器,您可能可以調整現有的基於觸發器的複製解決方案來更新您的外部服務。我沒有用過這些,所以我不知道這會是多麼的瘋狂,只是一個想法。一些示例是BucardoSlony

0

有很多方法可以複製PostgreSQL數據庫。在當前的9.0版本中,PostgreSQL全球開發小組引入了兩項新的功能,稱爲Hot Standby和Streaming Replication,將PostgreSQL提升到新的水平並引入內置解決方案。

在維基,存在的新的PostgreSQL-9.0's功能完成的審查: http://wiki.postgresql.org/wiki/PostgreSQL_9.0

有喜歡Bucardo這,Slony聚-I,Londiste(Skytools)等其他應用程序,它可以也使用。

現在,你想要做什麼日誌處理?你想要什麼?問候