redis主从复制自动切换

来源:互联网 发布:西厢 后弦 知乎 编辑:程序博客网 时间:2024/04/27 16:37

redis主从复制特点

1一个master可以拥有多个slave

2多个slave链接同一个master,也可以链接其它slave

3主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

4提供系统的伸缩性

主从复制过程:
slave与master建立链接,发送sync同步命令
2master会开启一个后台进程,将数据库数据保存到文件中,同事master主进程会开始收集新的写命令并缓存
3.后台完成保存后就将文件发送给slave
4slave将此文件保存到硬盘上

搭建主从同步:

两台centos虚拟机已经安装好了redis(安装教程参照:http://blog.csdn.net/sunqingzhong44/article/details/70761670)

redis 安装目录/usr/local/下的redis

redis 源码目录/home/下的redis

两台虚拟机分别为192.168.1.233和 192.168.1.234

用233作为主,234作为从


1.修改从库234配置文件

进入/usr/local/reids/ 修改redis.cnf 修改下面各项

slaveof 192.168.1.233 6379

masterauth <password> #如果主库有密码则需要,负责不需要

2.主从配置成功了,我们启动从库,主库,链接主库,输入info命令,打印出的信息可以找到如下信息,说明成功


3.哨兵

有了主从复制,我们想对主从进行监控,主数据库出现问题时从转化为主数据库,实现自动切换。

Redis 的 Sentinel(哨兵) 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。


Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动 Redis Sentinel。

哨兵可以单独搭建在一台服务上,我这里就直接搭建在233上面


从源码包中复制sentinel.conf 到/usr/local/redis/etc/下


修改一下各项配置 

dir /usr/local/redis/etc

sentinel monitor mymaster 192.168.1.121 6379 1

sentinel down-after-milliseconds mymaster 5000 多久检测一次

sentinel failover-timeout mymaster 900000

sentinel parallel-syncs my mymaster 1  从节点数量

4.启动哨兵

bin/redis-server  etc/sentinel.conf --sentinel &  #启动哨兵


bin/redis-cli -h 192.168.1.1  -p26379   info sentinel   查看哨兵信息


测试  shutdown主节点,通过下面信息可以看出主节点切换到了234


再启动233节点,可以看到233又加入了主从,变成了从节点:











0 0