【问题标题】:How to Synchronize SQLServer Database and MySQL Database如何同步 SQLServer 数据库和 MySQL 数据库
【发布时间】:2013-07-03 12:37:07
【问题描述】:

我的场景:

我有两个应用程序。第一个是连接到 MySQL 数据库的网站,第二个是连接到 SQL Server2008 R2 数据库的桌面应用程序。 桌面应用程序在本地更新记录,MySQL 数据库通过网站在线更新。

问题:

两个不同的数据库,当 MySQL 或 SQL 数据库发生变化时,我们如何在现场更新?

我想要什么:

数据库应相互同步(例如,如果在 MySQL 中进行了更改,则应更新 SQL Server 数据库,或者如果在 SQL 数据库中进行了更改,则应更新 MySQL 数据库)

有人可以提出一些代码、任何想法或任何解决方案来解决这个问题吗?

【问题讨论】:

  • 您好,StackOverflow 用于提出不引起辩论且有明确答案的问题。
  • 也就是说,您可以考虑使用某种消息队列(NServiceBus RabbitMQ 等),这是我在一份合同中所做的。
  • 您可以尝试使用触发器进行复制 - stackoverflow.com/questions/1455018/…

标签: c# mysql sql-server database synchronization


【解决方案1】:

利用 Restful API 将信息从 MS SQL 服务器更新到 MYSQL 服务器。

【讨论】:

    【解决方案2】:

    我要指出的第一件事是,完全和完美的同步是不可能的。不幸的是,SQL Server 中存在的数据类型在 MySQL 中不存在,反之亦然。

    但假设数据类型非常简单并且架构相似,这里有一些选项:

    1. 使用服务总线。您可以编写一个监视两个数据库系统的应用程序,当它看到更改时,它将一个对象推送到服务总线上。服务总线的侦听器将看到对象并将它们写入适当的目的地。

    2. 使用 Alex 建议的触发器。 SQL Server 可以在触发器上执行 CLR 代码。 CLR 代码可能是一些直接写入 MySQL 的 C#。需要一些设置,但这是可能的。我调查了从 MySQL 中的触发器运行进程,所有选项都很丑陋。这是可能的,但安全是一个主要问题。想法是更改记录,触发触发器并运行外部进程。

    3. 编写一个不断在表中查找“差异”并来回移动数据的应用程序。您需要修改所有表以确保支持每条记录的日期/时间戳,以便您可以跟踪记录何时“更改”。

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2019-01-30
      相关资源
      最近更新 更多