从global到mooncake迁移SQL Azure
之前遇到了问题,在此备注一下:
因为两个环境基本上可以认为是隔离的,所以迁移过程基本上只有通过导出、导入的方式(也是官方推荐的方式):
1、从global上进行数据库的export操作(扩展名bacpac),导出到blob中。通过Azure管理界面完成(当然也可以通过azure命令行,不过操作比较简单就用界面了)
2、从global的blob中将文件复制到mooncake的blob中。可以手动下载、上传,如果文件很大的话,也可以通过AzCopy命令行实现服务器端的点对点复制。
3、在mooncake上通过bacpac进行数据库导入。通过Azure管理界面完成
注意事项:
1、导入、导出的时候,因为对数据库资源消耗非常高(我设置了DTU报警规则,导出期间的DTU基本上停留在95%以上),所以建议先把数据库scale up。我是把S1级别临时提升到了S2级别(DTU从20上升到50)
2、导出过程会非常慢,要有耐心(50DTU的情况下,实测导出速度在7GB/小时左右,没错,小时……)
3、这种类似跨两个产品的导入导出很可能会遇到问题(见下文)
虽然global和mooncake都标识为v12版本的数据库(相当于SQL Server 2014),但是内部版本很可能会不一致,
这次导入的时候就遇到了这个错误:
“Error importing database:Could not read schema model header information from package. The model version '3.5' is not supported”
原因是global比mooncake的版本略新,导致导出导入的文件结构不兼容
解决方法就是先把global数据库的某些设置调整成和mooncake一致的,针对model version 3.5的话执行如下T-SQL:
ALTER DATABASE [dbname] SET TEMPORAL_HISTORY_RETENTION ON
然后再重新导出……(对,重新导出………………)
其实这个问题和Azure无关,是SQL Server的问题,之前在model version 3.3的时候也出现过。
搜索解决方案用了有一阵时间,其实还有两种方案也是可行的:
方案一:使用最新版的SSMS进行导入,它会考虑旧版本兼容的问题。我确实下载且安装并且开始尝试导入创建数据库了,然而考虑到从本地到Azure的带宽,我看了一眼导入速度就绝望的关掉了……
方案二:使用某些工具直接把数据库中所有数据dump成SQL语句,然后再执行。这种方法理论上可行,不过我连试的念头都没有……依然是带宽问题
参考链接:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述