性能总结和建议:
因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。
如果Enalbe AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。
如果不Enable AOF,仅靠Master-Slave Replication 实现高可用性也可以。
能省掉一大笔IO也减少了rewrite时带来的系统波动。
代价是如果Master/Slave同时坏掉,会丢失十几分钟的数据,
(不建议频繁涉及余额的系统使用这套方案,因为涉及订单和余额的数据不允许出错,适用于短文字社交平台使用)
启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个。
新浪微博就曾经选用了这种架构