两个Redis集群 如何平滑数据迁移
问题
由于生产环境的各种原因,我们需要对现有服务器进行迁移,包括线上正在运行的 redis 集群环境 如何去做?
涉及到数据源变动,原有数据如何平滑迁移到新实例,从而可以实现无缝迁移?
方案汇总
基于 redis 自身的RDB/AOF 备份机制
- 执行
save\bgsave
触发数据持久化RDB
文件 - 拷贝redis备份文件(dump.rdb)到目标机器
- 重启目标实例重新
load
RDB 文件
- 关于 save/bgsave 的区别
命令 | save | bgsave |
---|---|---|
IO阻塞 | 同步 | 异步 |
复杂度 | O(n) | O(n) |
缺点 | 阻塞客户端 | 需要fork,消耗内存 |
基于 redis-dump
导入导出 json
备份
redis-dump 基于JSON 备份还原Redis的数据https://github.com/delano/redis-dump
# 导出命令 redis-dump –u 127.0.0.1:6379 > lengleng.json # 导出指定数据库数据 redis-dump -u 127.0.0.1:6379 -d 15 > lengleng.json # 如果redis设有密码 redis-dump –u :password@127.0.0.1:6379 > lengleng.json # 导入命令 < lengleng.json redis-load # 指定redis密码 < lengleng.json redis-load -u :password@127.0.0.1:6379
基于 redis-shake
实现 redis-cluster
迁移
redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具https://github.com/alibaba/RedisShake。
- 基于
Docker
创建两个集群
docker run --name redis-cluster1 -e CLUSTER_ANNOUNCE_IP=192.168.0.31 -p 8000-8005:7000-7005 -p 18000-18005:17000-17005 pig4cloud/redis-cluster:4.0
docker run --name redis-cluster2 -e CLUSTER_ANNOUNCE_IP=192.168.0.31 -p 8000-8005:7000-7005 -p 18000-18005:17000-17005 pig4cloud/redis-cluster:4.0
- 配置
redis-shake.conf
source.type: cluster source.address: master@192.168.0.31:7000 #配置一个节点自动发现 target.type: cluster target.address: master@192.168.0.31:8000 #配置一个节点自动发现
- 执行全量、增量同步
- restful监控指标
# 用户可以通过restful监控指标查看内部运行状况,默认的restful端口是9320: http://127.0.0.1:9320/metric
最近时间宽裕。整点花哨的系列,欢迎关注。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android性能优化来龙去脉总结
更多Android高级架构进阶视频免费学习:Android高级架构进阶视频免费分享学习网址以下是本人在工作中对经历过的性能优化的一些总结,依据故事的发展路线,将其分为了5个部分,分别是:常见的性能问题;产生性能问题的一些可能原因;解决性能问题的套路;代码建议及潜在性能问题排查项。 一 首先,我们先了解一下都有哪些性能问题 1、内存泄露。 通俗来讲,内存泄露不仅仅会造成应用内存占用过大,还会导致应用卡顿,造成不好的用户体验,至于,为什么一个“小小的”内存泄露会造成应用卡顿,我不得不拿这幅图来说说话了。 没错,这就是Android开发童鞋需要了解的GenerationalHeap Memory模型,这里我们只关心当对象在Young Generation中存活了一段时间之后,如果没被干掉,那么会被移动到Old Generation中,同理,最后会移动到Permanent Generation中。那么用脚想一想就知道,如果内存泄露了,那么,抱歉,你那块内存随时间推移自然而然将进入Permanent Generation中,然鹅,内存不是白菜,想要多少就有多少,这里,因为沙盒机制的原因,分配给你...
- 下一篇
Redis缓存技术的应用?
Redis是一款免费开源的遵守BSD协议,是高性能的NOsql 缓存 Key-value数据库。Redis支持数据持久化,可以在将内存中的数据保持在词牌当中,重启后还可以再次加载进行使用,Redis支持简单的Key-valus类型数据,同时还提供了list set zset hash等数据结构的存储,同时还支持数据备份,即主从复制。Redis的经典应用场景:1.缓存热点数据:热点数据(经常会被查询,但不是进场被修改或者删除的数据),首选是使用redis缓存,redis的性能非常优越。2.计数器:诸如统计点击数,访问数,点赞数,评论数,浏览数等应用,由于单线程,避免了并发问题,保证数据的正确性,并且100%毫秒级性能,同时开启Redis持久化,以便于持久化数据。3.单线程机制:验证前段的重复请求,可以自由扩展类似情况。可以通过red
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品