2008-10-03 57 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中。