1、RDB和AOF的优缺点
RDB优点:(1)RDB快照保存了某个时间点的数据,可以通过脚本执行redis指令bgsave(非阻塞,后台执行)或者save(会阻塞写操作,不推荐)命令自定义时间点备份,可以保留多个备份,当出现问题可以恢复到不同时间点的版本,很适合备份,并且此文件格式也支持有不少第三方工具可以进行后续的数据分析。
(2)RDB可以最大化redis的性能,父进程在保存RDB文件时唯一要做的就是fork一个子进程然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘I/O工作
(3)RDB在大量数据,比如几个G的数据,恢复速度比AOF快
RDB缺点:(1)不能实时保存数据,可能会丢失自上一次执行RDB备份到当前的内存数据。
(2)当数据量非常大的时候,从父进程fork子进程进行保存至RDB文件时需要一点时间可能是毫秒或者秒,取决于IO性能
AOF优点:(1)数据安全性相对较高,根据所使用的fsync策略(fsync是同步内存中redis所有已经修改的文件到存储设备),默认是appendfsync everysec,即每秒钟执行一次fsync,在这种配置下,Redis依然可以保持良好的性能,并且就算发生停机故障,也最多只会丢失一秒钟的数据。(fsync会在后台线程执行,所以主线程可以继续努力地处理命令请求)
(2)由于该机制对日志文件的写入操作采用的是append模式,因此写入过程中不需要seek,即使出现宕机现象,也不会破坏日志文件中已经存在的内容,如果本次操作只写入一半数据就出现了系统崩溃问题,在Redis下一次启动之前,可以通过redis-check-aof工具来解决数据一致性问题
(3)Redis可以在AOF文件体积变得过大时,自动的在后台对AOF进行重写,重写后的新AOF文件包含了恢复当前数据集所需的最小命令集合。
(4)AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。
AOF缺点:(1)即使有些操作是重复的也会全部记录,AOF文件的大小要大于RDB格式的文件
(2)AOF在恢复大数据集时的速度比RDB的恢复速度要慢
(3)bug出现的可能性更多
2、master和slave同步过程
准备三台主机C81(master:10.0.0.18)、C82(slave1:10.0.0.28)、 C83(slave2:10.0.0.38)
先在这三台主机上安装redis,用脚本安装,脚本过程如下:
在C81master上设置key1
在C82 slave1上执行,登录
在C83 slave2上执行,登录