暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TcaplusDB跨集群数据迁移介绍

TcaplusDB 2022-01-20
570

1

背景


跨集群数据迁移是将项目一个zone的所有表或者若干张表的数据从一个集群迁移到另外一个集群,对于一个存储系统,跨集群数据迁移是一项重要且不可替代的运维功能。跨集群数据迁移一般可用于合服、从正式集群复制数据到测试集群用于验证问题、跨地域换存储服务器等等业务场景。


集群内数据迁移过程一般是从数据迁移源端遍历所有表的所有数据,再将遍历到的数据写入到数据迁移目标端,然而跨集群数据迁移不同于集群内数据迁移,首先集群和集群之前通常网络不通,或者网络时延很高、网络通讯质量很差,然后一般需要做跨集群数据迁移的场景一般都是整个业务的数据一起迁移,数据量大,要求迁移时间短,这样会给业务运维带来非常大的挑战。


对于跨地域,甚至跨洲的数据迁移任务,整个过程耗时相当长,几乎不可接受,需要做很多的迁移工具调优,而且整个过程任务繁重、复杂、不灵活、迁移工具可复用率低。


TcaplusDB作为腾讯自研,面向游戏的专业存储系统,在全球多个地域均有部署,对该功能的需求较为广泛。


2

跨集群数据迁移总体实现方案


一般做数据迁移会采用数据记录搬迁方式实现,这样的方式虽然较为通用,但是对于跨集群数据迁移有如下问题:


1) 在网络质量差的情况下,记录级别的数据迁移效率低;

2) 数据迁移的源端和目标端网络不通情况下无法迁移;

3) 项目数据量大而存储机器少的情况下并发读会受到限制进而拖慢迁移速度;

4) 涉及存储机器、接入机器数量大,整个过程机器和网络故障概率高;

5) 整个过程复杂,如果手工操作或者脚本操作非常容易出错。


为解决以上问题,TcaplusDB实现一套更为通用和灵活的跨集群数据迁移方法。其中主要实现点如下:


1) 直接使用冷备做数据迁移源。这样的数据迁移的时候可以不用做记录级别的数据迁移,而直接做文件级别的数据迁移;

2) 数据迁移源存储机器不参与数据迁移,这样可以将现网机器和真正做数据迁移的机器解耦,可以根据业务速度需要提高并发度;

3) 提高冷备传输效率,并且传输冷备和导入冷备并行操作;

4) 支持页面提单全自动化完成整个流程,实时监控迁移状态,支持出错重试。极大减少运维成本,并且通用性强。


数据迁移总体实现流程如下图1所示:

图1 总体方案流程图


3

高效迁移数据文件


3.1 使用冷备文件做数据迁移源

比起记录级别的数据迁移,文件级别的数据迁移有多个优势:


1) 文件传输速度快,对网络质量要求不高,同时实现简单,可以很容易提高并发度;

2) 可以直接使用冷备做数据迁移源。数据现成可得;

3) 对于文件可以灵活处理提高迁移速度,例如对于网络不好的情况下可以先将文件压缩,减少传输数据量;

4) 数据迁移源可以由第三方机器完成,不用受限于现网存储机器数量的限制。例如:数据源存储机器有1台,如果使用这1台机器做为数据迁移源端,并发度会成为瓶颈。如果使用多台第三方机器下载并传输冷备以提高并发度;


Tcaplus可能部署在多个地域、多种环境中的,所以获取冷备数据时需要强兼容这些状况,保证冷备顺利成功进行。


对于部署在公司内网的分布式存储系统,一般使用IEG自有的冷备系统,或者使用业内开源的冷备系统gluster。本功能可以兼容已有的冷备系统,统一流程获取冷备文件。在无冷备的情况下也可以实时dump冷备文件。


3.2 跨地域高效传输冷备文件

传输文件是跨集群数据迁移的耗时大头。如何保证文件最短时间内传输到目标端是本功能的关键点之一,尤其是对于跨洲数据迁移场景。高效传输冷备文件是提高效率的重中之重。本功能的主要优化点如下:


1) 对冷备文件进行压缩,减少文件传输大小;

2) 冷备数据压缩和切分成大小相同的文件块,避免出现大文件瓶颈。同时对后续建立流水线也能统一有效管理;

3) 多通道并发传输文件,单机采用多个进程并发远程传输文件;

4) 支持使用中转机器完成传输任务,一般推荐中转机器和数据迁移源端、目标端的网络通讯质量都较好;

5) 调整操作系统参数利于传输文件,一般linux系统中可以在/etc/sysctl.conf文件中将net.core.wmem_max和net.core.rmem_max增加到20MB以上;

6) 用流水线式传输冷备文件。即一边生成冷备文件,一边传输冷备文件。使冷备文件生成和传输并行化。


整个跨地域高效传输文件的方案如图2所示。

图2 跨地域高效传输冷备文件



3.3 导入冷备文件到目标存储系统

在3.2小节中,冷备文件传输到数据迁移目标端机器后,有两种方法将冷备文件中的数据应用至数据迁移目标存储系统。

导入数据的方案支持:


1) 目标端全新环境物理替换冷备文件实现数据导入;

2) 在目标端使用工具读取冷备文件将数据写入到目标端存储系统。


