官方文档:

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的更多相关文章

  1. Redis数据迁移同步工具(redis-shake)

    前言 最近线上一台自建redis服务的服务器频繁报警,内存使用率有点高,这是一台配置比较简陋(2C8G)的机子了,近期也打算准备抛弃它了.抛弃之前需对原先的数据进行迁移,全量数据,增量数据都需要考虑, ...

  2. mac mamp环境 和linux下 安装redis 和可视化工具 Redis Desktop Manager

    mac下安装 第一步:安装redis 1. brew install redis 2.启动服务/usr/local/opt/redis/bin/redis-server 3.配置redis密码访问 编 ...

  3. Windows下Redis安装+可视化工具Redis Desktop Manager使用

    Redis是有名的NoSql数据库,一般Linux都会默认支持.但在Windows环境中,可能需要手动安装设置才能有效使用.这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你. ...

  4. Windows 64位下安装Redis 以及 可视化工具Redis Desktop Manager的安装和使用

    二.下载Windows版本的Redis 由于现在官网上只提供Linux版本的下载,所以我们只能在Github上下载Windows版本的Redis Windows版本的Redis下载地址:https:/ ...

  5. redis可视化管理工具Redis Desktop Manager

    Redis Desktop Manager 官方下载地址:https://redisdesktop.com/download

  6. Redis主从同步介绍

    Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...

  7. 推荐一个好的Redis GUI 客户端工具

    推荐一个好的Redis GUI 客户端工具 Redis Desktop Manager  

  8. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器

    为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...

  9. 【Redis】Linux下Redis安装与redis-desktop-manager使用(无法连接Redis服务器解决方法)

    新手小白开始学习nosql数据库Redis,首先从安装入手. 全文分两部分:Linux下安装redis,可视化工具redis desktop manager的简单使用. 一.安装 下载,解压缩和编译R ...

  10. 用 C# 写一个 Redis 数据同步小工具

    用 C# 写一个 Redis 数据同步小工具 Intro 为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中.(原本打算找一个已有的工具去做,找了一 ...

随机推荐

  1. Sqlite管理工具

    ! https://zhuanlan.zhihu.com/p/375188242 SQLiteStudio 开源免费的一款sqlite数据库管理软件,支持windows,linux,macos 官网: ...

  2. LeetCode刷题日记 2020/8/23

    题目描述 给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] ...

  3. Java注解之获取注解内部数据的原因分析

    我们都知道从JDK1.5开始,注解开始被支持使用,当我们在使用注解的时候感觉比配置文件用起来更加简便和清爽.配置文件是通过解析配置文件的内容获取到数据,那么为什么仅仅在类.方法或者属性上添加注解被注解 ...

  4. VB6的OfficeMenu控件 - 开源研究系列文章

    这次将原来VB6中喜欢和使用到的OfficeMenu的控件做一个使用介绍. 上次介绍了VB6中的控件引擎,但是那个只针对基本的控件,这个OfficeMenu控件在当时是收费的,笔者找度娘好不容易才下载 ...

  5. 【STL源码剖析】string类模拟实现 了解底层-走进底层-掌握底层【超详细的注释和解释】

    文章目录 博主对大家的话 前言 实现过程一些要注意的点 STL中string类模拟实现 尾声 博主对大家的话 从今天开始,STL源码剖析的专栏就正式上线了!其实在很多人学习C++过程中,都是只学习一些 ...

  6. 使用KVM创建OEL虚拟机

    在Linux工作站上使用KVM创建虚拟机. 首先说下我的需求: 1.其他LAN内的笔记本也可以连接到这些KVM的虚拟机,因此需要配置使用桥接网络 2.创建一个虚拟机,采用最小化安装系统,作为基础模版, ...

  7. 4.if语句--《Python编程:从入门到实践》

    4.1 检查多个条件   1.使用 and 检查多个条件   2.使用 or 检查多个条件 4.2 检查特定值是否包含在列表中   使用 in 检查特定值是否在列表中 >>> req ...

  8. sshd命令-测试sshd_config配置是否正确

    sshd命令来自于英文词组"SSH daemon"的缩写,其功能是用于openssh服务器守护进程.openssh套件能够为两台主机之间建立加密的.可信任的数据通信服务,是rlog ...

  9. NC24734 [USACO 2010 Mar G]Great Cow Gathering

    题目链接 题目 题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, ...

  10. Windows也能拥有好用的命令行吗?Powershell+Terminal折腾记录(v1.0版本)

    PS:本文写于2021年,现在已经是2024年,有了很多新变化,我在接下来的文章里会继续更新. 前言 Windows一向以图形化操作入门容易著称,所以对于命令行的支持一直为人所诟病,比起Linux或者 ...