当前位置: 首页 > 科技观察

万亿级数据该如何迁移?

时间:2023-03-15 23:12:11 科技观察

背??景星爷的《大话西游》有一句非常有名的台词:“我曾有一份真情在眼前,却不珍惜。当我失去它时,我很后悔。世界上最痛苦的事莫过于此,如果上天能再给我一次机会,我会对任何一个女孩说三个字:我爱你,如果一定要给这份爱加上一个期限,我希望是一万年!”在我们开发人员眼里,这种感觉就跟我们数据库里的数据一样,希望万年不变,但往往适得其反。随着公司的不断发展和业务不断变化,我们对数据的需求也在不断变化,大概有以下几种情况:分库分表:业务发展越来越快,导致单机数据库压力越来越大,越来越多数据量大,这时候通常会使用分库,分库的方法就是用来解决这个问题的,将数据库的流量平均分配到不同的机器上。在单机数据库到分库的过程中数据库,我们需要c完全迁移我们的数据,这样我们就可以顺利的通过分库的方式来使用我们的数据。更换存储介质:一般来说,经过上面介绍的分库之后,我们迁移之后存储介质还是一样的。表的字段没有变化,迁移比较简单。有时候分库分表并不能解决所有的问题。如果我们需要大量复杂的查询,此时使用Mysql可能不是一个靠谱的方案,那么我们就需要更换查询的存储介质,比如使用elasticsearch。第二种迁移会稍微复杂一些,涉及到不同存储介质的数据转换。切换到新系统:一般在公司的快速发展中,会有很多为了速度而反复构建的项目。公司在某个时期的时候,往往会把这些项目合并起来,成为一个平台或者中间平台,比如我们的一些会员系统,电商系统等等。这时候,我们往往会遇到一个问题。旧系统中的数据需要迁移到新系统中。这次比较复杂。不仅存储介质可能会改变,项目语言也可能不同。从上层的角度来看,部门可能不同,所以这种数据迁移的难度和风险更大。在实际业务发展中,我们会根据不同的情况制定不同的迁移方案。接下来,让我们讨论如何迁移数据。数据迁移数据迁移不是一次性的过程。每次数据迁移都需要很长时间,可能是一周,也可能是几个月。一般来说,我们迁移数据的过程基本类似于下图:首先,我们需要批量迁移我们数据库中已有的数据,然后需要处理新增的数据。我们需要把这部分数据在写完原来的数据库后,实时的写入到我们新的存储中。在这个过程中,我们需要不断地检查数据。当我们验证基本问题不严重时,再进行切流操作,直到切流完全,就不再需要进行数据验证和增量数据迁移了。股票数据迁移首先说说股票数据迁移是怎么做的。在搜索股票数据迁移的开源社区后,我们发现并没有什么好用的工具。目前阿里云的DTS提供存量数据迁移,DTS支持同种异构数据源之间的迁移,基本支持Mysql、Oracle、SQLServer等业界常见的数据库,DTS比较适合前两者我们之前提到的场景。一种是分库的场景。如果使用阿里云的DRDS,可以直接通过DTS将数据迁移到DRDS。另一种是异构数据的场景。不管是Redis还是ES,DTS都支持直接迁移。那么DTS的库存迁移是如何工作的呢?其实比较简单,大致有以下几个步骤:1.股票迁移任务开始时,我们获取当前需要迁移的最大和最小id。2、设置一个段,比如110000,从最小的id开始,每次向DTS服务器查询10000条数据,交给DTS处理。sql如下:select*fromtable_namewhereid>curIdandid