2008-10-03 55 views
2

我的公司目前有一個在Sql Server 2005上運行的事務數據庫。我們將添加一個MySql(在Linux上運行)報告數據庫。我們需要將複製從MS-Sql數據庫運行到MySql數據庫。它不一定是實時的,而應該在幾分鐘之內。關於從MS Sql 2005和MySql複製數據的建議

我已經有相當不錯的MSSQL開發技能和馬馬虎虎技能,但沒有MySql背景。我們團隊中的MySql人員沒有MSSql經驗。

我想知道是否有人設置了類似的東西,可能會有一些建議。我已經看到了一些在兩者之間遷移數據的事情,但對於正在進行的複製並不多。現在我最好的猜測是在SSIS中設置一些東西,並在Sql Agent下運行它。我現在要研究SSIS的想法,但歡迎提出任何建議。

+0

爲了幫助您獲得更好的答案,您可以詳細說明數據庫的大小,例如您要使用的表的數量以及表中的行數/ gb?小型數據庫可能有涉及SQL Server Express Edition的解決方案。 – 2009-02-21 18:10:19

回答

0

第三方應用程序聲稱能夠這樣做:水仙複製器。我認爲它既可以作爲開源軟件也可以作爲企業軟件。

4

我的朋友幾乎相同的情況下(他的副本從MSSQL短短表到MySQL的一些數據)建立類似的東西:

  • 補充,觸發將被複制的每個表。觸發器保存主鍵,操作類型(i)nsert /(u)pdate /(d)elete和源表名在特殊表中(少於或多於)。
  • 小型.NET應用程序每隔幾分鐘就會掃描一次新密鑰的特殊表,並從源MSSQL表中讀取數據並將它們保存在MySQL中的目標表中(少一些或多個)。

這工作得很好,因爲:

  • 的表沒有發生很大的變化。
  • 他只複製了幾列。

優點:

  • 快速&容易實現&變化。

缺點:

  • 在自制的工具是不完美的:)。
2

我認爲這取決於您將在MySQL數據庫之上使用的報告軟件。如果你使用的是Pentaho--他們有軟件來處理這種情況。如果報告只是臨時性的,並且結構將保持完全相同,那麼我會認真考慮設置另一個MSSQL實例並對其進行處理。如果你已經有MSSQL,不要試圖讓兩者友好相處。您應該可以將第二個MSSQL實例綁定到有限的資源,以便事務性數據庫即使在同一臺計算機上也不會受到影響。

0

SSIS ETL似乎是最簡單的方法。您可以實際導出到臨時區域(CSV文件)並導入到MySQL。這將處理不同的格式問題。如果您有創意,MySQL支持CSV存儲引擎(see here),所以這可以將加載步驟保存在SSIS中。