sql-server - 将数据从 MariaDB 迁移到 SQLServer
问题描述
我们计划将所有数据从 MariaDB 迁移到 SQLServer。任何人都可以建议任何迁移数据的方法,这样就不需要停机,也不会丢失数据。
在这种情况下,我在这里浏览了一些帖子,但没有得到太多的想法。
解决方案
您可以查看用于迁移数据的 SQL Server Integration Services 功能。
或者,您可以使用新 SQL Server 实例中的链接服务器手动创建迁移脚本。
或者您可以使用 BCP 执行批量导入(这非常快,但需要中间步骤才能将数据放入文本文件中)。
更重要的是您希望如何实现“无停机时间”的要求。我想迁移例程需要一些功能要求,这可能难以使用通用迁移工具实现,例如:
可以在多个批次/运行中执行迁移(跳过已迁移的数据),以及
可以在不同的解决方案中实现迁移的不同阶段,例如批量导入(使用文本文件和临时表)历史数据(不再更改),但通过实时数据库连接实时查询 MariaDB 中的最新更新/MySQL 数据库。
迁移策略也可能很大程度上取决于 MariaDB/MySQL 中数据的大小,以及数据库及其数据的结构。也许您想保留自动生成的主键值,因为系统要求它们保持不变。也许您需要对一些奇异的表字段使用不同的数据类型。也许您需要重新实现一些数据库逻辑(如存储过程和函数)。等等等等。
对于这类迁移项目,很难给出一些特别的建议;正如 Tim Biegeleisen 已经评论的那样,这可能是一项相当复杂的工作,即使对于“小型”数据库也是如此。它实际上总是需要大量研究、大量准备、测试运行(在使用数据库备份的测试环境中)、更多测试运行、最终测试运行等。当然还有一些分析、指标、日志记录和报告用于故障排除(并了解在实际迁移过程中会发生什么)。如果迁移将长期运行,您需要确保它不会冻结实时生产环境,并且您可能还需要在迁移期间某种形式的进度指示。
并且 - 最后但并非最不重要的一点 - 您肯定希望有一个“B 计划”或快速返回策略,以防实际迁移失败(尽管做了所有这些仔细的准备)。
希望我没有忘记什么... ;-)
推荐阅读
- sql - 如何使我的 SQL 语句更小,以免超时?
- r - 有没有办法生成随机的“时间”?
- sql - SQL - 根据列中值的总和获取一对行
- java - Java 无法获取线程锁
- visual-studio-2017 - VS2017 在 .js 文件上使用 tslint 中断构建
- angular - 在打字稿Angular 5中导入json文件
- javascript - 如何在 Vuetify 组件的内联 CSS 中使用来自 Vue 组件的数据
- symfony - Symfony REST API。我需要表格吗?
- python - 如何在 Kivy 中更新 StringProperty 变量
- ember.js - 如何根据 promise 返回数据