浅谈数据库同步和迁移
从广义来说,迁移应该算是同步的一种模式。同步侧重于增量,而迁移侧重于全量。迁移通常说的是数据库的搬迁,将源数据库搬迁到目的数据库,搬迁之后目的数据库代替源数据库继续提供服务,源数据库可以选择下线或者继续提供服务。 迁移有多种场景,比如:同种数据库下异构模式迁移。例如:Redis 的主从版迁移到集群版;可以是数据库的升级迁移,比如:MongoDB 从 3.0 升级到 4.0;也可以是上云迁移,比如:云下的数据库迁移到云上,或者云上的迁移到云下等等。 迁移的同时,源数据库可写可不写,不写的话稍微简单一些。迁移往往不需要迁移增量,只需要做全量迁移即可,但这通常需要业务停写,很多业务难以接受。可写的话比较符合大部分业务场景,但对迁移的链路就需要有个全量+增量迁移的能力。等迁移完毕,用户可以对迁移后的数据进行校验,发现没问题了,等待一个业务时间点进行一次闪断切流,将流量分发到目的端,数据就完成了迁移,源数据库就可以下线了。 上述我提到了,迁移可以用于云下到云上,云上到云下这种混合云场景的迁移。但现在对于很多云厂商来说,从云上到云下的迁移可能比云下到云上的迁移困难一些,因为云上到云下的同步需要能够从云上拉取数据。对于一些数据库来说,这些拉取的权限很可能没有开放。例如:Redis 的Sync 迁移,需要源端开放 Sync/Psync 权限,而很多云厂商出于安全角度考虑是不支持的。这就对迁移工具提出了另一个挑战,而应对这个挑战的方式要么就是云厂商支持这种模式,要么就是换一种其他迁移方式。对于阿里云来说,已经开放了用户的复制权限,使得用户可以通过 Sync/Psync 进行数据的拉取。另外,RedisShake 本身也支持了其他绕过 Sync/Psync 的同步迁移方式,后续我都会介绍。 3. MongoShake & RedisShake同步迁移工具 阿里云开源了 MongoShake 和 RedisShake,可以用于 MongoDB 和 Redis 的同步和迁移,进一步实现用户对灾备和多活的需求。 3.1 MongoShake MongoShake 的同步是基于 Oplog 实现的,v1.5 版本开始支持全量同步。其内部具体实现细节可以参考我在云栖社区上写的文章,本小节主要从功能和应用场景来进行介绍。 项目地址:http://t.cn/AiTChwoV 首先介绍一下主要的功能:
(编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |