数据库作为企业外围的数据存储引擎,在其提供服务的过程中,常常会因为各种各样的起因须要进行数据的迁徙。数据库迁徙作为一个古老的话题并不神秘,但因为迁徙数据的重要性,以及业务对数据库可用性的高要求,导致数据库迁徙的复杂度极高,个别都须要业余工具的帮助能力实现。以后,市面上也曾经提供了各种各样的数据库迁徙工具。本文将介绍数据库迁徙的步骤以及市面上常见的迁徙工具。
一、为什么要做数据库迁徙
数据库在提供服务的过程中,常常须要进行数据迁徙,常见的场景包含:
- 数据库上云迁徙,业务上云,要求数据库上云,此时波及数据库的迁徙;
- 数据库跨云迁徙,业务须要跨云迁徙时,要求数据库跨云迁徙;
- 数据库版本升级,例如数据库内核公布新版本,须要从旧版本迁徙到新版本;
- 数据库扩容或缩容,例如数据库所在服务器资源有余,须要跨机器迁徙数据库以实现数据库扩容;
- 异构数据库迁徙,数据库中的局部业务须要迁徙到另外一种更适宜的引擎时,波及的数据库迁徙工作。例如从单机数据库迁徙到分布式数据库;从关系型数据库迁徙到 NoSQL,或,从关系型数据库 / NoSQL 把数据迁徙到数据仓库、大数据或数据湖中进行数据分析。
二、数据库迁徙的步骤
不同于利用搬迁,数据库在数据迁徙过程中,业务依然继续写入数据,数据始终处于动态变化的状态,整个迁徙过程绝对比较复杂。依据是否能反对数据迁徙过程中,数据库为业务继续提供读写服务,将迁徙计划分为:停机迁徙、零停机迁徙。为了满足业务服务的高可用及迁徙数据的完整性,举荐大家抉择可能反对“零停机迁徙”的工具产品。
- 停机迁徙,即迁徙之前须要进行数据库的写能力,即数据库下层业务不能有写申请,业务停服。而后,在数据库齐全动态的状况下,进行数据库迁徙。
- 零停机迁徙,即在数据库迁徙的过程中,业务依然持续提供服务,业务不受影响。
在数据库迁徙过程,零停机迁徙的迁徙步骤包含如下几步。而停机迁徙,只反对存量历史数据的搬迁。
- 存量历史数据的搬迁,存量历史数据搬迁次要进行构造定义及数据的迁徙。例如对于关系型数据库(例 MySQL、SQLServer 等),构造迁徙会进行表构造、视图、存储过程、函数等的定义迁徙。
- 增量更新数据,因为存量历史数据搬迁个别会继续数小时甚至入地,在这期间为了实现数据库可服务,数据库会持续承受业务写入申请。对于这部分新增的数据,也须要迁徙到指标数据库,以保障迁徙数据的完整性。当然市面上很多工具不提供这个能力,其要求业务齐全进行服务,放弃数据库的齐全动态后,再进行数据迁徙。
- 迁徙数据比照,在实现数据迁徙后,个别都须要校验迁徙数据的一致性,防止因为软硬件或人为误操作等起因,呈现迁徙数据不统一导致业务受影响。
三、常见的数据库迁徙办法
以后市面上支流的数据库迁徙工具,次要分为如下几种计划:
备注:上述评测仅依据以后各个产品的状况得出的论断
1、NineData
NineData 是玖章算术旗下的多云数据管理平台,它反对数十种常见数据源 (例:MySQL、SQLServer、Clickhouse、Kafka 等) 之间的同异构数据迁徙。NineData 提供了数据的单向及双向复制。其提供的单向数据复制性能,包含了构造复制、全量数据复制及增量复制能力,基于这几个复制步骤,能够在业务零停机的状况下,实现数据库的无缝迁徙。
NineData 作为一个即开即用的 SAAS 服务,围绕数据迁徙性能,也提供了一系列欠缺的配套服务,包含告警监控、权限管控、迁徙限流及数据一致性比照等。其中,数据比照性能十分有特色,其反对所有对象的构造比照及数据比照,同时,为升高比照对数据库的压力影响,还提供了疾速比照、比照限流等能力,在比照实现后,其还会提供具体的不统一数据及勘误语句。
除了欠缺的性能外,NineData 的迁徙性能也很优良,用 sysbench 模型测试了下,它的全量迁徙速度高达 130MB/s,增量复制速度能达到 10 万 +TPS。
NineData 比拟有特色的是:可齐全自动化得实现数据库的零停机迁徙;提供高效、易用欠缺的数据一致性比照工具;对云数据库、云主机及 IDC 自建数据库的反对同样欠缺。
图一:配置工作的第一步骤,抉择迁徙的数据源及迁徙的步骤
图二、配置工作的第二步骤,抉择复制对象
图三:配置工作的第三步骤,配置映射关系及数据过滤条件
图四:配置工作的第四步骤,迁徙前的前置查看
图五:工作详情及运维界面
图六:复制工作的数据比照详情
果图七:复制工作的比照后果,不统一数据的详情
2、备份集复原
个别各个数据库引擎都会提供备份复原工具,例如 MySQL 的 xtrabackup。借助备份集复原性能实现数据库迁徙的步骤个别如下图所示。整个复原过程纯依赖手动调度、手工执行。这种复原计划因依赖数据库自身工具,迁徙的残缺度很高。然而实现复杂度也比拟高,比拟容易出错。且复原工具不提供辅助的诊断运维能力,应用门槛比拟高,不是很举荐。
备份复原迁徙计划的特色为:纯手工操作复杂度高且容易出错,迁徙的完整性较高,但只适宜同网络环境下的同构同版本数据库之间的数据迁徙。
3、数据导出 + 数据导入
个别各个数据库引擎都会提供导入导出的工具,例如 MySQL 的 mydumper + myloader。
同时,各大数据库开发工具也会提供数据导出 + 导入的性能,例如 navicat。这种工具只能反对历史存量数据的迁徙,不反对增量数据迁徙。所以,为了保障迁徙数据的完整性,要求业务停机后,再进行数据迁徙。
基于数据导出导入的迁徙计划的问题是:要求业务停机迁徙,业务影响大;只适宜小规模数据量状况下的数据迁徙。
4、云厂商数据库迁徙工具
云厂商数据库迁徙工具,其中以阿里云数据传输 DTS 为代表。云厂商个别都会提供数据库迁徙工具,以撑持数据库上云迁徙。云厂商的数据库迁徙工具个别也反对构造复制、全量数据复制及增量数据服务,能够实现业务零停机状况下的数据库迁徙。同时,云厂商个别也会提供内置的数据校验工具,但个别只反对数据的校验,不提供构造校验能力。云厂商迁徙工具个别由数据库团队负责,所以其对云数据库的迁徙反对较好,然而对于云主机上自建数据库以及 IDC 自建数据库反对不好甚至不反对。例如,大部分云厂商迁徙工具都不反对自建数据库作为迁徙工具的指标数据源。
云厂商迁徙工具的特色是:可齐全自动化得实现数据库的零停机迁徙;对云数据库的反对较欠缺,根本不反对云主机及 IDC 自建数据库。
四、小结
总的来说,数据库作为外围业务撑持,其在数据库搬迁过程中的可用性及搬迁数据的完整性至关重要。为了满足服务高可用及迁徙数据的完整性,举荐大家抉择可能反对“业务零停机迁徙”的工具产品。同时,平台工具(例 NineData) 的自动化体验及配套设施(例:数据校验工具、迁徙限流、监控告警等)个别较为欠缺,是比拟举荐的抉择。