数据安全与性能——《Redis实战》

持久化

  • 快照(rdb):保存某个时间点内存中全部数据的副本。(BGSAVE/SAVE)
缺点:存在数据丢失:下一次快照建立过程当中,若发生崩溃,会丢失上次快照后的全部数据。
  • AOF:保存写命令到AOF文件末尾,记录数据变化。(相似Mysql的binlog)
缺点:保存的文件可能会比较庞大,占用不少硬盘空间。

图片.png
二者既能够单独使用,也能够协同使用。redis

RDB

图片.png
BGSAVE会建立子进程来进行储存,会与主进程竞争资源;而SAVE则直接阻塞客户端请求,转而去备份。sql

对于占用几十个GB内存的Redis服务器,BGSAVE建立进程要花费15秒,备份完须要15~20分钟。
而SAVE仅须要3~5分钟。因此经常使用作法是,写一个脚本,在半夜去手动SAVE。

AOF

图片.png

谨慎使用appendfsync:always。尤为是固态,通常推荐使用everysec。

bgrewriteaof命令:相似bgsave,新建子线程,用于精简AOF文件,删除冗余命令,重写AOF文件。可经过auto-aof-rewrite-min-sizeauto-aof-rewrite-percentage来自动执行重写。服务器

复制

主从同步

主用于写,从用于读。master的rdb文件先交给slave去写入本身内存,再将同步期间master收到的写命令放入缓冲区,rdb恢复完后,会再次接收master缓冲区传来的写命令。然后master都将aof按期交给slave完成同步。客户端写入master,读取访问slave。
相关配置:app

  • 主:dirdbfilename必须配好。
  • 从:slaveof host port这个为必须的。

图片.png

便可在conf配置文件设置salveof来选定从服务器,也可经过slaveof命令来设置。
slave同步前会清空以前的全部数据。
redis不支持主-主复制。(互相设成对方的slave,不支持!)
缺点:若是主挂了,那就没有写服务器了。
(主从连,sentinel模式能够改善这一缺点)

主从连

从服务器能够拥有本身的从服务器。
图片.png
主从复制与从从复制的惟一区别:在主服务器A,从服务器X有一个从服务器Y的模式下,在X与A同步时X写入rdb至内存时,会与Y断开链接,致使Y从新同步。(与主同步时,断开本身从的链接)spa

适用场景:读的需求一台从服务器不能知足,须要更多的读服务器。
注:检查是否已所有写入硬盘:info中 aof-pending-bio-fsync属性是否为0

更换主服务器

在主服务器A,从服务器B,A挂了的场景下。线程


法一:另寻新主。提高C为主服务器。
做法:B进行一次SAVE,而后将快照交给C,C启动redis,而后B改设为C的从。
图片.png
法二:本身做主。B本身做为主服务器,再建立新的从服务器C。(redis sentinel就是监听故障,提高从为主)code

相关文章
相关标签/搜索