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

redis数据迁移教程(使用RedisShake实现不停机迁移十分便捷)

1.我的场景

需要把本地的redis数据上传到阿里云服务器上面,服务器上redis并没有开aof持久化,但是将rdb文件上传至服务器后每次重启redis,rdb文件会被覆盖导致无法同同步数据,最终决定使用RedisShake

2.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 通过自定义脚本实现数据过滤和转换。

更详细内容请见官方文档

3.使用教程

3.1首先下载RedisShake

https://github.com/tair-opensource/RedisShake/releases

  • 解压后,得到 redis-shake 执行程序和 shake.toml 配置文件。windows系统自行将redis-shake加.exe后缀

3.2 编辑shake.toml配置文件

其中reader,用来对接不同的源端

  • 对于从备份中恢复数据的场景,可以使用 rdb_reader
  • 对于数据迁移场景,优先选择 sync_reader。一些云厂商没有提供 PSync 协议支持,可以选择scan_reader

3.2.1 rdb迁移

# 全局配置
log_file = "shake.log"       # 日志文件路径
log_level = "info"           # 日志级别:info


# 源数据
[rdb_reader]
filepath = "D:/develop/Redis-x64-3.2.100/dump.rdb"  # 你的rdb文件位置
# 目标 Redis 配置

# 目标redis
[redis_writer]
cluster = false    # false就是单例, true是集群
address = "192.168.230.131:6379" # 如果cluster为true, 只需要填集群中的任意一个节点地址即可同步到整个集群
username = ""              # ​开了ACL写用户名  没开空着
password = "123456"              # 如果有密码,开没开ACL都写  否则空着
tls = false



# 高级配置
[advanced]
pipeline_count_limit = 1024   # 默认管道大小
rdb_restore_command_behavior = "rewrite" # 遇到重复键时覆盖

3.2.2    sync Reader

当源端数据库兼容 PSync 协议时,推荐使用 sync_reader

优势:数据一致性最佳,对源库影响小,可以实现不停机的切换

# 全局配置
log_file = "shake.log"       # 日志文件路径
log_level = "info"           # 日志级别:info


# 源数据
[sync_reader]
cluster = false            # set to true if source is a redis cluster
address = "127.0.0.1:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = ""              # keep empty if no authentication is required
tls = false
sync_rdb = true # 是否同步 RDB,设置为 false 时,RedisShake 会跳过全量同步阶段
sync_aof = true # 是否同步 AOF,设置为 false 时,RedisShake 会跳过增量同步阶段,此时 RedisShake 会在全量同步阶段结束后退出

# 目标redis
[redis_writer]
cluster = false    # false就是单例, true是集群
address = "192.168.230.131:6379" # 如果cluster为true, 只需要填集群中的任意一个节点地址即可同步到整个集群
username = ""              # ​开了ACL写用户名  没开空着
password = "123456"              # 如果有密码,开没开ACL都写  否则空着
tls = false



# 高级配置
[advanced]
pipeline_count_limit = 1024   # 默认管道大小
rdb_restore_command_behavior = "rewrite" # 遇到重复键时覆盖

3.2.3可选项

RedisShake 提供了多种内置的过滤规则,用户可以根据需要选择合适的规则。

[filter]
allow_keys = ["user:1001", "product:2001"] # 允许的键名
allow_key_prefix = ["user:", "product:"] # 允许的键名前缀
allow_key_suffix = [":active", ":valid"] # 允许的键名后缀
allow_key_regex = [":\\d{11}:"] # 允许的键名正则,11位手机号
block_keys = ["temp:1001", "cache:2001"] # 阻止的键名
block_key_prefix = ["temp:", "cache:"] # 阻止的键名前缀
block_key_suffix = [":tmp", ":old"] # 阻止的键名后缀
block_key_regex = [":test:\\d{11}:"] # 阻止的键名正则,11位手机号,前缀为test

如果不设置这些选项,默认允许所有键。

[filter]
allow_db = [0, 1, 2]
block_db = [3, 4, 5]

也可以指定迁移具体的库或者阻止具体的库, 不写则默认所有库进行迁移

3.3 执行redis-shake

redis-shake shake.toml

至此应该成功了,若显示 redis-shake source db is not doing bgsave! continue. 

可以先看看数据迁移过去没有,是有概率能迁移过去的,可以考虑从过滤项入手看一下,我将过滤项的allow_db删掉后就不会出现那个问题了,其余的没尝试过请自行探索

4.官方文档地址

https://tair-opensource.github.io/RedisShake/zh/

相关文章:

  • liunx学习(四)(文本处理(stdout stderr,Cut,paste,sort,tr,head,Tail,join,Split,grep,...))
  • OSI模型
  • 使用 QML 和 QtSql 实现 SQLite 数据库操作
  • FPGA基础 -- Verilog常用关键字
  • langChainv0.3学习笔记(初级篇)
  • mysql创建数据库和表
  • 【网络安全工程】任务11:路由器配置与静态路由配置
  • 锐势信息的面试
  • systemtap学习笔记
  • Zama TFHE-rs v1.0 发布
  • 系统部署【信创名录】及其查询地址
  • MySql的安装及数据库的基本操作命令
  • 【五.LangChain技术与应用】【12.LangChain语言模型介绍:AI语言处理的核心技术】
  • Unity网络开发基础 (2) 网络协议基础
  • 【VUE2】第三期——样式冲突、组件通信、异步更新、自定义指令、插槽
  • C语言学习day25:WinAPI编程进阶06-游戏辅助窗体监视热键讲解
  • Linux 4.4 内核源码的目录结构及其主要内容的介绍
  • go context学习
  • SQL Server查询计划操作符(7.3)——查询计划相关操作符(10)
  • maven的配置文件settings.xml
  • 中东睿评|特朗普中东三国行:喧嚣的形式与空洞的实质
  • 地下5300米开辟“人造气路”,我国页岩气井垂深纪录再刷新
  • 在笔墨金石间,看胡问遂与梅舒适的艺术对话
  • 尊严的代价:新加坡福利体系下的价值困境
  • 全国层面首次!《防震减灾基本知识与技能大纲》发布
  • 上海浦东机场1号、2号航站楼均推出国内出发安检24小时服务