redis的高可用

1.redis的高可用

在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99%

redis的高可用含义更宽泛,正常服务是指标之一,数据容量的扩展,数据的安全性。

在redis中实现高可用技术:持久化,主从复制,哨兵模式,cluster集群

持久化:持久化是最简单的高可用方法,主要作用是数据备份,也就是把redis缓存在内存中的数据保存到本地的硬盘中。(冷备份)

2.redis持久化的两种方式

1.RDB持久化:reids在内存中的数据定时保存到磁盘。(自动执行,手动执行)

2.AOF持久化:redis的操作日志,以追加的方式写入AOF的文件,类似于mysql的binlog

3.RDB的持久化

指在指定的时间间隔内,将内存中当前进程中的数据生成快照保存到硬盘(快照持久化),用二进制压存储。保存的文件的后缀 .rdb。redis启动时,可以直接读取快照文件,实现数据恢复

3.1 RDB的触发机制

手动机制:save bgsave都可以生产RDB文件。

save创建RDB文件时,整个redis进程都会被阻塞,期间redis将无法进行读写操作,直到RDB文件创建完成为止。(生产中禁止用save)

BGSAVE:主进程会通过fork机制创建一个子进程,子进程的创建过程中,父进程会阻塞,子进程创建完毕,主进程解除阻塞,由子进程来创建RDB文件,创建完成之后,通知主进程更新通知信息。

3.2 手动机制save

终端

redis-cli -h 192.168.233.7 -p 6379

save

/etc/init.d/redis_6379 stop

cd /var/lib/redis/6379

ll

cp dump.rdb /opt/

/etc/init.d/redis_6379 start

flushall

exit

/etc/init.d/redis_6379 stop

cd /opt

cp dump.rdb /var/lib/redis/6379

3.2 手动机制bgsave

终端

bgsave

重开一个

tail -f /var/log/redis_6379.log

exit

/etc/init.d/redis_6379 stop

cd /vat/lib/redis/6379

ll

cp dump.rdb /opt/

/etc/init.d/redis_6379 start

flushall

exit

/etc/init.d/redis_6379 stop

cd /opt

cp dump.rdb /var/lib/redis/6379

4.AOF持久化

AOF持久化是将redis的每一次读 写 删除 命令记录到一个单纯的。aog为结尾的文件。查询操作由主进程记录,当reids重启时,再次执行AOF文件中的命令来恢复数据

4.1 持久化配置

vim /etc/redis/6379.conf

700行,开启AOF持久化功能

704 名称可以改,但是.aof不能动,否则系统无法识别

用于判断AOF文件,如果被截断时的行为

Yes:发现被截断(写入过程中出现异常,导致文件未能完全写入),Redis会尽可能的恢复文件中的数据,Redis会继续运行

No:发现AOF文件被截断,Redis将拒绝启动

数据完整性的要求高:no

注重数据服务器的可用性:yes

/etc/init.d/redis_6379 restart

vim /var/lib/redos/6379/appendonly.aof

删除不需要的步骤

4.2 AOF的重写功能

随着时间的增长,AOF文件当中的数据也会不断增加。AOF的文件也会越来越大。过大的AOF文件不仅仅会影响服务器的正常运行也会导致数据的恢复时间过长。

文件重写是指定期的重写AOF文件,减小AOF文件的体积。AOF重写是把redis进程内的数据,转化为写命令,同步到新的AOF文件当中(不会额外的生成一个新的文件,只是在原内容进行压缩),不会对原有的AOF文件进行任何读写的操作

4.3 AOF同步文件策略

vim /etc/redis/6379.conf

appendfsync always :写入过程中,立即调用redis系统的fsync操作写入到AOF文件,每次写入都执行同步,硬盘的性能有瓶颈,硬盘的寿命也会大大降低。

appendfsync no :写入操作调用系统的write操作,不对AOF文件进行同步,操作系统来同步,同步周期30秒,文件同步的时间不可控,缓冲区会堆积大量数据,数据的安全也无法保证、

appendsync everysec:调用write操作,write操作结束后,线程会返回。FSYNC同步文件操作由专门的线程,每秒调用一次,这是一个折中的策略,是性能和安全性的平衡,是redis的默认策略也是推荐配置。

4.4 重写的触发条件

1.手动触发

redis-cli bgrewriteaof

2.自动触发

vim .etc/redis/6379_conf

auto-aof-rewired-precentage 100

文件的大小查看基准的百分比,默认值就是100.文件的超过两倍时。执行bgrewriteadof.设置为0,禁用自动触发

auto-aof-rewite-min-size 64MB

文件大于基准面,才会进行重写,这个值是AFO文件执行重写的最小值。避免开始启动redis后,文件大小,然后频繁的进行重写。

4.5 AOF重写为什么能够压缩文件

1.重写的过程中,过期的数据不会写入文件

2.无效的命令不在写入文件,数据被重复设置 set test=1 set test=2 。删除的数据不会写入set test 1 del test

3.多条命令合并一个。sadd test1 v1 sadd test1 v2 sadd test1 v3 sadd test1 v1 v2 v3

重写之后,AOF的文件当中的命令减少了,空间也少了,恢复速度也增加了。(重写不是必须的)

5.RDB和AOF之间的优缺点

RDB的优点:文件体积小,网络传输速度很快,适合全量复制,恢复速度也比AOF要快。

缺点:做不到实时的持久化,数据如此重要,不能够容忍丢失的。另外RDB需要满足特定的格式,兼容性很差,老版本的RDB不支持新版本(redis的版本一定要一致)5.0.7

AOF的优点:秒级持久化,兼容性好。文本格式保存的命令。

缺点:文件大,恢复速度慢,AOF持久化需要频繁的向磁盘写数据,磁盘的IO压力也是很大的,对redis主进程的性能也会有一定影响。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值