当前位置: 首页 > news >正文

Redis-RedisShake数据迁移工具

一、什么是 RedisShake

RedisShake 是一个用于处理和迁移 Redis 数据的工具,它提供以下特性:

  1. Redis 兼容性:RedisShake 兼容从 2.8 到 7.2 的 Redis 版本,并支持各种部署方式,包括单机,主从,哨兵和集群。
  2. 云服务兼容性:RedisShake 与主流云服务提供商提供的流行 Redis-like 数据库无缝工作,包括但不限于:
    • 阿里云-云数据库 Redis 版
    • 阿里云-云原生内存数据库Tair
    • AWS - ElastiCache
    • AWS - MemoryDB
  3. Module 兼容:RedisShake 与 TairString,TairZSet 和 TairHash 模块兼容。
  4. 多种导出模式:RedisShake 支持 PSync,RDB 和 Scan 导出模式。
  5. 数据处理:RedisShake 通过自定义脚本实现数据过滤和转换。

二、安装部署

参考文档:快速上手 | RedisShake

# 下载包地址
https://github.com/tair-opensource/RedisShake/releases$ tar -xf redis-shake-linux-amd64.tar.gz$ cd redis_shake# 主要配置以下内容
vim shake.toml
[sync_reader]             //源端
cluster = true            # set to true if source is a redis cluster
address = "192.162.33.6:7001" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = "F2r?ria2da71O63"              # keep empty if no authentication is required
tls = false
sync_rdb = true # set to false if you don't want to sync rdb
sync_aof = true # set to false if you don't want to sync aof
prefer_replica = true # set to true if you want to sync from replica node[redis_writer]             //目的端
cluster = true            # set to true if target is a redis cluster
sentinel = false           # set to true if target is a redis sentinel
master = ""                # set to master name if target is a redis sentinel
address = "192.162.33.123:7001" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = "F2r?ri7?eraz171O63"              # keep empty if no authentication is required
tls = false
off_reply = false       # ture off the server reply# 启动命令
$ ./redis-shake shake.toml

三、数据验证

在增量同步阶段经常需要判断源端与目标端数据是否一致,介绍两种经验方法:

  1. 通过日志或者监控,观察到 RedisShake 的同步流量为 0,认为同步结束,两端一致。
  2. 对比源端与目的端 Key 数量是否相等,如果相等,认为一致。

如果 Key 带有过期时间,会导致 Key 数量不一致。原因:

  1. 因为过期算法限制,源端中可能存在一些 Key 已经过期但实际上没有被删除,这批 Key 在目的端可能会被删除,导致目的端 Key 数量少于源端。
  2. 源端和目的端独立运行,各自的过期算法独立运行,过期算法具有随机性,会导致源端和目的端删除的 Key 不一致,导致 Key 数量不一致。

在实践中,带有过期时间的 Key 一般认为是允许不一致的,不会影响业务,所以可以仅校验不带有过期时间的 Key 数量是否一致。如下所示,应当分别计算源端和目的端的 $keys-$expires 的值是否一样。

127.0.0.1:7001> info keyspace
# Keyspace
db0:keys=4463175,expires=2,avg_ttl=333486

四、跨版本迁移参考:

跨版本迁移 | RedisShake

http://www.xdnf.cn/news/609805.html

相关文章:

  • Linux--初识文件系统fd
  • Python的FastApi随笔记
  • MySQL强化关键_016_存储引擎
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • 第四十七节:图像分割-分水岭算法
  • canal实现mysql数据同步
  • JavaWeb面试题 (一)
  • window 显示驱动开发-视频内存供应和回收(三)
  • STM32F103_Bootloader程序开发01 - 什么是IAP?跟OTA有什么关系?
  • 关于 Web 风险点原理与利用:6. 逻辑风险点
  • 跨平台三维可视化与图形库.VTK图形库.
  • CATIA高效工作指南——常规配置篇(三)
  • SAP在化工行业的数字化转型:无锡哲讯科技的赋能实践
  • 微气象在线监测装置:精准感知环境变化的科技之眼
  • win32相关(句柄表)
  • 【Mini-F5265-OB开发板试用测评】2、关于platform.c中的串口号初始化修改的建议
  • GO语言学习(九)
  • Flask项目打开总是上一个项目的网页
  • 短视频与直播场景下的美颜SDK优化方案:滤镜与特效如何平衡性能与美感?
  • 精益数据分析(80/126):病毒式传播系数实战计算与增长策略优化
  • 中电金信X中远海科推出“银航宝”解决方案,共绘航运金融新图景
  • Python Scikit-Learn核心流程
  • Vue3中的TSX:用函数式思维构建现代组件的实践指南
  • 基于vite构建的vue项目添加路由时注意要利用import.meta.glob映射构建生成后的路径
  • 计算机网络学习(三)——HTTP
  • 详解Mysql的快照读和当前读区别
  • 基于BERT预训练模型(bert_base_chinese)训练中文文本分类任务(AI老师协助编程)
  • 25年上半年五月之软考之设计模式
  • Linux基本指令(二)
  • 【Linux】基础开发工具(下)