【问题标题】:copy Azure SQL database (PaaS) to IaaS (SQL server on VM)将 Azure SQL 数据库 (PaaS) 复制到 IaaS(VM 上的 SQL 服务器)
【发布时间】:2017-11-14 09:03:35
【问题描述】:

是否可以使用 Create Database [] 作为 [] 的副本来创建作为 Azure SQL 数据库 (PaaS) 托管到 IaaS(VM 上的 SQL 服务器)的数据库副本?

您能否推荐一种可以限制此类转换停机时间的 Import/Export 替代方法?

此迁移的原因是 PaaS 模式下跨数据库查询的限制,这使得一次性迁移到新应用程序版本过程中使用的新数据库变得复杂

【问题讨论】:

    标签: sql-server database azure azure-sql-database


    【解决方案1】:

    答案取决于您是要复制数据库架构、数据还是两者兼而有之。

    正如 Jaxidian 所说,ApexSQL 工具可以完成这项工作,但据我所知,DataDiff 只会同步数据库数据,而 Diff 会同步模式。

    这里是描述复制数据库数据过程的文章:

    如果你想复制模式和数据,这里描述了过程:

    【讨论】:

      【解决方案2】:

      有很多工具可以实现这一点。哪一个最适合您取决于您​​的需求。但是,Azure 门户中的“复制”功能不会为您完成此任务,但可以作为您最终确定的方法的部分解决方案。

      我会做出以下假设:

      • 您拥有 24/7 全天候不间断的生产负载,因此没有定期/每晚/每周/每月维护窗口
      • 可以安排维护窗口,但希望尽可能小
      • 您可以轻松配置应用程序的连接字符串
      • 您的数据库不是很大。千兆字节没问题。
      • 您的数据库主要是静态数据(即增量方法比转储和填充要快得多)

      如果我今天/现在这样做,我的方法是这样的(这只是一种选择):

      1. 使用复制功能制作数据库副本,我可以将其用作暂存区/参考点,同时最大限度地减少生产数据库的负载
      2. 从复制的数据库创建备份(bacpac 文件)
      3. 将 bacpac 文件恢复到 IaaS 托管的 SQL Server 以形成您的基础部署
      4. 开始您的维护窗口并有效地将您的数据库设置为只读模式,这样数据现在就不会再发生变化(无论您关闭应用程序、撤销权限等如何做到这一点的许多策略)
      5. 使用 ApexSQL Data Diff 等工具(Redgate 等有选项)比较两个数据库之间的数据并将数据同步到新的 IaaS 数据库。请注意 - 根据您的数据需求,您可能需要调整生成的同步数据的脚本。
      6. 验证新数据库现在确实是旧数据库的副本(ApexSQL 数据差异也可以帮助解决这个问题 - 这里有几个选项)
      7. 更改应用上的连接字符串以指向新数据库
      8. 重新开启应用程序并结束您的维护期。

      当然,如果您这样做,请在维护窗口之前多次练习并多次测试结果。了解一切的时间安排,尤其是生成和恢复 bacpac 文件需要多长时间。这是因为您希望在维护窗口之前尽可能晚地执行此操作,以最大程度地减少生成和运行您将使用的最终“数据差异”脚本所需的时间。该脚本花费的时间越长,您的中断时间就越长。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2017-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        相关资源
        最近更新 更多