redis主从复制和哨兵
1.redis的主从复制搭建
主从复制:只需要修改丛机的redis.conf文件
语法:Slaveof masterip masterport
slaveof 192.168.242.137 6379
2.redis主从复制:
Redis的主从结构可以采用一主多从或者级联结构。
Redis主从复制可以根据是否是全量分为全量同步和增量同步。
1)master可以拥有多个slave
2)多个slave可以连接同一个master外,还可以连接到其他的slave
3)主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
4)提供系统的伸缩性
3.主从复制过程:
1)slave和master建立连接,发送sync同步命令
2)master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。
3)后台完成保存后,就将文件发送给slave。
4)slave将此文件保存到硬盘上。
4. 全量同步
Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
1)从服务器连接主服务器,发送SYNC命令;
2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。
5 增量同步
Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。 增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。
6 Redis主从同步策略
主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。
7.哨兵--体现高可用--可以配多个
1)监控主数据库和从数据库是否正常运行
2)主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换
配置:
将从服务器中sentinel.conf 复制到 /usr/local/redis/etc/
修改文件sentinel.conf
sentinel monitor mymaster 192.168.119.137 6379 1 #名称 ip(master) 投票选举次数
sentinel down-after-milliseconds mymaster 5000 超过多少时间宕机(每个多长时间监控)
sentinel parallel-syncs mymaster 2 丛机个数
sentinel failover-timeout mymaster 180000 主节点失效的时间
主服务器启动Redis 从服务器启动redis 并启动哨兵
redis-sentinel /path/to/sentinel.conf
或者 /usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
ps -ef |grep 26379 看哨兵状态
查看哨兵信息
/usr/local/redis/bin/redis-cli -h 192.168.119.138 -p 26379 info Sentinel 哨兵的IP,,可以在任意机器启动
主机宕机 会有一个从服务器成为主机 主机再次激活时,主机变成丛机。