【问题标题】:How to Get Transactional MySQL data into a SQL Server database如何将事务性 MySQL 数据导入 SQL Server 数据库
【发布时间】:2009-01-09 00:37:40
【问题描述】:

我正在开发一个项目,该项目有一个 MySQL 事务数据库来备份 Web 应用程序。该公司将 SQL Server 用于后台和报告应用程序。使用 MySQL 中的数据更新 SQL Server 的最佳方法是什么?现在,我们正在执行 MySQL 数据的转储并进行完全恢复。由于数据库的大小不断增加,这可能不再可行。

我更喜欢只复制新插入和更新的行的解决方案。在应用更新后,我还需要 SQL Server 数据库是静态的。基本上,它应该每天更换一次。我可以从 MySQL 的本地副本(即非生产)更新 SQL Server 有没有办法以指定的时间间隔将 MySQL 复制应用到从属服务器?一个完美的解决方案是每天在 MySQL 上运行一次更新,以在某个时间点同步数据库。

【问题讨论】:

    标签: mysql sql-server replication


    【解决方案1】:

    你能找到一种方法来创建 mySQL DB 的快照然后进行复制吗?它将生成数据库的即时逻辑副本,该副本会及时冻结。

    http://aspiringsysadmin.com/blog/2007/08/13/consistent-mysql-backups-using-zfs-snapshots/

    ZFS 文件系统可以做到这一点 - 但你没有提到你的硬件/操作系统。

    另外,也许您可​​以限制您提取的数据 - 任何时间敏感的数据,这样如果您的拉取需要 45 分钟,您的拉取只会获取超过 1 小时的数据。或者让事情变得更安全 - 前一天拉一下怎么样?

    我相信 SSIS 2008 有一个名为“维护”表的新模块,它执行获取更新/插入记录和可选删除的常见任务。

    【讨论】:

      【解决方案2】:

      查看 Microsoft 的 ETL 工具 DTS。它相当不错。进行映射,将其安排为 cron 作业,而 Bob 是你的叔叔。

      【讨论】:

      • 我想我会使用 SSIS。问题不在于工具。问题是数据源。我需要数据的静态副本作为源。生产副本是一个实时数据库。我的理解是 MySQL slaves 也是活的。
      【解决方案3】:

      无论您如何从 MySQL 克隆导入 SqlServer,我认为您无需担心将 MySQL 复制限制在特定时间。

      MySQL 复制只需要主服务器中的一个线程,基本上只是将事务日志传输到从服务器。如果可以,请将主 MySQL 服务器和从 MySQL 服务器放在专用 LAN 段上,以便复制流量不会影响 Web 流量。

      【讨论】:

        【解决方案4】:

        如果您拥有 SQL Server Standard 或更高版本,SQL Server 将满足您的所有需求。

        • 使用 ssis 抓取数据
        • 使用代理来安排您的定时任务

        顺便说一句-我正在做与您正在做的完全相同的事情。 SQL Server 太棒了——它很容易设置(我是 SSIS 的菜鸟),而且它在第一时间就可以工作。

        【讨论】:

        • 我知道该怎么做。我不知道如何获取生产数据的快照(如果您愿意的话)。它在数据中心,而不是在我们的网络上。我需要一个我知道数据处于一致状态的时间点。否则,我的目标服务器将很快失去同步。
        • SSIS 可以直接连接到生产环境或 MySQL 从站 - 所以,我不确定我是否理解你的问题......如果你的意思是你需要复制一个数据库并且你没有访问权限到源头?
        • 我可以毫无问题地连接。但是数据是不断变化的。在导入运行期间数据会发生变化。在 SSIS 进程运行期间,我需要一份静态数据的副本。否则数据会不一致。
        【解决方案5】:

        听起来你需要做的是设置一个脚本来启动和停止从数据库上的复制。如果你可以通过脚本做到这一点,那么你可以在 SSIS 中建立一个工作流,如下所示:

        1. 停止复制到从属 MySQL 数据库
        2. 如果复制已停止,则拍摄从属 MySQL 数据库的快照
        3. 如果已拍摄快照,则 a= 开始复制到从 MySQL 数据库 b= 导入从 MySQL 数据库副本到 SQL Server

        注意:3a 和 3b 可以并行运行。

        我认为在这种情况下你最好的选择是使用 SSIS 来启用和禁用 MySQL 数据库复制到从属数据库以及拍摄从属数据库的快照。然后你可以从 SQL Server 代理机制驱动整个事情。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2011-02-06
          • 2016-08-21
          • 1970-01-01
          • 2012-05-27
          • 1970-01-01
          • 2018-04-17
          • 2023-03-28
          • 2013-06-08
          相关资源
          最近更新 更多