redis-shake工具是阿里用go写的开源工具

开始前准备

1. 确保ECS实例与Redis实例属于同一专有网络(即实例基本信息中的专有网络ID一致)
2. 获取ECS实例的内网IP地址,即执行操作的机器IP
3. 将ECS实例的内网IP地址添加至Redis实例的白名单中

安装Redis-shake

1. 安装Redis-shake的设备,例如ECS实例
2. 使用下述命令下载工具
# wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'
3. 解压Redis-shake文件
# tar xzf redis-shake-v2.0.3.tar.gz

迁移Redis

在安装Redis-shake的设备上,执行数据迁移

修改配置文件

1. 执行下述命令进入解压后的目录并修改配置文件:
# cd redis-shake-v2.0.3/ && vim redis-shake.conf
conf.version = 1
id = redis-shake
log.file = /data/software/redis-shake-v2.0.3/redis-shake.log
log.level = info
parallel = 8
source.type = cluster
source.address = 172.18.0.232:7001;172.18.0.233:7001;172.18.0.234:7001
source.password_raw = username:password //用户名:密码
source.auth_type = auth
target.type = standalone
target.address = r-wz9xxxgi3xxxxxgj:6379 //云redis地址和端口
target.password_raw = r-wz9xxxgi3xx:xxxSO0 //用户名:密码
target.auth_type = auth
target.db = -1 //是否迁移到同一个db中去
key_exists = rewrite
filter.db.whitelist = 0;70;71;72;73

启动Redis-shake,开始执行数据迁移

./redis-shake.linux -type=sync -conf=redis-shake.conf

Redis-shake将在屏幕上打印运行的日志信息。

迁移日志观察

1. 当打印的日志出现sync rdb done,表示完成全量数据迁移,接下来进入增量数据迁移阶段。
2020/12/16 21:02:36 [INFO] DbSyncer[0] total = 4.00MB - 4.00MB [100%] entry=97531
2020/12/16 21:02:36 [INFO] DbSyncer[0] sync rdb done

2. 增量迁移日志
2020/12/16 21:03:10 [INFO] DbSyncer[0] sync: +forwardCommands=645 +filterCommands=0 +writeBytes=657255
2020/12/16 21:03:11 [INFO] DbSyncer[0] sync: +forwardCommands=28 +filterCommands=0 +writeBytes=28532
2020/12/16 21:03:12 [INFO] DbSyncer[0] sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0
  • forwardCommands:源库发送过来的命令数。
  • filterCommands:被过滤的命令数,例如在Redis-shake配置文件中设置了过滤某些库。
  • writeBytes:源库发送过来的字节数。

暂停向源库写入数据,等待返回日志中writeBytes对应值连续多次为0时,使用Ctrl+C组合键停止运行Redis-shake。

1. 当多次+writeBytes为0,则可终止同步
2020/12/16 21:03:12 [INFO] DbSyncer[0] sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0
2020/12/16 21:03:12 [INFO] receive signal interrupt

参考:  https://help.aliyun.com/document_detail/111066.html?spm=a2c4g.11186623.6.646.4bd72074q7LKOV

https://www.cnblogs.com/xingxia/p/redis_migration_tool.html

