首页 > 数据库 >Redis集群在线迁移

Redis集群在线迁移

时间:2024-02-27 15:14:05浏览次数:20  
标签:127.0 在线 0.1 Redis redis 集群 shake 迁移

一、redis集群迁移的几种方式

  • 离线迁移:通过rdb或者aof文件的方式,实现离线迁移
    缺点:版本限制,不同版本启动时,可能会出现覆盖数据文件的情况(也可能是集群模式的限制);需要停机,会造成数据不一致问题。
  • 使用shell脚本,单库对单库,性能极低,生产环境不能使用。
  • 主从同步:成为从节点slaveof ip port,然后再断开slavof no one
    缺点:需要停止写入数据,否则也会造成数据不一致;集群模式下,操作复杂。
  • 使用阿里开源redis-shake工具,推荐,下面重点讲解。

二、redis-shake官方百科

官方wiki文档:https://github.com/alibaba/RedisShake/wiki/%E7%AC%AC%E4%B8%80%E6%AC%A1%E4%BD%BF%E7%94%A8%EF%BC%8C%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE%EF%BC%9F
本次迁移重点关注章节3.2、章节4、章节5。

本次集群版cluster到集群版cluster配置说明

修改redis-shake.conf内容如下:

# 日志输出配置
log.file = /weblogic/var/redis-shake.log
# 源集群配置
source.type = cluster
source.address = 127.0.0.1:20441;127.0.0.1:20441;127.0.0.1:20441
source.password_raw =
# 目标集群配置
target.type = cluster
target.address = 127.0.0.1:6379;127.0.0.1:6379;127.0.0.1:6379
target.password_raw =
# 当源目的有重复 key 时是否进行覆写
key_exists = rewrite

执行命令:

./redis-shake.linux -conf=redis-shake.conf -type=sync &
tail -f redis-shake.log

三、全能宝redis集群本次迁移中遇到的一些问题和经验

1.部署redis-shake的机器,要对源集群和目标集群都有网络权限
2.内存、读写io及内网带宽占用:

redis-shake的sync模式同步效率默认为32线程,效率非常高,但是非常占用源集群的内存以及内网带宽,一方面是因为,sync同步模式分为以下三步:
a. 等待源端save rdb完毕
b. 全量同步阶段,显示百分比
c. 增量同步,出现字样sync rdb done后,当前dbSyncer进入增量同步
本次全能宝迁移的数据体量如下图:

可以看出,内存占用平均在1gb左右,所以执行bgsave至少需要1gb的空闲内存。
rdb文件的大小,大约在300-400mb左右,所以同步rdb文件的读写io占用也很高。
所以,生产环境尽量选择夜深人静的时候迁移。

3.集群模式下,尽量使用源集群的从节点进行数据同步,减少对源集群的性能影响
4.redis-shake截至2022.8.17最新版本为3.0.0,但是3版本为重构版,目前功能不全,所以本次使用的2.1.1版本。

 

标签:127.0,在线,0.1,Redis,redis,集群,shake,迁移
From: https://www.cnblogs.com/wmy666/p/18036907

相关文章

  • Redis部署-主从复制
    原理分master和slave;master以写为主,slave只支持读,master的数据发生变化时自动同步到slave。作用读写分离:主机提供写,从机提供读,可提高性能,分散负载压力容灾恢复:主机与从机数据一致,其中一台机器宕机后,另一台机器能正常使用数据备份:主机与从机分散在不同的机器,数据一致,起到了数......
  • 【进阶篇】使用 Redis 实现分布式缓存的全过程思考(一)
    目录前言一、关于缓存二、基本数据结构三、缓存注解3.1自定义注解3.2定义切点(拦截器)3.3AOP实现3.4使用示例四、数据一致性4.1缓存更新策略4.2缓存读写过程五、高可用5.1缓存穿透5.2缓存击穿5.3缓存雪崩5.4Redis集群六、文章小结前言写在前面,让我们从3个问题开始今天的文章:......
  • 项目开发中 Redis 缓存和数据库一致性问题及解决方案
    引入Redis缓存提高性能如果公司的项目业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可,这时架构模型是这样的:但随着业务量的增长,你的项目业务请求量越来越大,这时如果每次都从数据库中读数据,那肯定会有性能问题。这个阶段通常的做法是,引入缓存来提高读性......
  • Rancher 无法删除集群的Solution
    Rancher无法删除集群的Solution不同版本的Rancher都能遇到该问题,此问题中,Rancher版本为v2.6.0当我们先删除节点,并在节点宿主机上删除了对应的服务器,再通过Rancher界面去删除托管/自建立集群时,往往这个操作会卡住,并出现报错:{"type":"error","links":{},"code":"PermissionDe......
  • 使用python批量删除redis key
     比如我的业务。刚上线默认为超级管理员新增权限--请导出id用于清缓存svc格式请注意分页需要导出全部selectCONCAT('@rbac/ent/aclgr/',e.id)as需要清理缓存的rediskeyfroment_rbac_groupewherenotexists(selectp.`groupid`froment_rbac_group_permissionp......
  • Redis扩展功能
    Redis事务一次操作执行多条命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入、不许加塞。由于redis只能在执行前检查一组命令的语法错误,在命令执行时出现异常没法全体回滚,所以是弱一致性。multi+exec组合正常执行执行前队......
  • 将 Redis 数据放置在 Controller 层还是 Service 层
    在三层架构中,将Redis数据放置在Controller层还是Service层,同样需要根据具体的业务需求和设计原则来决定。以下是一些常见的考虑因素:数据访问频率:如果某个数据在多个请求之间频繁被读取或写入,可以考虑将其放置在Service层的缓存中,以减少对Redis的频繁操作。这样可以提高......
  • 【性能测试】Redis中的缓存雪崩、缓存击穿、缓存穿透问题详解
    一.什么是缓存雪崩当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,这种情况会导致连锁反应,整个系统可能会崩溃。1.......
  • DockerSwarm集群初始化
    使用Dockers部署Nacos集群前置条件:多个机器节点每个节点已经安装已经安装docker准备机器##修改每个master节点的hostnameipad|grep-E'ens33$'|awk'{print$2}'|sed's/\(.*\)\/.*/swarm\.master\.\1/'|xargshostnamectlset-hostname##修改每个work节点的......
  • CentOS下安装redis 详细步骤
    1、前言Redis版本6.2.5服务器版本LinuxCentOS7.664位2、下载Redis下载网址:https://redis.io/download/笔者使用wget在线下载wgethttp://download.redis.io/releases/redis-6.2.5.tar.gz3、解压、安装3.1使用tar解压压缩包tar-xzvfredis-6.2.5.tar.gz3.2......