Redis - 主从和集群模式下的数据容灾测试
2021-07-18 本文已影响0人
红薯爱帅
1. 概述
测试目标
在redis主从模式和redis集群模式下,master没有持久化,slave有持久化,master下线再重启,master肯定没有数据,slave数据是否也会被清空?
测试条件
- 主从模式,分布在两台机器,都做了数据持久化,rdb和appendonly
- 集群模式,在一台机器启动3主3从,共6个节点,都做了数据持久化,rdb和appendonly
2. 主从模式
- 停止运行master,slave不会自动升级为master,拥有全量数据,依然可读
- 启动master,slave会自动连接到master,恢复master-slave关系,并同步master数据到slave。
- 如果启动master前,
删除rdb和appendonly数据文件
,则slave也为空
3. 集群模式
|Host IP|Host Port|Role|
|--|--|
|10.176.154.39|7001|master|
|10.176.154.39|7002|master|
|10.176.154.39|7003|master|
|10.176.154.39|7004|slave of master 7003|
|10.176.154.39|7005|slave of master 7001|
|10.176.154.39|7006|slave of master 7002|
- 如上表,在
3主3从
的集群情况下,停止运行master 7001
,slave 7005
会自动升级为master
,接管原master处理的所有hash slots
- 启动
master 7001
,会自动连接到redis集群,并作为原slave 7005
的slave存在,即使master和slave都没有持久化,也不存在数据丢失
4. 结论
论redis持久化的重要性
任何情况下,都要开启redis持久化,rdb或appendonly都可以。
并且,在生产环境一定
要测试持久化是否生效。
否则,数据全量丢失时将追悔莫及。
论redis的重要性
Redis可以作为应用程序进程内存的扩展,帮助我们更好地维护一些元数据,便于维护和检索。
也可以作为进程间通信的一种方式,例如pub/sub、数据共享、消息队列等。
但是,由于redis的持久化是异步的,是不可靠的。
所以,重要的业务数据,特别是和money相关的,还是需要采用数据库进行存储,例如订单、钱包、优惠券等。