------------------------------redis主从备份以及哨兵模式----------------------------------------------------------
1、 在根目录/下新建myredis目录,将redis解压缩目录下的/opt/redis-3.0.4下的redis.conf配置文件拷贝到/myredis下,需要拷贝3份,分别命名为redis6379.conf、redis6380.conf、redis6381.conf,如下图:
2、 编辑以上3个配置文件,修改如下几项:
1) daemonize(后台运行)
2) pidfile(保存生成的pid的文件的位置)
3) port(访问端口)
4) logfile(日志文件位置+名称)
5) slaveof(做为谁的从机,master不用配置该项)
其中主库redis6379.conf配置如下:
1) daemonize yes
2) pidfile /var/run/redis6379.pid
3) port 6379
4) logfile "/data/logs/redis6379.log"
5) 不配置slaveof
从库1 redis6380.conf配置如下:
1) daemonize yes
2) pidfile /var/run/redis6380.pid
3) port 6380
4) logfile "/data/logs/redis6380.log"
5) slaveof 127.0.0.1 6379
从库2 redis6381.conf配置如下:
6) daemonize yes
7) pidfile /var/run/redis6381.pid
8) port 6381
9) logfile "/data/logs/redis6381.log"
10) slaveof 127.0.0.1 6379
3、 创建日志文件目录
mkdir -p /data/logs
4、 启动主库服务,再分别启动两个丛库服务
redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf
5、 查看服务是否启动成功
ps -ef | grep redis |grep -v grep
6、 启动3个客户端,分别连接6379、6380、6381服务,并查看主从关系
其中6379如下:
redis-cli -p 6379 客户端连接6379服务
info replication 查看主从关系
6380如下:
6381如下:
7、 主库(master) 6379中添加数据,并分别在丛库(slave)6380和6381中查看是否有数据,相当于读写分离(主写从读)
8)测试在丛库写数据,会提示丛库是只读的,没有写入的权限
9)停止主机,并查看从机的主从复制信息
主机停止的情况下,两个从机仍然是从机,且显示主机状态是down,不会选举其中一个做为主机,相当于无法再进行写操作了。
10)重新启动主机,并在主机中写数据,查看从机是否还能否查询到数据,发现从机仍能查询到数据,说明主机重启的情况下也仍能进行主从同步
----------------------------------至此,代表主从配置成功-------------------------------------------------
-----------------------------------------------redis哨兵模式----------------------------------------------------
1、 复制redis解压缩目录下的sentinel.conf文件到/myredis目录下
cp /opt/redis-3.0.4/sentinel.conf /myredis/sentinel6379.conf
2、 进入/myredis 目录下并编辑sentinel6379.conf文件
修改为sentinel monitor mymaster 127.0.0.1 6379 1
语法为:sentinel monitor <master-name> <ip> <redis-port> <最少几个哨兵任务主库已死>
3、 启动哨兵
redis-sentinel /myredis/sentinel6379.conf
代表已监控6379为master,6380和6381为slave
4、 关闭6379,模拟主机故障,查看哨兵日志
以上日志,说明哨兵监控到6379挂掉了,选举6381做为新的master,将6380重新做为6381的slave,并且6379修复好重启后也将做为6381的slave
5、 分别在6381和6380上查看主从关系
以上信息说明现在确实是6381是主库,6380是丛库
6、 测试在6381上新增数据,在6380上是否能够查询到
6381新增hash数据
6380查询
说明6381设置内容,6380确实可以做为丛库查询到数据
7、 重启6379服务,并查看6379、6380、6381的主从关系
6379信息如下:
6380信息如下:
6381信息如下:
以上信息说明6379启动后确实做为了6381的丛库
8、 查看6379中的数据与6381的数据是否一致
6381数据如下:
6379数据如下:
以上数据说明6379启动后确实做为了6381的丛库,且自动从6381进行了数据同步
至此,哨兵模式配置完毕。
若有理解不到之处,望指正!