假设数据迁移目标端是一个全新的TcaplusDB存储系统,可以完全复制源端TcaplusDB存储系统的路由分布、shardid等部署细节,这样可以直接把冷备文件放入数据迁移目标端存储系统中,直接可以使用。物理替换冷备文件导入方案示意图如图3:

图3 物理替换冷备文件数据导入方式示意图


假设数据迁移目标端是已有的TcaplusDB存储系统,或者诸多参数无法改变,也可以目标端使用工具读取冷备文件将数据写入到目标端存储系统。然后将这些数据经过处理后(如果有需求的情况下)通过工具读取冷备文件写入到目标TcaplusDB存储系统。


目标端用TcaplusServiceApi导入数据方案示意图如图4:

图4 目标端TcaplusServiceApi数据导入方式示意图


4

导入冷备文件到目标TcaplusDB  自动控速与异常处理

数据导入过程实际上是异常场景出现较多的过程。一个很容易出现的问题是导入速度估算不准,这会对整体过程会产生非常的影响。如果导入速度过低,那么会白白消耗时间,如果导入数据过高,很可能目标TcaplusDB产生过载,导入失败,甚至导致整个导入过程重做。为此该功能开发了自动控速。


自动控速的实现机制为:先使用默认的初始导入速度进行导入,导入过程中统计写入记录的总耗时和成功数。


如果总耗时在某个阈值之内并且所有数据都导入成功,那么对导入速度每秒增加固定量。


如果总耗时超过了某个阈值或者所数据都导入失败,那么对导入速度每秒减少固定量。这样实现导入速度自动调整。


同时整个导入速度有最低阈值限制,避免出现导入速度为0的情况出现。哪怕最低导入速度到了最低阈值仍然有导入失败的情况发生。这样也能及时发现并且解决问题。


然而即便有自动控速,实际上导入的时候仍然不可避免发生某些记录导入失败,可能是自动控速时在调整期,也有可能是目标TcaplusDB中有脏数据,或者导入过程中发生网络问题等。


本功能会在导入过程中对导入失败的记录重新生成一份redo文件,这样的优势在于:


1) 不阻塞当前的导入流程;

2) 可以导入之后查看和做排除;

3) 可以对redo文件进行重试,自动化完成整个数据导入过程。


5

流程优化


5.1 使用流水线操作提高效率

整个数据迁移的流程可以支持流水线操作,可以充分利用并行性,缩短操作时间,提高效率。在服务器资源有限的情况下可以高效利用服务器和网络资源,做到每个环节都能并行运行。例如有A、B、C、D、E五张表要做数据迁移。


首先表A从冷备中心获取到冷备,然后表A做冷备传输的时候,表B就可以从冷备中心获取冷备了。接下来,表A做在目标端做数据导入,表B可以做冷备传输,表C就可以从冷备中心获取冷备,以此类推。


当然这里流水线的操作单元是视服务器情况而定的。例如服务器资源足够多的情况下,可以表A和表B一起在冷备中心做冷备获取,后续也可以一起做冷备数据传输,即流水线的操作单元可以的若干张表一起操作。整个流水线操作流程示意图如图5所示:


图5 数据迁移流水线示意图



5.2 使用页面提单完成整个流程

跨集群数据迁移是一项繁重复杂的任务,就算所有的流程全部清晰,如果纯手工或者运行脚本操作不仅耗时耗力,而且还会非常容易出错。本功能使用页面提单完成整个任务。


由于跨集群数据迁移的源端和目标端通常都是两个完全隔离的系统,所以需要在两个系统中分别生成任务,源端构造数据,目标端导入数据。


当然如果数据迁移的源端和目标端是同一个系统,那么可以直接在这个系统的页面提单完成整个流程。页面系统提单完成整个数据迁移任务示意图如图6所示:

图6页面系统提单完成整个数据迁移任务


5.3 整个流程的异常处理

跨集群数据迁移是个复杂、耗时长的操作。执行过程机器、网络、工具模块都有可能异常导致操作失败,重新操作一遍的成本非常高。所以整个过程中的异常处理尤为关键。本功能对异常的自动化处理实现如下:


1) 使用总控节点tcapcenter管理整个流程,对所有的配置、状态进行持久化,异常场景可记录、可查询、实时监控;

2) 将总体流程切分为多个小任务,便于管理和流水化作业;

3) 每个小任务都可重入、并且有超时控制;

4) 异常情况可以自动对对单个小任务重试,重试失败可在页面及时显示错误信息。


6

本功能产生的有益效果

TcaplusDB经过多次优化,数据迁移方法效果对比如下:


同时使用此方案后,TcaplusDB系统管理员可以从复杂、繁重的数据迁移任务中解放出来,数据构造、记录级别的数据导入直接在页面提单即可完成整个功能。


TcaplusDB跨集群数据迁移不仅仅可以应用于全球跨洲数据迁移等大型复杂场景;也可以应用在平常IDC系统数据迁移,将数据从一个环境复制迁移到另外一个环境,用于分析定位问题。该功能已经在多个场景中发挥了重要作用。


扫码关注,获取更多资讯!

腾讯游戏数据库TcaplusDB

点击 阅读原文 直达TcaplusDB社区

文章转载自TcaplusDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论