有关从MS Sql 2005和MySql复制数据的建议

时间:2008-10-03 22:10:56

标签: mysql sql-server replication broadband

我的公司目前有一个在Sql Server 2005上运行的事务数据库。我们将添加一个MySql(在linux上运行)报告db。我们需要从MS-Sql db到MySql db运行复制。它不一定是实时的,但应该在几分钟之内。

我有很好的MSSql Dev技能和马马虎虎的技能,但没有MySql背景。我们团队中的MySql人员没有MSSql经验。

我想知道是否有人设置了类似的东西并且可能有一些建议。我已经看到了在两者之间迁移数据的一些事情,但对于正在进行的复制并不多。现在我最好的猜测是在SSIS中设置一些内容并在Sql Agent下运行它。我现在要开始研究SSIS的想法,但欢迎任何建议。

4 个答案:

答案 0 :(得分:4)

我的朋友对于几乎相同的情况(他将一些表中的一些数据从MSSQL复制到MySQL)构建了类似的东西:

  • 为每个将要复制的表添加触发器。触发保存主键,操作类型(i)插入/(u)pdate /(d)elete和特殊表中的源表名称(少或多)。
  • Small .NET应用程序每隔几分钟扫描一次这些特殊的表以获取新密钥,并从源MSSQL表中读取数据并将其保存在MySQL的目标表中(少或多)。

这很好,因为:

  • 表格没有太大变化。
  • 他只复制了几列。

优点:

  • 快速&易于实施和变化。

缺点:

  • 内部制造的工具并不完美:)。

答案 1 :(得分:2)

我认为这取决于您将在MySQL数据库之上使用哪种报告软件。如果您正在使用Pentaho - 他们有软件来处理这种情况。如果报告只是临时的,结构将保持完全相同,我会认真考虑设置另一个MSSQL实例并使用它。如果您已经拥有MSSQL,请不要试图让两者互相友好。您应该能够将第二个MSSQL实例绑定到有限的资源,以便事务数据库永远不会受到影响,即使它们位于同一台计算机上。

答案 2 :(得分:0)

第三方应用程序声称能够执行此操作:Daffodil Replicator。我认为它既可以作为开源也可以作为企业。

答案 3 :(得分:0)

SSIS ETL似乎是最简单的方法。您实际上可以导出到临时区域(CSV文件)而不是导入到MySQL。这将解决不同的格式问题。如果您发挥创意,MySQL支持CSV存储引擎(see here),因此这可以节省SSIS中的加载步骤。