redis迁移同步工具-redis-shake
官方文档:
https://github.com/alibaba/RedisShake/wiki/快速开始:数据迁移
下载:
https://github.com/alibaba/RedisShake/releases
redis-shake.toml 单机到单机配置,源 6383 目标端 6384

启动,增量同步
./redis-shake-linux-amd64 redis-shake.toml
--此启动方式将会 把源端所有数据增量同步到目标端, 目标端现有数据key与源端相同的情况下,会被覆盖, 不同的情况下会保留目标端现有数据,单机同步到集群时需用fifter脚本过滤 源库db到目标库db0
如有数据清洗需求,可使用filter 脚本
官方文档:https://github.com/alibaba/RedisShake/wiki/使用-filters-做数据清洗
脚本说明:
filter 脚本使用 lua 语言编写,在启动 redis-shake 的时候通过命令行传入:
./redis-shake sync.toml ../filters/print.lua
filter 脚本内需要实现一个名为 filter 的 lua 函数:
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
-- write something
return 0, db_id
end
参数说明:
id:number 类型,redis-shake 会对所有数据进行编号,无意义
is_base:boolean 类型,代表这条数据是否是 dump.rdb 中的,可用于跳过存量数据,只同步增量数据。
group:string 类型,代表这条数据是什么类型的,大写,比如 STRING、HASH、LIST、SET 等
cmd_name:string 类型,代表 Redis 命令,大写,比如:HSET、XADD、LPOP 等
keys:table 类型,代表命令中的 key,这里使用 table 类型是因为有多个 key 的命令,比如 MSET。
slots:table 类型,对应 key 所属于的 slot。
db_id:number 类型,databse id。
timestamp_ms:时间戳,目前不可用。
返回值说明:
code:可选值 0,1,2
0:允许此条数据发送至对端
1:跳过此条数据
2:不应该出现此数据,立即终止 redis-shake
db_id:代表这条命令会发送到哪个 database,只在 swap.db 中使用。一般情况下与传入 db_id 保持一致即可。
示例脚本1:
---指定db5数据同步到db6
---指定db8数据同步到db9
---其他db数据不同步
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
if db_id == 5 then
-- print("db_id is 5, redirect to 6")
return 0, 6
elseif db_id == 8 then
-- print("db_id is 8, redirect to 9")
return 0, 9
else
return 1, db_id
end
end
示例脚本2:过滤掉前缀为 ABC 的数据:
-- skip keys prefixed with ABC
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
if #keys ~= 1 then
return 0, db_id -- allow
end
if string.sub(keys[1], 0, 3) == "ABC" then
return 1, db_id -- disallow
end
return 0, db_id -- allow
end
示例脚本3: 过滤前缀AB并指定同步db 10 到 db 11
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
if #keys ~= 1 then
return 0, db_id -- allow
end
--- 0开始截取的索引 2结束时的索引
if string.sub(keys[1], 0, 2) == "AB" and db_id == 10 then
return 0, 11 -- disallow ---同步到db11
else
return 1, db_id -- allow ---其他库都不同步
end
end
redis迁移同步工具-redis-shake的更多相关文章
- Redis数据迁移同步工具(redis-shake)
前言 最近线上一台自建redis服务的服务器频繁报警,内存使用率有点高,这是一台配置比较简陋(2C8G)的机子了,近期也打算准备抛弃它了.抛弃之前需对原先的数据进行迁移,全量数据,增量数据都需要考虑, ...
- mac mamp环境 和linux下 安装redis 和可视化工具 Redis Desktop Manager
mac下安装 第一步:安装redis 1. brew install redis 2.启动服务/usr/local/opt/redis/bin/redis-server 3.配置redis密码访问 编 ...
- Windows下Redis安装+可视化工具Redis Desktop Manager使用
Redis是有名的NoSql数据库,一般Linux都会默认支持.但在Windows环境中,可能需要手动安装设置才能有效使用.这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你. ...
- Windows 64位下安装Redis 以及 可视化工具Redis Desktop Manager的安装和使用
二.下载Windows版本的Redis 由于现在官网上只提供Linux版本的下载,所以我们只能在Github上下载Windows版本的Redis Windows版本的Redis下载地址:https:/ ...
- redis可视化管理工具Redis Desktop Manager
Redis Desktop Manager 官方下载地址:https://redisdesktop.com/download
- Redis主从同步介绍
Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...
- 推荐一个好的Redis GUI 客户端工具
推荐一个好的Redis GUI 客户端工具 Redis Desktop Manager
- 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...
- 【Redis】Linux下Redis安装与redis-desktop-manager使用(无法连接Redis服务器解决方法)
新手小白开始学习nosql数据库Redis,首先从安装入手. 全文分两部分:Linux下安装redis,可视化工具redis desktop manager的简单使用. 一.安装 下载,解压缩和编译R ...
- 用 C# 写一个 Redis 数据同步小工具
用 C# 写一个 Redis 数据同步小工具 Intro 为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中.(原本打算找一个已有的工具去做,找了一 ...
随机推荐
- Windows10磁盘占用100%和内存占用高
前言 公司配备了两台电脑,两台电脑都是安装的win10系统,一台是磁盘占用高,另一台是内存可用低. 具体情况如下: 一台外网机 8g内存,安装win10 专业版,开机一天后经常出现内存不够用,但其实都 ...
- Worktile团队协作平台介绍
目前很多的基于SaaS模式的云平台都能满足你的需求,同类产品有很多,国内的明道.Worktile.http://Tower.im等,国外的Asana.Trello.Basecamp等,Trello是好 ...
- MarkDown文件插入公式(常用格式)
1.插入公式 markdown支持插入公式,书写公式需要按照特定格式来写,涉及到希腊字母.符号.角标.基本语法等内容需要熟悉, 1.1 句中插入公式 表达式前后插入$即可 ,比如$\alpha$,显示 ...
- yapi 启动后,老是自动关闭的问题。
解决方法只需要2步: 1.在命令后面加 & 符号,放到后台执行,最终的命令为: node /usr/local/yapi/yapi/vendors/server/app.js & 2. ...
- delphi IDE 控件居中的方法
- 探索Web API SpeechSynthesis:给你的网页增添声音
Web API SpeechSynthesis是一项强大的浏览器功能,它允许开发者将文本转换为语音,并通过浏览器播放出来.本文将深入探讨SpeechSynthesis的控制接口,包括其功能.用法和一个 ...
- 2023 ASP.NET Core 开发者路线图
链接 ASP.NET Core Developer Roadmap
- Linux-CentOS7登录页面出现Hint: caps lock on,输入大小写字母反了(大小写反转问题)
问题描述:虚拟机CentOS7,输入大小写字母反了,开启capslock的时候变成小写字母了,关闭则变成大写了... 解决办法:只需要执行:setleds +caps 或 setleds -caps ...
- Excel分类后数字类型的内容值后面变为0
背景 在工作中经常遇到从日志或者其他地方拷贝过来的文本,里面使用其他分隔符进行分割.然而,使用Excel的分列功能进行分列后,发现数字类型的数值后面变为0. 有时候我们就是需要原先的数值,该怎么办呢? ...
- Java基础(一周汇总8.3--8.7)
Java基础: 声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 基础概念: 注释 "//" 这是单行注释文字 /* 这是多行注释文字 这是多行 ...