NineData如何实现高效、平稳的数据库数据迁移到另一个数据库迁移?


2023-02-01 11:23
来源:
NineData发布于:浙江省
数据库作为企业核心的数据存储引擎,在其提供服务的过程中,经常会因为各种各样的原因需要进行数据的迁移。数据库迁移作为一个古老的话题并不神秘,但因为迁移数据的重要性,以及业务对数据库可用性的高要求,导致数据库迁移的复杂度极高,一般都需要专业工具的协助才能完成。当前 ,市面上也已经提供了各种各样的数据库迁移工具。本文将介绍数据库迁移的步骤以及市面上常见的迁移工具。
数据库在提供服务的过程中,经常需要进行数据迁移,常见的场景包括:
数据库上云迁移,业务上云,要求数据库上云,此时涉及数据库的迁移;
数据库跨云迁移,业务需要跨云迁移时,要求数据库跨云迁移;
数据库版本升级,例如数据库内核发布新版本,需要从旧版本迁移到新版本;
数据库扩容或缩容,例如数据库所在服务器资源不足,需要跨机器迁移数据库以实现数据库扩容;
异构数据库迁移,数据库中的部分业务需要迁移到另外一种更适合的引擎时,涉及的数据库迁移工作。例如从单机数据库迁移到分布式数据库;从关系型数据库迁移到 NoSQL,或,从关系型数据库/ NoSQL 把数据迁移到数据仓库、大数据或数据湖中进行数据分析。
不同于应用搬迁,数据库在数据迁移过程中,业务仍然持续写入数据,数据一直处于动态变化的状态,整个迁移过程相对比较复杂。根据是否能支持数据迁移过程中,数据库为业务持续提供读写服务,将迁移方案分为:停机迁移、零停机迁移。为了满足业务服务的高可用及迁移数据的完整性,推荐大家选择能够支持“零停机迁移”的工具产品。
停机迁移,即迁移之前需要停止数据库的写能力,即数据库上层业务不能有写请求,业务停服。然后,在数据库完全静态的情况下,进行数据库迁移。
零停机迁移,即在数据库迁移的过程中,业务仍然继续提供服务,业务不受影响。
在数据库迁移过程,零停机迁移的迁移步骤包括如下几步。而停机迁移,只支持存量历史数据的搬迁。
存量历史数据的搬迁,存量历史数据搬迁主要进行结构定义及数据的迁移。例如对于关系型数据库(例 MySQL、SQLServer 等),结构迁移会进行表结构、视图、存储过程、函数等的定义迁移。
增量更新数据,由于存量历史数据搬迁一般会持续数小时甚至上天,在这期间为了实现数据库可服务,数据库会继续接受业务写入请求。对于这部分新增的数据,也需要迁移到目标数据库,以保证迁移数据的完整性。当然市面上很多工具不提供这个能力,其要求业务完全停止服务 ,保持数据库的完全静态后,再进行数据迁移。
迁移数据对比,在完成数据迁移后,一般都需要校验迁移数据的一致性,避免因为软硬件或人为误操作等原因,出现迁移数据不一致导致业务受影响。
数据库迁移的步骤
当前市面上主流的数据库迁移工具,主要分为如下几种方案:
备注:上述评测仅根据当前各个产品的情况得出的结论
1. NineData
官网地址:https://www.ninedata.cloud/
NineData 是玖章算术旗下的多云数据管理平台,它支持数十种常见数据源(例:MySQL、SQLServer、Clickhouse、Kafka等)之间的同异构数据迁移。NineData提供了数据的单向及双向复制。其提供的单向数据复制功能,包括了结构复制、全量数据复制及增量复制能力,基于这几个复制步骤,可以在业务零停机的情况下,完成数据库的无缝迁移。
NineData 作为一个即开即用的SAAS服务,围绕数据迁移功能,也提供了一系列完善的配套服务,包括告警监控、权限管控、迁移限流及数据一致性对比等。其中,数据对比功能非常有特色,其支持所有对象的结构对比及数据对比,同时,为降低对比对数据库的压力影响,还提供了快速对比、对比限流等能力,在对比完成后,其还会提供详细的不一致数据及订正语句。
除了完善的功能外,NineData 的迁移性能也很优秀,用sysbench模型测试了下,它的全量迁移速度高达130MB/s,增量复制速度能达到10万+TPS。
NineData 比较有特色的是:可完全自动化得实现数据库的零停机迁移;提供高效、易用完善的数据一致性对比工具;对云数据库、云主机及IDC自建数据库的支持同样完善。
NineData 数据库迁移
NineData选择迁移的数据源及迁移步骤
图一:配置任务的第一步骤,选择迁移的数据源及迁移的步骤
NineData选择复制对象
图二、配置任务的第二步骤,选择复制对象
NineData配置映射关系及数据过滤条件
图三:配置任务的第三步骤,配置映射关系及数据过滤条件
NineData迁移前的前置检查
图四:配置任务的第四步骤,迁移前的前置检查
NineData任务详情及运维界面
图五:任务详情及运维界面
NineData复制任务的数据对比详情
图六:复制任务的数据对比详情
NineData复制任务的对比结果
图七:复制任务的对比结果,不一致数据的详情
2. 备份集恢复
一般各个数据库引擎都会提供备份恢复工具,例如MySQL的xtrabackup。借助备份集恢复功能实现数据库迁移的步骤一般如下图所示。整个恢复过程纯依赖手动调度、手工执行。这种恢复方案因依赖数据库本身工具,迁移的完整度很高。但是实现复杂度也比较高,比较容易出错。且恢复工具不提供辅助的诊断运维能力,使用门槛比较高,不是很推荐。
备份恢复迁移方案的特征为:纯手工操作复杂度高且容易出错,迁移的完整性较高,但只适合同网络环境下的同构同版本数据库之间的数据迁移。
备份集恢复
3. 数据导出+数据导入
一般各个数据库引擎都会提供导入导出的工具,例如MySQL的mydumper+myloader。
同时,各大数据库开发工具也会提供数据导出+导入的功能,例如navicat。这种工具只能支持历史存量数据的迁移,不支持增量数据迁移。所以,为了保障迁移数据的完整性,要求业务停机后,再进行数据迁移。
基于数据导出导入的迁移方案的问题是:要求业务停机迁移,业务影响大;只适合小规模数据量情况下的数据迁移。
4. 云厂商数据库迁移工具
云厂商数据库迁移工具,其中以阿里云数据传输DTS为代表。云厂商一般都会提供数据库迁移工具,以支撑数据库上云迁移。云厂商的数据库迁移工具一般也支持结构复制、全量数据复制及增量数据服务,可以实现业务零停机情况下的数据库迁移。同时,云厂商一般也会提供内置的数据校验工具,但一般只支持数据的校验,不提供结构校验能力。云厂商迁移工具一般由数据库团队负责,所以其对云数据库的迁移支持较好,但是对于云主机上自建数据库以及IDC自建数据库支持不好甚至不支持。例如,大部分云厂商迁移工具都不支持自建数据库作为迁移工具的目标数据源。
云厂商迁移工具的特征是:可完全自动化得实现数据库的零停机迁移;对云数据库的支持较完善,基本不支持云主机及IDC自建数据库。
总的来说,数据库作为核心业务支撑,其在数据库搬迁过程中的可用性及搬迁数据的完整性至关重要。为了满足服务高可用及迁移数据的完整性,推荐大家选择能够支持“业务零停机迁移”的工具产品。同时,平台工具(例NineData) 的自动化体验及配套设施(例:数据校验工具、迁移限流、监控告警等)一般较为完善,是比较推荐的选择。返回搜狐,查看更多
责任编辑:}
在当前数字化经济的时代下,数据成为企业的关键资产。但因数据误删、服务器故障、病毒入侵等原因导致数据丢失影响业务,会对公司造成重大损失,所以如何保证数据资产的安全、稳定及可用,是企业必须考虑的事情。在日常工作中,数据被误删的原因有很多,如:误操作、程序bug、病毒等,也正因这样,时不时会传出某某公司数据被误删的新闻。如果数据被误删,需要将数据库恢复到事故发生前的那一刻,这个操作过程不仅复杂,还要依赖经验丰富的DBA来进行恢复。那如何能快速的进行任意时间点恢复(Point-in-time Recovery)呢?NineData 推出的 恢复方式(按时间点、备份集)很好的解决上面说的问题,在解放了DBA复杂的手动操作外,也不用担心“删库跑路”的事情发生。1、任意时间点恢复▋恢复流程NineData 完成基于时间点恢复(PITR)的过程如下:新增新的一个数据库实例,为恢复所用,也可以用本地实例(需要修改恢复的库名);找到误删操作之前的最近一次全量备份,恢复到新实例;回放全量备份之后的BINLOG,到误删操作之前的时间点为止。2、如何使用指定时间点的恢复▋环境说明使用指定时间点恢复功能前,需要先使用 NineData 的备份功能,先备份出一个类型为「表结构+全量数据+日志数据」的备份集。假如您已经通过NineData的备份功能完成了一个数据库的备份,那么只需要简单的几步,就可以完成指定时间点的恢复了。已有的备份集的备份类型:表结构+全量数据+日志数据NineData 备份集的备份类型假如用户数据库「backup_resotre_db」下有3张表「user_info、user_info_x、user_info_y」NineData 备份恢复测试▋恢复说明18:22分,用户把表「user_info」给DROP掉了(全量备份中该表只有1条记录,DROP的时候,该表有3条记录,有2条记录需要通过增量恢复),此时业务出现报错,需要紧急进行恢复。即使通过专业的DBA同学来进行恢复,也需要大量的手动操作进行全量+增量恢复,如果在进行增量恢复期间遇到解析binlog异常(如字符集报错),还会浪费更多的时间处理,导致RTO时间不可控。如果使用NineData的指定时间点恢复能力,那么只需要简单的几步,就可以完成指定时间点的恢复了。a. 创建恢复任务NineData 创建恢复任务按照要求,先选择要恢复的源数据实例和备份任务,然后再选择恢复到的时间点(执行DROP操作前的时间)。b. 选择要恢复的对象,可以恢复整个库,也可以选择恢复被DROP的表。NineData 恢复的对象c. 选择要恢复到哪个目标数据库,可以是新数据源,也可以是当前的数据源(需要修改恢复后的数据库名)。NineData 选择要恢复到哪个目标数据库d. 预检查步骤中会进行相关的字符集、大小写敏感、时区等关键项目的检查,确保恢复正常。NineData 预检查e. 启动任务后,可以看到任务的相关信息,直到任务完成。NineData 启动数据恢复任务f. 数据恢复完成。使用NineData完成数据恢复通过上面对「任意时间点恢复」的说明,可以看到在 NineData 上简简单单的几步操作,就能轻松的实现数据任意时间点恢复的能力。在减少RTO的同时,也缩短了运维人员处理数据恢复的时间,最终保护了企业的核心数据。小结通过这篇介绍,可以了解到如何使用 NineData (www.ninedata.cloud/backup),快速简单的实现任意时间点数据恢复的能力。另外,NineData 推出的备份数据查询(全量、按时间点)和 数据变更轨迹查询 功能,也能很好的解决数据误删恢复的问题,有效保护企业的核心数据,为企业在数据安全上构筑起最后一道防线。
}

我要回帖

更多关于 数据库数据迁移到另一个数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信