Redis教程(五)Redis主从复制配置教程

一、Redis的主从复制

主从同步(主从复制)是 Redis 高可用服务的基石。在主从服务中,将主要存储数据的节点叫做主节点 (master),其他通过复制主节点数据的副本节点叫做从节点 (slave)。主从同步主要优点:

· 性能方面:写操作放在主服务器执行,从节点为只读模式,并且将查询任务分配给从服务器,实现读写分离。

· 高可用方面:当主服务器节点宕机之后,可以很把从节点提升为主节点,为Redis服务宕机恢复节省时间。结合后面会提到的sentinel哨兵机制可以实现自动化高可用

· 数据安全性方面:如果配置了持久化,即便主服务器磁盘坏掉,那么也可以用从服务器的数据进行恢复。虽然由于Redis注重性能而没有对主从复制提供强一致性保证,从库数据可能不是最新的,但是也不至于数据全部丢失

二、Redis的主从复制配置方法

1、在slave服务器配置文件上新增配置并重启服务(只有当slaveof选项配置生效后,配置文件里的其他slave相关配置才有效)

#需新增内容
slaveof 192.168.1.100 6379  #作为192.168.1.100这台服务器的从服务器
slave-read-only  yes  #从服务器只读,写操作在主服务器上,实现读写分离
repl-timeout 60 #从库复制超时时间,数据很多的话需要调长,否则主从会断开
repl-backlog-size 1M #从服务离线之后,主服务器会把离线之后的写入命令存储在一个特定大小的队列中,避免短时间断开服务却进行全量同步的问题
repl-diskless-sync yes #开启无盘复制,主从全量同步时,主库并不会在本地创建RDB 文件,而是创建一个子进程通过Socket将RDB文件写入到从服务器,节约IO资源
client-output-buffer-limit slave 256mb 64mb 60  #客户端输出缓冲区配置。每个客户端连接(包括从库)后都会申请一个buffer空间,通过该选项限制可以避免buffer持续增长消耗内存。如果超过限制主库会强制断开连接,也就是说从库处理慢导致主库buffer积压达到限制后主库会强制断开从库的连接,此时主从复制会中断,中断后如果从库再次发起复制请求还会继续被断开导致恶性循环,引发复制风暴。调为0则不限制
masterauth 123456789  #主库如果配置了密码,这里需要配置正确的密码

2、服务不能重启的情况下可以在线设置。只需要登录从库客户端执行一条slaveof命令就可以完成。5.x以后将slaveof修改为了replicaof 

127.0.0.1:6379 > slaveof 192.168.1.100 6379
127.0.0.1:6379 > replicaof 192.168.1.100 6379

3、主从配置好以后,主服务器会执行一次bgsave命令生成RDB文件并发送给从服务器,从服务器收到 RDB 文件之后再把数据全部进行加载(如果从服务器之前有数据也会被清空),完成全量数据同步。

4、查询Redis主从状态的话只需要登录客户端后执行info命令

 

三、Redis主从复制需要注意的几个地方

1、关闭iptables和selinux

2、slave断开重连时会与主服务器进行重新同步的过程,这个时候不要将所有slave一起启动,否则主服务器压力会很大

3、requirepass和masterauth两项设置最好在主从节点上保持一致,避免主从切换后导致环境不一致

4、主节点最好打开持久化配置,否则可能会因为主节点重启而导致从节点数据被清空。就算配有哨兵来做高可用,也可能因为服务重启的速度快过哨兵而导致数据被清空

5、主从复制过程中,当从节点执行全量复制操作时,主节点会自动执行bgsave 命令,并将 RDB 文件发送给从节点,此时一定要注意客户端输出缓冲区配置,如果过小会导致反复进行全量复制,产生复制风暴

四、Redis主从故障后手动恢复

如果主节点故障,从节点状态显示为down,但是自身依然是slave状态,这个时候是不可写数据的。如果没有配置哨兵模式的话可以在一台正常工作的从节点上执行slaveof no one命令(5.0以后为replicaof no one),这时这台节点角色就会变成master,然后再把它配置为其他节点的master即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值