2

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

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

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

4

4 回答 4

4

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

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

这很好用,因为:

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

优点:

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

缺点:

  • 内部制造的工具并不完美:)。
于 2008-10-09T21:41:19.617 回答
2

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

于 2008-10-09T22:04:07.480 回答
0

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

于 2008-10-04T00:40:53.657 回答
0

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

于 2009-10-27T16:41:56.507 回答