dot Redis 8 已发布,而且是开源的

了解更多

传统数据库迁移:开始前需要了解什么

传统数据库迁移。这三个简单的词可能会让 IT 专业人员心生畏惧——但其实不必如此!让我们来分解传统数据迁移的过程,概述其优缺点,并重点介绍行业专业人士在将传统数据迁移到高级系统之前希望了解的注意事项。

对于负责将数据从传统系统迁移到更高级环境(例如云数据库)的 IT 团队来说,成功的迁移可以带来巨大的回报。然而,执行失败的后果可能是可怕的。数据库迁移没有万能的方法,但对于任何尝试迁移的人来说,为了获得相对顺畅的体验,有一些关键因素应该考虑。让我们从概念和实践两方面探讨传统数据库迁移。

什么是数据库迁移?

数据库迁移是将数据从一个数据库管理系统传输到另一个系统,或从一个数据库管理系统的旧版本传输到新版本的过程。这个过程通常涉及几个步骤,包括从源数据库提取数据,如果需要,对其进行转换以匹配目标数据库的模式,然后将其加载到目标数据库中。

数据库迁移跟踪模式从其现有状态到新环境的受控传输。在任何数据库迁移中,历史数据都从旧系统传输到新的(通常是现代的)数据库。重要目标包括保持现有功能正常运行、优化性能和提高可维护性。 

对于开源和关系型系统,如MySQLOracle 数据库,在不危及数据完整性的情况下进行模式更改可能具有挑战性。众所周知,SQL 数据库会压缩数据以适应其结构。迁移常见于许多原因——开发人员会定期尝试新工具——但当应用程序及其数据存储都已过时并在整个组织中根深蒂固时,将数据从一个系统移动到另一个系统会带来额外的困难。通常,这些传统数据库迁移伴随着从关系型系统(例如MySQL 数据库)到NoSQL 或无服务器环境(包括)的转变。

何时应该执行传统数据库迁移?

老旧应用程序依赖于老旧的软件生态系统。即使传统应用程序似乎仍在工作——俗话说,如果没坏就不要修——但其生态系统可能会失败。也许主机操作系统不再受支持。硬件跟不上。应用程序(及其数据)依赖于不再受支持的 API,并且无法再与较新的系统有效交互。或者你继承了一个代码和数据库设计晦涩难懂的应用程序……但是知道这个系统的程序员已经退休了。

有时,变更的原因是由于业务成功。随着用户群的扩大,数据量也在增加。为更多用户和更多数据做好准备至关重要,确保没有故障转移或延迟,支持全球用户群,保持速度,并实时交付数据。

用例也会随着时间而改变。记住,Netflix 最初是做 DVD 的。当一个企业开发新的收入来源,但传统系统无法跟上时会发生什么?老旧的数据库有时无法利用新架构的潜力。 

此外,采用新技术还具有技术优势,例如利用传统系统中不存在的功能。改进后的新应用程序可以利用内存、多模型、实时数据库完成更多任务。

迁移过程之前要考虑什么

每次数据库迁移都是独一无二的,但自从第二个数据库发布以来,人们一直在升级数据库系统。借鉴前人的经验是明智的。

为了提供关于如何成功完成迁移的实用指南,我们采访了数十位执行过传统数据库迁移的 IT 专业人员、开发人员和数据库管理员。他们建议你在数据迁移清单中包含以下项目。(身份已模糊处理,因为个人的历史经验可能不代表当前雇主。)

深入了解新技术

在开始之前了解你新接触的技术。你需要对使用新数据库充满信心。如果你遇到障碍,你需要知道是遇到了技术问题,还是正在发现自己的无知程度。

你需要了解旧系统中的事物是如何以及为何以这种方式完成的。在开始迁移之前,你还需要了解新系统的功能和流程。只有这样,你才能将旧系统采用的方法与新系统中使用的特性和最佳实践相匹配。

这不仅仅是数据迁移。这也是一次问题解决迁移。

乐于接受新方法。“墨守成规”可能会导致新系统设计不佳。用户通常会将此归咎于新系统,而不是迁移本身。

