4

Redis数据同步和数据迁移如何做?

 3 years ago
source link: https://www.yp14.cn/2021/01/24/Redis数据同步和数据迁移如何做/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一个 Redis 需要从另一个 Redis 数据同步 或者 数据迁移 ,这种一般怎么做?

数据迁移 这种一般比较好做,可以直接从源redis导出rdb,再把rdb文件导入目标redis。但是如果需要实时增量同步就比较困难,有什么好的方法解决这种需求,这里介绍下阿里云开源 redis-shake 工具。

redis-shake 项目地址: https://github.com/alibaba/RedisShake

基本功能

redis-shake :是我们基于 redis-port 基础上进行改进的一款产品。它支持 解析恢复备份同步 四个功能。以下主要介绍 同步sync

恢复restore
备份dump
解析decode
同步sync
同步rump

基本原理

redis-shake 的基本原理就是模拟一个从节点加入源redis集群,首先进行全量拉取并回放,然后进行增量的拉取(通过psync命令)。如下图所示:

uYvYFre.png!mobile

如果源端是集群模式,只需要启动一个redis-shake进行拉取,同时不能开启源端的move slot操作。如果目的端是集群模式,可以写入到一个结点,然后再进行slot的迁移,当然也可以多对多写入。

目前,redis-shake到目的端采用单链路实现,对于正常情况下,这不会成为瓶颈,但对于极端情况,qps比较大的时候,此部分性能可能成为瓶颈,后续我们可能会计划对此进行优化。另外,redis-shake到目的端的数据同步采用异步的方式,读写分离在2个线程操作,降低因为网络时延带来的同步性能下降。

高效性

全量同步 阶段 并发执行增量同步 阶段 异步执行 ,能够达到毫秒级别延迟(取决于网络延迟)。同时,我们还对大key同步进行分批拉取,优化同步性能。

监控

用户可以通过我们提供的restful拉取metric来对redis-shake进行实时监控: curl 127.0.0.1:9320/metric

校验

如何校验同步的正确性?可以采用我们开源的 redis-full-checkhttps://github.com/aliyun/redis-full-check?spm=a2c6h.12873639.0.0.4b8974955p9YxV

支持版本

  • 支持2.8-5.0版本的同步。
  • 支持codis。
  • 支持云下到云上,云上到云上,云上到云下(阿里云目前支持主从版),其他云到阿里云等链路,帮助用户灵活构建混合云场景。

注意事项

  • 如果目标库的数据逐出策略( maxmemory-policy )配置为noeviction以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见 Redis数据逐出策略介绍
  • 如果源库中的某些Key使用了过期(expire)机制,由于可能存在Key已过期但未被及时删除的情形,所以在目标库中查看(如通过info命令)到的Key数量会比源库的Key数量少。

说明:源和目标库中,未设置过期机制或未过期的Key数量是一致的。

安装 Redis-shake

# 下载 Redis-shake 安装包
$ wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'

# 解压Redis-shake 安装包
$ tar xzf redis-shake-v2.0.3.tar.gz

# 修改配置文件
$ cd redis-shake-v2.0.3/
$ vim redis-shake.conf

# 启动Redis-shake,开始执行数据迁移
$ ./redis-shake.linux -type=sync -conf=redis-shake.conf

如果启动报错,相关原因及解决方法,请参见 常见报错及解决方法


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK