redis无损数据迁移
2024-09-05 01:13:26
在dba眼中,redis仅仅是一个缓存,不适合作为存储来使用,不管是redis-sentinel集群还是cluster集群,在redis主节点发生意外宕机时没有机制来保证主从节点数据的一致性。但是,很遗憾,业务方很喜欢将redis作为存储来使用,作为缓存使用的很少很少。
对于正常业务使用来说,redis作为存储使用,当redis发生主从切换时,业务需要根据业务日志自己进行数据补偿。但是,进行redis迁移时,一般是由dba来推动在夜间进行,这种情况下如果新的主节点存在写丢失而后让业务立刻进行数据补偿是不合适的。
这时,可以采用如下方法来进行redis-sentinel集群数据无损迁移:
1. 在主节点上执行 config set min-slaves-to-write x 命令阻塞主节点的写操作
2. 比较主从节点的 repl_offset,来判断主从节点的数据是否一致
3. 在主从数据节点的 repl_offset一致时,进行主从切换
4. 切换完成之后,修改原主节点的 min-slaves-to-write,将其修改为 0
我们将这几步放在一个脚本中,基本可以确保在1s左右完成redis主从数据节点切换而写操作无丢失。
对于redis-cluster集群主从切换,在从节点上执行 cluster failover 会阻塞该从节点的主节点直到主从节点数据一致,再进行主从切换。
最新文章
- Spring Mvc + Mybatis + sqlserver maven
- Ubuntu环境搭建系列—JavaEE篇
- 深入了解Mvc路由系统
- eclipse快捷键调试总结【转】
- android 多屏幕适配 : 第一部分
- uva 572 oil deposits——yhx
- 虚拟机里面安装Openfiler 2.99
- MongoDB - The mongo Shell, mongo Shell Quick Reference
- [Everyday Mathematics]20150113
- YII开发技巧分享——模型(models)中rules自定义验证规则
- Sqlite数据库的加密
- Django中的Ajax
- 《A First Course in Probability》-chaper8-极限定理-各类不等式
- jQuery选择器---层次选择器总结
- Day2_and_Day3 文件操作
- “Django用户认证系统”学习资料收集
- 标签EL和JSTL解读
- pythonのpygame初体验
- 把存储过程结果集SELECT INTO到临时表
- 必须知道的Spring Boot中的一些Controller注解