繁体   English   中英

将Azure SQL数据库(PaaS)复制到IaaS(VM上的SQL Server)

[英]copy Azure SQL database (PaaS) to IaaS (SQL server on VM)

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

您能推荐一种可以限制此类过渡停机时间的导入/导出替代方法吗?

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

答案取决于您要复制数据库架构,数据还是同时复制两者。

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

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

如果要同时复制架构和数据,请在此处描述过程:

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

我将做以下假设:

  • 您的生产负载始终处于24/7全天候运行状态,因此没有定期/每晚/每周/每月的维护时段
  • 可以安排维护时段,但希望将其保持在尽可能小的范围内
  • 您可以轻松配置应用程序的连接字符串
  • 您的数据库不是很大。 千兆字节就可以了。
  • 您的数据库主要是静态数据(即,增量方法比转储和填充要快得多)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM