首页 > 其他分享 >在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践

在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践

时间:2022-09-02 11:44:57浏览次数:102  
标签:数据库 Redis 用户 集群 迁移 数据 京东 必修课

混合多云新趋势

云原生时代的到来,企业上云需求日益细致化,从而推进了企业IT架构进化,混合多云已经成为企业上云新趋势。据混合云产业联盟最新发布的《中国混合云用户调查报告(2021年)》显示,调查中72.1%的企业应用了云计算,其中超半数采用混合云,且其平均用云数量达4.3个,同时在应用云计算的企业中选择多云的企业也高达86.7%。

混合多云变革中,核心系统应该放在哪种云中,如何迁移,之前简单的云原生应用和留在传统数据中心中的其他应用应该如何连接和交互,资源调配能力及效率和异构虚拟实现方面等众多问题均困扰着企业用户。

混合多云时代,用户数据迁移需求与场景激增

今天我们来重点聊聊混合云时代中数据迁移,先来看看常见的几种企业数据迁移的需求与场景:

 

  1. 传统云化型:设备老旧,需要升级,硬件成本升级性价比不高,云上更经济;

  2. 价格敏感型:综合对比多家厂商价格,灵活选型采用成本最优方案;

  3. 灾备驱动型:需要多云、异构云来架构自己的灾备体系,保证数据的安全

  4. 游戏客户:异地开服,服务不同地域的用户,因各地网络质量不一致需要多云模式用于构建服务本地用户的游戏服务器。

  5. 泛金融客户:要符合金融安全政策的要求,需要数据的迁移

这些客户都因系统和技术升级、业务的发展、以及安全合规等因素采用混合多云的方案,同时对其数据的迁移有着很高的诉求,在不同的业务模式和需求下也会面临多种问题。

混合多云时代下,数据迁移的困境

数据库的发展多样性提升迁移门槛

混合多云时代,迁移是面临的一大难题,其中数据安全迁移往往又是企业最关注的。提到数据迁移的困难,究其原因先粗略回顾下关系型数据库到非关系型数据库的发展。

关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流。关系型数据库具备事务一致性、读写实时性、结构化与规范化等特性,因而容易理解、使用方便、易于维护,在虚机时代,互联网还未普及时它是最主流的数据库,典型的代表有Oracle、Microsoft SQL Server、DB2、MySQL等。

但随着互联网的飞速发展,网站用户并发高,海量数据的产生,传统关系型数据库已经不能满足企业的数据存储需求了,非关系型数据库应势而生,它高并发,读写能力强、弱化数据结构一致性,使用更加灵活有良好的可扩展性等优势逐渐成为了企业的首选。

NoSQL一词首先是Carlo Strozzi在1998年提出来的。典型代表Redis, Amazon DynamoDB, Memcached,Microsoft Azure Cosmos DB等

在面对这两种数据库之间的迁移,关系型数据库SQL RDBMS发展久,迁移生态工具齐全,且大部分数据库产品都自带迁移工具;而非关系NoSQL,数据定义更宽松,产品体积轻量,放弃了一致性校验,导致某些数据结构滥用,提升了迁移难度。而迁移工具大部分开放给生态来做,由于发展时间较短,工具完善度不如RDBMS高。

厂商试图“数据绑架”,使迁移雪上加霜

分析完关系型数据库到非关系数据库的发展,可以看到数据存储结构本身已发生了巨大的变化,这从根因上已大幅提升了迁移的难度,而一些云厂商对数据库的再次改造,且对关系型数据库底层改造不透明,导致数据库的复杂性大大加大,试图用数据迁移成本高来长期绑定客户,更是令数据的迁移雪上加霜。

“个体差异”导致通用型解决方案缺失

不同的企业由于自身需求不同与使用场景的多样性,每一个客户,对我们来说都是一个新的案例,我们必须“量身定制”化服务,但在过程中我们也总结出几类常见难点:

  • 难点一:多节点数据库迁移,节点数量不一致

  • 难点二:原生产品跨版本问题,版本不一致且上下版本兼容性不够好

  • 难点三:缓存类数据易失性更高 

面临挑战,京东云破局迁移困境

下面通过实际案例和大家分享我们是如何破局迁移困境,帮助用户解脱数据枷锁的。

重大挑战,临危不乱/从容不迫

2019年京东物流为了实现其轻资产化、降低成本、升级架构的三大目的,将其ES开始由本地机房迁移到云上。依托京东云云搜索ES高可用、易扩展、近实时等特性,京东物流成功地将分拣中心自动化系统、冷链流程监控系统、开放订单跟踪系统等上百个系统迁移上云。

在迁移过程中京东云不仅提供了常规的停机迁移方案,还提供了特殊的不停机迁移方案,保证了物流业务不停服。不停机迁移方案如下:在云端创建新集群,将云上集群和用户集群合并成一个大集群,利用Elasticsearch数据分布API(cluster.routing.allocation.exclude)将用户集群中的索引数据迁移到云上集群的数据节点,最后将用户集群和云上集群构成的大集群拆分,关闭用户集群即可完成迁移。(采用这种方式须注意同时满足以下两个条件:用户集群版本和云上集群版本相同;用户集群所有节点和云上集群所有节点网络能够互通。)

通过上述方法,很快就就完成了京东物流近百个系统的数百个集群、数千个节点数据上云工作。在此之上京东云还配套提供了一键报警等核心功能,对上云工作进行全天候、全方位的保障。

截止目前,京东物流已有超过90%的应用在公有云上部署了实例,去年11.11期间业务量超过日常三倍以上的情况下,整体运营平稳。

迁移利器,上云必备

关系型数据库依然是各行业的主流应用之一,怎样更快的将传统关系型数据中的数据迁移上云也是很多行业用户关心的。为此京东云特意打造了一款针对关系型数据库的迁移工具——数据传输DTS。

数据传输DTS 提供实时数据流服务,支持数据迁移、数据订阅和数据同步服务,可简单方便的满足数据上云、业务异步解耦、数据异地灾备、业务系统数据流转等业务场景。目前数据传输DTS支持MySQL、MariaDB、Percona、SQL Server、PostgreSQL等多种数据库迁移,可以简单快速地将本地自建数据库迁移至京东云,源数据库在迁移过程中可继续正常运行,从而最大程度地减少应用程序的停机时间。

不断突破,技术创新

某家在线广告公司需要将Redis从自有机房迁移到云上。由于客户系统承载着大量结算缓存和业务缓存所以要求在迁移过程中不能有业务中断。当时有一些开源工具,但是不满足要求。主要是由于版本问题,客户用的Redis版本是4.0而当时开源的工具只支持3.28及以下版本。本着京东客户业务为先的原则,和鼓励创新的技术精神,我们思考,能不能为客户自研一套工具,能够Cover住Redis数据流转大部分场景的通用工具,于是2019年7月redissyncer 1.0版本诞生,完成了数据源及目标校验、原生集群同步、 大KV的拆解等基本功能。

1.0完后很快迎来了几个客户:

  • 其一是互联网行业用户,Redis单实例,数据体量不大20Gb左右。我们通过启动参数修复、调整每批次Value值等细节优化顺利完成了迁移任务;

  • 第二个用户是游戏行业的用户,用户需要将自有IDC中的Redis迁移到京东云。在使用我们的产品之前,用户自己找过若干开源产品但都不符合要求。由于用户的实例数量较多,在了解过Redissyncer产品特性后,用户决定使用我们的工具自行迁移。

贴近一线,无微不至

经过一个下午的培训远程培训,用户很快上手第一个实例迁移很顺利。在接下来的几天用户通过我们的工具陆续完成迁移工作,并反馈中给予产品很高评价,并特意发来感谢信。

 

来自客户的认可,是我们不断向前的最大动力!

不断打磨,精益求精

在剖析过更多客户痛点与需求后, 2019年11月底,我们完成了2.0版本的升级,补充了同步模式拆分、断点续传、离线文件加载、跨版本迁移、流式加载等功能。

很快2019年12月我们又迎来了一个金融用户。用户需要将原生Redis集群迁移到自研的Redis集群。目标集群节点数多大16*2即16对主从构成的集群,迁移过程很顺利,经过准备15分钟完成应用割接。

 

混合多云新趋势

云原生时代的到来,企业上云需求日益细致化,从而推进了企业IT架构进化,混合多云已经成为企业上云新趋势。据混合云产业联盟最新发布的《中国混合云用户调查报告(2021年)》显示,调查中72.1%的企业应用了云计算,其中超半数采用混合云,且其平均用云数量达4.3个,同时在应用云计算的企业中选择多云的企业也高达86.7%。

混合多云变革中,核心系统应该放在哪种云中,如何迁移,之前简单的云原生应用和留在传统数据中心中的其他应用应该如何连接和交互,资源调配能力及效率和异构虚拟实现方面等众多问题均困扰着企业用户。

混合多云时代,用户数据迁移需求与场景激增

今天我们来重点聊聊混合云时代中数据迁移,先来看看常见的几种企业数据迁移的需求与场景:

  1. 传统云化型:设备老旧,需要升级,硬件成本升级性价比不高,云上更经济;
  2. 价格敏感型:综合对比多家厂商价格,灵活选型采用成本最优方案;
  3. 灾备驱动型:需要多云、异构云来架构自己的灾备体系,保证数据的安全
  4. 游戏客户:异地开服,服务不同地域的用户,因各地网络质量不一致需要多云模式用于构建服务本地用户的游戏服务器。
  5. 泛金融客户:要符合金融安全政策的要求,需要数据的迁移

这些客户都因系统和技术升级、业务的发展、以及安全合规等因素采用混合多云的方案,同时对其数据的迁移有着很高的诉求,在不同的业务模式和需求下也会面临多种问题。

混合多云时代下,数据迁移的困境

数据库的发展多样性提升迁移门槛

混合多云时代,迁移是面临的一大难题,其中数据安全迁移往往又是企业最关注的。提到数据迁移的困难,究其原因先粗略回顾下关系型数据库到非关系型数据库的发展。

关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流。关系型数据库具备事务一致性、读写实时性、结构化与规范化等特性,因而容易理解、使用方便、易于维护,在虚机时代,互联网还未普及时它是最主流的数据库,典型的代表有Oracle、Microsoft SQL Server、DB2、MySQL等。

但随着互联网的飞速发展,网站用户并发高,海量数据的产生,传统关系型数据库已经不能满足企业的数据存储需求了,非关系型数据库应势而生,它高并发,读写能力强、弱化数据结构一致性,使用更加灵活有良好的可扩展性等优势逐渐成为了企业的首选。

NoSQL一词首先是Carlo Strozzi在1998年提出来的。典型代表Redis, Amazon DynamoDB, Memcached,Microsoft Azure Cosmos DB等

在面对这两种数据库之间的迁移,关系型数据库SQL RDBMS发展久,迁移生态工具齐全,且大部分数据库产品都自带迁移工具;而非关系NoSQL,数据定义更宽松,产品体积轻量,放弃了一致性校验,导致某些数据结构滥用,提升了迁移难度。而迁移工具大部分开放给生态来做,由于发展时间较短,工具完善度不如RDBMS高。

厂商试图“数据绑架”,使迁移雪上加霜

分析完关系型数据库到非关系数据库的发展,可以看到数据存储结构本身已发生了巨大的变化,这从根因上已大幅提升了迁移的难度,而一些云厂商对数据库的再次改造,且对关系型数据库底层改造不透明,导致数据库的复杂性大大加大,试图用数据迁移成本高来长期绑定客户,更是令数据的迁移雪上加霜。

“个体差异”导致通用型解决方案缺失

不同的企业由于自身需求不同与使用场景的多样性,每一个客户,对我们来说都是一个新的案例,我们必须“量身定制”化服务,但在过程中我们也总结出几类常见难点:

  • 难点一:多节点数据库迁移,节点数量不一致
  • 难点二:原生产品跨版本问题,版本不一致且上下版本兼容性不够好
  • 难点三:缓存类数据易失性更高 

面临挑战,京东云破局迁移困境

下面通过实际案例和大家分享我们是如何破局迁移困境,帮助用户解脱数据枷锁的。

重大挑战,临危不乱/从容不迫

2019年京东物流为了实现其轻资产化、降低成本、升级架构的三大目的,将其ES开始由本地机房迁移到云上。依托京东云云搜索ES高可用、易扩展、近实时等特性,京东物流成功地将分拣中心自动化系统、冷链流程监控系统、开放订单跟踪系统等上百个系统迁移上云。

在迁移过程中京东云不仅提供了常规的停机迁移方案,还提供了特殊的不停机迁移方案,保证了物流业务不停服。不停机迁移方案如下:在云端创建新集群,将云上集群和用户集群合并成一个大集群,利用Elasticsearch数据分布API(cluster.routing.allocation.exclude)将用户集群中的索引数据迁移到云上集群的数据节点,最后将用户集群和云上集群构成的大集群拆分,关闭用户集群即可完成迁移。(采用这种方式须注意同时满足以下两个条件:用户集群版本和云上集群版本相同;用户集群所有节点和云上集群所有节点网络能够互通。)

通过上述方法,很快就就完成了京东物流近百个系统的数百个集群、数千个节点数据上云工作。在此之上京东云还配套提供了一键报警等核心功能,对上云工作进行全天候、全方位的保障。

截止目前,京东物流已有超过90%的应用在公有云上部署了实例,去年11.11期间业务量超过日常三倍以上的情况下,整体运营平稳。

迁移利器,上云必备

关系型数据库依然是各行业的主流应用之一,怎样更快的将传统关系型数据中的数据迁移上云也是很多行业用户关心的。为此京东云特意打造了一款针对关系型数据库的迁移工具——数据传输DTS。

数据传输DTS 提供实时数据流服务,支持数据迁移、数据订阅和数据同步服务,可简单方便的满足数据上云、业务异步解耦、数据异地灾备、业务系统数据流转等业务场景。目前数据传输DTS支持MySQL、MariaDB、Percona、SQL Server、PostgreSQL等多种数据库迁移,可以简单快速地将本地自建数据库迁移至京东云,源数据库在迁移过程中可继续正常运行,从而最大程度地减少应用程序的停机时间。

不断突破,技术创新

某家在线广告公司需要将Redis从自有机房迁移到云上。由于客户系统承载着大量结算缓存和业务缓存所以要求在迁移过程中不能有业务中断。当时有一些开源工具,但是不满足要求。主要是由于版本问题,客户用的Redis版本是4.0而当时开源的工具只支持3.28及以下版本。本着京东客户业务为先的原则,和鼓励创新的技术精神,我们思考,能不能为客户自研一套工具,能够Cover住Redis数据流转大部分场景的通用工具,于是2019年7月redissyncer 1.0版本诞生,完成了数据源及目标校验、原生集群同步、 大KV的拆解等基本功能。

1.0完后很快迎来了几个客户:

  • 其一是互联网行业用户,Redis单实例,数据体量不大20Gb左右。我们通过启动参数修复、调整每批次Value值等细节优化顺利完成了迁移任务;
  • 第二个用户是游戏行业的用户,用户需要将自有IDC中的Redis迁移到京东云。在使用我们的产品之前,用户自己找过若干开源产品但都不符合要求。由于用户的实例数量较多,在了解过Redissyncer产品特性后,用户决定使用我们的工具自行迁移。

贴近一线,无微不至

经过一个下午的培训远程培训,用户很快上手第一个实例迁移很顺利。在接下来的几天用户通过我们的工具陆续完成迁移工作,并反馈中给予产品很高评价,并特意发来感谢信。

来自客户的认可,是我们不断向前的最大动力!

不断打磨,精益求精

在剖析过更多客户痛点与需求后, 2019年11月底,我们完成了2.0版本的升级,补充了同步模式拆分、断点续传、离线文件加载、跨版本迁移、流式加载等功能。

很快2019年12月我们又迎来了一个金融用户。用户需要将原生Redis集群迁移到自研的Redis集群。目标集群节点数多大16*2即16对主从构成的集群,迁移过程很顺利,经过准备15分钟完成应用割接。

 

(迁移部署图)

经过实际场景的打磨,我们陆续修复了一些测试中很难遇到的bug,添加了一些新特性。使得产品不仅支持升级迁移同时支持降级迁移;为了提高用户体验,我们参考Redis、MySQL等优秀开源产品的方式做了一个命令行客户端命名为redissyncer-cli。至此,完成了RedisSyncer3.X的升级,这个项目的体系建设基本上可以满足Redis迁移同步场景中的大部分需求了。

不止于此,突破创新

起初,我们把RedisSyncer定位为一个Redis的同步工具。随着开发和用户侧的实践,我们下一步想把RedisSyncer打造成为具备企业级灾备能力的Redis数据同步中间件。从工具到具备企业级灾备能力还是有一定门槛的。所以下一步我们的工作重点是对软件进行分布式改造,最终目标是在任意节点发生故障时任务可自动化持续,实现企业级灾备能力的Redis数据同步中间件。

拥抱开源,包容开放

