Redis常规的主从方案
来源:互联网 发布:网速数据控制器 编辑:程序博客网 时间:2024/05/16 09:55
【RDB和AOF介绍】
众所周知,Redis支持RDB和AOF两种持久化方式(据说作者将来要将两者整合),前者就是定时快照,定时dump数据到磁盘;后者则类似于MySQL的binlog,会记录数据的每次变动动作。
两者并不冲突,可根据需求采用。
一般来说,常规情况下(绝大多数)都只是使用RDB;
性能至上的场景(类似memcache缓存)则可以完全关闭RDB和AOF;
对于对数据完整性要求极高的情况下(这种情况下一定要考虑好是不是非要用Redis)才会使用AOF,或两者都用。
【相关配置项介绍】
RDB时,对于快照的拍照频度,就是通过配置中的save <seconds> <changes>项进行设置,没啥好说的,视实际情况设置调整。
AOF时,也就是设置appendonly为yes,还需要设置的地方有:
appendfilename appendonly.aof 即aof文件的文件名。该文件增长的比较快,因为保存了每次写操作的过程,需要特别注意。
然后根据具体情况开启下面三个的其中一项,
# appendfsync always 每一步写操作都写入aof(最及时,影响性能最大)
# appendfsync everysec 每秒钟写入一次 (折中)
# appendfsync no Redis自身不主动写入,由OS系统内核写入(最慢,效率最高)
再捡几个主要的配置项说下:
slave-serve-stale-data默认为yes,表示当slave连不上master(如master宕机)时,该slave仍然能够响应client的请求,提供服务;反之为no时,slave不继续响应client,而是返回error。
rdbcompression默认为yes,表示保存快照时会对数据进行压缩,好处是dump出的文件会变小,坏处额外增加CPU负担,若改为no则反之。这年头CPU一般不是瓶颈,尤其是对于存储设备来说,所以建议开启。
maxmemory <bytes> 一定要设置最大内存,且建议最好留出一半以上的物理内存,供持久化操作及给slave同步数据用。
【数据恢复】
当Redis挂掉后,重启服务即可,此时它会自动从rdb或aof文件恢复数据到内存。
rdb文件中的数据更直接,体积小,恢复速度快;
aof文件记录的是log,体积庞大,恢复速度很慢。
如果两个文件都有,Redis会以哪个为准呢?
答:Redis在没有aof文件时才会使用rdb文件进行恢复。
【一种常规方案】
master关闭RDB和AOF;slave开启RDB,只读。
灾难场景:
1、当slave挂掉时,重启挂掉的slave即可,slave会自动和master同步;
2、当master挂掉时(只要slave没同时挂掉,如果怕就多搞几个slave),先停掉slave与master的同步(防止master重启后把未完全恢复的数据同步覆盖到slave),再把slave的rdb文件复制到master上(复制之前尽量执行一下bgsave命令,手动进行快照,否则一些新增数据很有可能尚未持久化),重启master,待master完全恢复后再开启slave的同步。
至于master为什么不开启rdb?性能不是主要原因,而是因为master开启rdb根本没有什么实际意义,其挂掉后最后写入的数据极大可能没有被dump,相比而言数据同步的速度一般会非常快,所以这部分数据一般会顺利地同步给slave,由slave完成dump,所以slave的rdb才是完整的。所以此方案只要能保证slave没问题,master几乎可以100%恢复数据。
- Redis常规的主从方案
- Redis主从方案
- redis主从高可用方案
- keepalived和redis主从方案
- redis sentinel 主从切换方案
- Redis主从+Sentinel监控的HA方案配置
- Redis的主从架构(主从&主从从)
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案【收藏】
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- Java 二分排序
- oracle字符串分割
- leetcode 201: Bitwise AND of Numbers Range
- 数据库行列转换(示例MySQL)
- Firefox火狐浏览器优化加速about:config配置
- Redis常规的主从方案
- Bit String Reordering
- Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)
- WEB-INF目录下的jsp页面如何访问?
- JaveScript DOM操作之表格操作(1)
- iOS文件下载(二)
- [数学]齐次线性方程组的解、SVD、最小二乘法
- C/C++语言面试题详细解答三
- 队列的美