设计数据模型并进行测试

在接触任何数据之前,为每个查询建模,并比较它在旧数据库和新数据库中的使用方式。这有助于你在任何人开始输入之前,在白板阶段就发现问题。

某些数据无法很好地从一个应用程序映射到另一个应用程序。最好在整个团队致力于项目之前找出如何解决这些问题。

构建完整的软件保障计划

质量保证部门应尽早介入。他们需要解决数据完整性以及在新环境中访问数据库的应用程序方面的挑战。而且他们习惯于思考各种可能出错的情况——并建议在失败场景下应如何应对。

你是否有办法确认传统数据库和新数据库中的数据匹配?并确保任何系统集成都能与尚未迁移的老旧应用程序以及激发此次迁移项目的新应用程序正确协同工作。现在就考虑这些,而不是以后。

创建全栈集成测试,可以针对你的端点、API 等测试“之前”和“之后”的结果,以确保数据一致。这并不容易;对 ID 和日期的微小更改可能具有挑战性。

针对配置与生产环境完全一致或尽可能接近的测试数据库运行测试。这意味着你需要创建这些测试。

如果系统不寻常,你可能需要安排提前时间来构建定制测试框架。这可能很耗时,但经验丰富的数据库专业人士坚持认为,构建这些测试和工具有助于你将表移动到不同的模式而不会出现问题。

进行数据审查

在尝试将数据迁移到新系统之前,请确保当前系统中的数据是最新的且准确无误。数据审计有助于确保数据是最新的。软件分析师 Karen 表示,将资源浪费在迁移错误数据上“从一开始就增加了返工”。

否则,你将以垃圾数据开始。此外,每个人都会责怪新的、不熟悉的技术,而不是数据质量。

在清理好数据之前,不要考虑迁移。Karen 说:“任何其他做法都是草率的,并且从一开始就会增加返工。这是将任何应用程序迁移到云端的同样关键的第一步。”

Karen 说:“永远要清除多余的数据。确认你只请求和发送正在运行的进程所需的数据。”

弄清楚你实际需要迁移多少数据以及在什么时间范围内完成。分阶段处理传统数据库或使用临时工具可能是可行的——尽管这可能会带来额外的问题。

这个过程本身可能就是一个项目。你的组织可能需要确定数据保留合规要求,尤其是历史数据。在将数据从一个数据库转移到另一个数据库之前,请先处理好这些问题。

备份,备份,备份

数据是每个组织的生命线。不要忽视设计或保护:安全、备份和验证。

确保在迁移开始之前有备份。“我见过一些公司尝试回滚到备用服务器,却发现他们已经复制了损坏的数据,”一位沮丧但更明智的数据库专家说道。

制定一个回滚计划,以应对出现问题的情况。在开始进行数据库更改之前测试该计划。

你可以损失时间。但你绝对不能损失任何数据。

获得高层支持

数据迁移中的挑战通常不是技术挑战。它们是业务挑战。

传统数据库迁移项目并非小事。一位经验丰富的开发人员建议,如果你发现自己缺乏改变流程的政治资本,“现在就去找其他合同,以免浪费你18个月的生命,并且因压力导致疾病!”

一位学会识别危险信号的 IT 专业人士说,如果你在任何这些预迁移任务上遇到管理层的阻力,请务必注意。务必获得书面批准,说明从备份恢复时可以接受多少数据丢失。预计他们会说:“任何数据丢失都不能接受!”这位 IT 专业人士建议,告诉他们没问题。“但是,要列出开发必要工具所需的时间和成本,以确保(并测试)将数据从新系统重新加载到备用系统是可靠的。通常情况下,你会发现他们对数据丢失更加宽容,或者他们会确定一个绝对不能丢失的数据子集。”

迁移过程中要考虑什么

一切准备就绪后,就可以进行实际迁移了。请务必注意以下建议。

记录一切

为你插入的每一行保留一个表,将旧身份与新身份映射起来,以便一切都可审计。你必须能够将任何后续子行映射到相应的父行。

快速,但不急躁

