Redis集群到集群迁移
一.物理导入
简介
redis集群在存储数据时,是根据槽点进行存储。例如老集群A如下:
都在一台机器,实际可以在多台机器上。
主节点:7000(0-5460) 7001(5461-10922) 7002(10923-16383)
从节点:7003 7004 7005
那如果有10万数据,它们就会按照hash值进行计算,按槽点存储。每个槽点将存储一些数据,那槽点的拥有者也将拥有和存储那些数据。
实际操作
老集群:1.1.1.1
主节点:7000(0-5460) 7001(5461-10922) 7002(10923-16383)
从节点:7003 7004 7005
新集群:1.1.1.2
主节点:6000(0-3000) 6001(3001-5460) 6002(5461-10922) 6003(10923-16383)
从节点:6004 6005 6006 6007
可以发现新集群的节点多了一个,他把6000节点的曹点分了一些过去,承担压力。
将老集群的7000节点的appendonly.aof用pipe方法导入到6000节点上。再将同文件导入到6001节点上。肯定会有一半左右报错,因为那些值在hash后,槽点为3555,但你要导入到6000节点里,那是不接受的,其他对应的会导入进去。所以不用管报错,效验数据总数即可。
cat /redis/7000/appendonly.aof | redis-cli -c -p 6000 -h 1.1.1.2 --pipe
cat /redis/7000/appendonly.aof | redis-cli -c -p 6001 -h 1.1.1.2 --pipe
aof文件里就是写入的命令语句,再利用pipe批量导入,是非常快捷而稳定的。
像上面,槽点是分开的,就都导入,多余的自然是没法写入的,只导入固定部分即可。然后用dbsize
命令去对比一下所有节点总数据量,也要考虑数据中可能有过期策略的值,会导致数据总数一直减少。
最新文章
- web前端之性能优化
- php 接受处理二进制数据流并保存成图片
- 【HDU】2147 kiki's game
- jquery过滤器之:contains()、.filter()
- @SuppressWarnings含义
- 以http形式启动uwsgi服务
- oracle case when 语句
- C# Process.Kill() 拒绝访问(Access Denied) 的解决方案
- 便利的html5 之 required、number 、pattern
- 【Debian百科】巨页
- 利用servlet做转发,实现js跨域解决同源问题
- pyqt 简单判断指定的内容强度(比如帐号)
- SQLLoader1(简单测试,以控制文件方式导入数据)
- ASP.NET MVC:Razor 引入命名空间
- Tornado基于MiddleWare做中间件
- [转]python中pandas库中DataFrame对行和列的操作使用方法
- JSP总结(一)——基础(汇总)
- Python pickle使用
- Python3基础 list 查看filter()返回的对象
- 基于OpenGL编写一个简易的2D渲染框架-10 重构渲染器-Pass
热门文章
- 美妙绝伦面向node引用-zico图标(逐浪矢量全真图标)1.9发布
- vivo统一告警平台设计与实践
- 洛谷 P5224 - Candies(循环卷积)
- CentOS6.9安装python3
- zabbix忘记密码——进入数据库修改
- phpMyAdmin简介及安装
- MybatisPlus入门程序
- 学习java 6.29
- E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing
- 零基础学习java------37---------mybatis的高级映射(单表查询,多表(一对一,一对多)),逆向工程,Spring(IOC,DI,创建对象,AOP)