目前京东云已经积累了覆盖互联网、游戏、金融、物流、零售等多场景领域的迁移经验。随着混合多云趋势到来,我们深知用户迁移之苦,也愿意以兼容开放的心态为客户提供技术服务,真正做到把选择权交给用户,同时为了让更多人享受技术带来的便利,我们在今年决定将自研RedisSyncer完全开源(开源地址:https://github.com/TraceNature/redissyncer-server),将技术回归社区,给更多用户和开发者带来便利!

 

(迁移部署图)

经过实际场景的打磨,我们陆续修复了一些测试中很难遇到的bug,添加了一些新特性。使得产品不仅支持升级迁移同时支持降级迁移;为了提高用户体验,我们参考Redis、MySQL等优秀开源产品的方式做了一个命令行客户端命名为redissyncer-cli。至此,完成了RedisSyncer3.X的升级,这个项目的体系建设基本上可以满足Redis迁移同步场景中的大部分需求了。

不止于此,突破创新

起初,我们把RedisSyncer定位为一个Redis的同步工具。随着开发和用户侧的实践,我们下一步想把RedisSyncer打造成为具备企业级灾备能力的Redis数据同步中间件。从工具到具备企业级灾备能力还是有一定门槛的。所以下一步我们的工作重点是对软件进行分布式改造,最终目标是在任意节点发生故障时任务可自动化持续,实现企业级灾备能力的Redis数据同步中间件。

拥抱开源,包容开放

目前京东云已经积累了覆盖互联网、游戏、金融、物流、零售等多场景领域的迁移经验。随着混合多云趋势到来,我们深知用户迁移之苦,也愿意以兼容开放的心态为客户提供技术服务,真正做到把选择权交给用户,同时为了让更多人享受技术带来的便利,我们在今年决定将自研RedisSyncer完全开源(开源地址:https://github.com/TraceNature/redissyncer-server),将技术回归社区,给更多用户和开发者带来便利!

标签:数据库,Redis,用户,集群,迁移,数据,京东,必修课
From: https://www.cnblogs.com/Jcloud/p/16649290.html

相关文章

  • Oracle 服务器迁移的一些经验
    前言通过此文章来分享一下Oracle服务器迁移过程中的一些经验,希望对大家有些许帮助。本文旨在帮助更多的同学,会提及一些基本命令或技巧,但不赘述,后续有机会再进一步分享......
  • 什么是迁移学习?
    什么是迁移学习?机器学习、人工智能和人工智能的新进展正在改变我们所知道的世界。迁移学习就是这样一个概念,它帮助机器学习算法处理对抗性数据并以更少的输入生成成本学习......
  • Stack Migration(栈迁移)
    StackMigration(栈迁移)原理1.通过overflow覆盖prevebp的值,让程序在执行完当前函数后执行leave(movesp,ebp;popebp)恢复栈帧时,获取到错误的prevebp从而让ebp跳转到......
  • 5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战
    ##简述CloudCanal2.1.0.x版本开始支持StarRocks作为对端的数据迁移同步能力本文通过MySQL->StarRocks的数据迁移同步案例简要介绍这个源端的能力。链路特点:-结......
  • 迁移ssh host key方法
    诉求重新配置服务器,不希望用户感知到hostkey发生变化,报错known_hosts冲突问题。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WARNING:REMOTEH......
  • 京东云PostgreSQL在GIS场景的应用分享
    在地图或地理信息有关的场景里,地址关键词的检索尤其重要。比如打开百度地图,想要查询某个位置的信息“北京市海淀区清华东路17号中国农业大学”,往往我们输入的是关键词“中......
  • 技术基建如何降本增效——云迁移
    原创不易,求分享、求一键三连互联网寒冬大背景下,降本增效尤其是降本成了大部分公司的选择,我们公司也不例外,但显然困难很大!因为刚发生了团队合并行为...具体困难有以下几......
  • 【.Net6】简单使用EF进行数据库迁移
    CodeFirstCodeFirst是根据代码中定义的模型,映射到数据库中,下面以一个控制台项目为例,简单描述其方法。//首先需要2个Nuget包:Microsoft.EntityFrameworkCore.SqlServer /......
  • linux系统mysql数据库目录迁移
    1、关闭mysqlsudo/etc/init.d/mysqlstop或systemctlstopmysql 2、移动数据存储位置mv/var/lib/mysql/*/media/mysqldata3、修改my.cnf配置文件......
  • EFCore先DBFirst,再CodeFirst(针对老项目迁移)
    参照文章:CodeFirst命令介绍:Scaffold-DbContext命令使用-跟着阿笨一起玩.NET-博客园(cnblogs.com)整体流程介绍:NetCore中EFcore的DbFirst和CodeFirst混合使用注......