不要一次性将数据迁移到目标数据库,即所谓的“大爆炸式迁移”。这是 DevOps 专家 Andy 艰难学到的一课。他后悔团队从 SQL Server 数据库迁移到云数据库时选择了这种方式。他说:“我们贪多嚼不烂,没能实现无缝迁移。”

Andy 希望当时能将旧数据库与新数据库连接起来,然后一点一点地实时同步每条数据。这样他就可以尽可能使用新数据库,并且可以轻松地切换回来,并强制设置数据的优先级。他承认:“这里的危险在于迁移得太慢,以至于数据库永远无法完成迁移。”一个总体行动计划和一些截止日期很重要。

Joseph 的团队负责从 Microsoft SQL Server 迁移到云端,他警告了同样的陷阱,但也指出建议保持平衡。“你需要小批量地迁移,”他说,“但又不能慢到传统 SQL Server 和新的云数据库都无法获得更新的数据。”

迁移过程后要考虑什么

太好了,数据已传输到新数据库。大功告成了,对吧?远非如此。

检查数据准确性

负责一家小型家族承包商计算机系统的 Sue 说,要验证数据在迁移前后是否匹配。她公司的计算机化数据可以追溯到 1985 年,此后至少进行了四次大型数据库迁移。

根据传统数据库迁移的紧迫性,并行运行系统可能是有意义的。“在你的数据层注入一个填充层,这样传统数据库上的任何活动都会在新数据库上运行,”数据库管理员 Zack 建议道。“该层可以在返回应用程序层之前比较结果。”这种方法允许你将新旧数据库并行运行一段时间,并在切换之前确认新数据库正常运行。

即使一切看起来顺利,也要为迁移后的意外情况做好计划

“迁移后我们确实遇到了一些问题,”Guillermo 回忆道。“有些问题需要我们更多地了解新系统,例如监控、追踪和遥测。有些问题需要我们将软件升级到比我们选择的更新版本,这意味着要阅读补丁说明。我们还需要创建一些自定义的日志分析工具。”

让利益相关者对结果负责

一位数据库专家将整个职业生涯都投入到了执行传统数据库迁移中。对于 Elena 来说,一个关键因素是为新系统(如果可能,包括前端和后端)创建一个专用的测试环境,以便利益相关者可以登录并在测试环境中审查结果。

确保利益相关者签字确认接受。“切勿在生产环境中运行未经测试和批准的代码,”Elena 建议道。“这让利益相关者对结果负责。”

解决迁移不正确的数据

Elena 说,如果你遇到无法转换的数据,不要轻易说不可能。“与利益相关者坐下来,问他们为什么需要这些数据,让他们解释他们将如何使用这些数据。一旦你了解了实际的业务用例,几乎总是能找到一种变通方法来满足他们的需求。”

熟悉迁移工具

定制系统并非总是必要的。至少,你可以利用现有的迁移部署策略、工具和产品。

数据摄取

从传统系统迁移到目标数据库的任务类似于搬进新家。在这个比喻中,数据摄取工具就像搬家公司,他们会打包你的所有物品,安全地存放以便运输,运送你的物品,并布置新家(当然,前提是你做好了数据审计)。

了解如何在使用数据摄取迁移到云端时通过 6 种方式加快应用程序速度

多云和混合云解决方案

也许企业需要一些 A 类方案和一些 B 类方案。将本地部署完全迁移到新系统并不适用于所有情况。在现有技术栈中引入缓存层,创建混合环境,以减轻完全将运营扩展到云端的成本。

阅读更多关于企业级缓存:大规模缓存策略的文章。

数据库迁移的好处

值得吗?大多数时候,值得。

一些传统数据库依赖第三方技术——这些技术随时可能过时,危及数据的安全。但除了老旧系统的危险和供应商锁定的陷阱之外,还有更多。 

阅读采用防云迁移数据层的 5 大好处,了解云的全部价值。

迁移到云端,体验实时数据性能

传统数据库迁移的第一步是试水。记住,这不是孤注一掷——使用Redis Enterprise Cloud免费在实时云环境中试用数据。

正在查找其他相关概念的定义?请查看我们的术语表部分