【问题标题】:Suggestions for replication of data from MS Sql 2005 and MySql从 MS Sql 2005 和 MySql 复制数据的建议
【发布时间】:2010-09-15 04:59:06
【问题描述】:

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

我有相当不错的 MSSql 开发技能和一般的 dba 技能,但没有 MySql 背景。我们团队的 MySql 人没有 MSSql 经验。

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

【问题讨论】:

  • 为了帮助获得更好的答案,您能否详细说明数据库的大小,例如您将使用的表数以及表中的行数/gb 数?小型数据库可能有涉及 SQL Server Express Edition 的解决方案。

标签: mysql sql-server replication broadband


【解决方案1】:

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

  • 为每个将被复制的表添加了触发器。触发保存主键、操作类型 (i)nsert/(u)pdate/(d)elete 和特殊表中的源表名(更少或更多)。
  • 小型 .NET 应用程序每隔几分钟扫描这个特殊表以查找新键,并从源 MSSQL 表中读取数据并将它们保存在 MySQL 中的目标表中(更少或更多)。

这很好用,因为:

  • 表格变化不大。
  • 他只复制了几列。

优点:

  • 快速且易于实施和更改。

缺点:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-30
          • 1970-01-01
          • 1970-01-01
          • 2011-07-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多