Redis 主从复制

  • Post author:
  • Post category:其他


主从复制流程

1、从服务器通过psync命令发送服务器已有的同步进度(同步源ID、同步进度offset)

2、master收到请求,同步源为当前master,则根据偏移量同步

3、同步源非当前master,则进入全量同步:master生成rdb,传输到salve,加载到slave内存。

一、主从复制应用场景

1)可以用来支持读写分离,slave 服务器设定为只读,可以用在数据安全的场景下。

2)可以使用主从复制来避免master持久化造成的开销。master关闭持久化,slave配置为不定期保存或是启用AOF。

二、主从复制的一些注意事项

1)读写分离场景:

数据复制延时导致读到过期数据或者读不到数据(网络原因、slave阻塞)

slave 应该可以自动切换

2) 全量复制情况下:

第一次建立主从关系或者runid不匹配会导致全量复制,故障转移的时候也会出现全量复制。

全量复制会带来复制风暴,如果slave节点较多,所有slave都要复制,对服务器的性能,网络

的压力都有很大影响

3)写能力有限

主从复制还是只有一台master,提供的写服务能力有限

4)master故障情况下

如果是master无持久化,slaver开启持久化来保留数据的场景,建议不要配置redis自动重启,redis自动重启,master启动后,无备份数据,可能导致集群数据丢失的情况。可以手动将从服务器变成主服务器,把原主服务器变成从服务器(主从切换)。

5)带有效期的key:

slave 不会让key过期,而是等待master让key过期,在LUA 脚本执行期间,不执行任何key过期操作



版权声明:本文为weixin_42254451原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。