Redis-shake工具 [ 自建redis集群->云redis主从 ]的更多相关文章

  1. Couchbase集群和Redis集群解析

    Couchbase集群和Redis集群解析 首先,关于一些数据库或者是缓存的集群有两种结构,一种是Cluster;一种是master-salve. 关于缓存系统一般使用的就是Redis,Redis是开 ...

  2. Redis集群教程(Redis cluster tutorial)

    本博文翻译自Redis官网:http://redis.io/topics/cluster-tutorial        本文档以温和的方式介绍Redis集群,不使用复杂的方式来理解分布式系统的概念. ...

  3. 实现Redis Cluster并实现Python链接集群

    目录 一.Redis Cluster简单介绍 二.背景 三.环境准备 3.1 主机环境 3.2 主机规划 四.部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动R ...

  4. Linux--6 redis订阅发布、持久化、集群cluster、nginx入门

    一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...

  5. Redis源码解析:25集群(一)握手、心跳消息以及下线检测

    Redis集群是Redis提供的分布式数据库方案,通过分片来进行数据共享,并提供复制和故障转移功能. 一:初始化 1:数据结构 在源码中,通过server.cluster记录整个集群当前的状态,比如集 ...

  6. Redis安装(单机及各类集群,阿里云)

    Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很 ...

  7. redis入门指南(六)—— 集群

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 配置集群 1.配置集群,集群解决了单点故障以及单台机器内存上限的问题,使用集群时,只需要将配置文 ...

  8. Redis学习笔记(九)——集群

     一.概述 Redis Cluster与Redis3.0.0同时发布,以此结束了Redis无官方集群方案的时代. Redis Cluster是去中心化,去中间件,也就是说,集群中的每个节点都是平等的关 ...

  9. redis集群之REDIS CLUSTER

    redis集群之REDIS CLUSTER 时间 2016-04-11 17:05:00  NoSQL_博客园 原文  http://www.cnblogs.com/zhanchenjin/p/537 ...

  10. Redis集群~StackExchange.redis连接Twemproxy代理服务器

    回到目录 本文是Redis集群系列的一篇文章,主要介绍使用StackExchange.Redis进行Twemproxy(文中简称TW)代理服务的连接过程,事务上,对于TW来说,我们需要理解一下它的物理 ...

随机推荐

  1. CentOS7下MySQL数据的导入和导出

    一.数据导入 (1)进入mysql [root@localhost mysql]# mysql -u root -p (2)转到对应数据库下 mysql> use zenith_star; (3 ...

  2. Java笔记_this关键字_HomeWork(1 - 4 题)

    第一题 /** * @ClassName HomeWork01 * @Description TODO * @Author Orange * @Date 2021/4/23 8:14 * @Versi ...

  3. python菜鸟学习: 11. 装饰器的基础用法

    # -*- coding: utf-8 -*-# decorator# 定义:本质是函数,就是为其他函数添加附件功能# 原则:# 1.不能修改被装饰的函数的源代码# 2.不能修改被装饰的函数的调用方式 ...

  4. nestjs mongoose关联查询

    nestjs,mongoose关联查询网上搜不到了,查看了nest/mongoose.d.ts文件,分享一波 user.model.ts import { Prop, Schema, SchemaFa ...

  5. 原始的jdbc

    jdbc的概念 什么是jdbc? jdbc是java数据库连接.为多种关系型数据库提供统一的访问. jdbc的操作步骤 导入jar包 加载驱动 获取数据库连接 获取执行者对象 执行SQL语句 处理结果 ...

  6. 20203412马畅若 实验三 《Python程序设计》Socket编程技术实验报告

    实验三 Socket编程技术 课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2020年5月30日必修/选修: 公选课 ##1. ...

  7. 808.11ac的MAC层

    MAC层是802.11的主要功能部分.上层应用通过调用MAC层提供的接口原语调用MAC层的功能. 在内部,MAC由除了函数还有数据,叫MIB,存储MAC的各种参数.SME是一个单独的模块,用来跟接口函 ...

  8. (1028) 权限,chmod、chgrp、chown详解

    https://www.cnblogs.com/Berryxiong/p/6193866.html 例1: $ chgrp - R book /opt/local /book 改变/opt/local ...

  9. [vsCode]Visual Studio Code环境变量不同步

    很奇怪的事情,在设置好Path环境变量后,powershell正常了, 但是vscode不正常 解决方法竟然是: 确认{在PowerShell运行正常}后,关闭{vsCode},进入{管理员模式的Po ...

  10. git 命令 使用记录

    这是ider 在pull 代码是报的异常大概意思是本机有未处理的合并可是点击view files都之前删除的一些文件 这种问题可以使用一下命令 git fetch --all && g ...