Redis配置单机版主从复制(一主两从)
- 为方便配置,专门创建一个文件夹myredis来配置环境
- 进入myredis文件夹,并复制redis.conf文件到myredis中
- 配置一主两从,创建三个配置文件,文件名分别为:redis6379.conf、redis6380.conf、redis6381.conf
- 然后在三个配置文件中写入内容: 首先将redis.conf中的appendonly yes改为no,然后在三个配置文件中分别写入以下内容:
最终文件分布情况如下:
-
然后查看当前reids是否启动,若启动则先关闭redis服务
然后使用命令redis-server redis6379.conf/redis6380.conf/redis6381.conf启动redis,如果出现以下结果则说明启动成功
注意:此时还没配置完成 -
将其中两个变为从库(这里配置6379为主库,6380、6381为从库)。在从机上执行命令slaveof ip(主机IP) port(主机端口) 即在6380和6381上执行 slaveof 127.0.0.1 6379
此时:主从复制搭建完成
注意:若主机挂掉,则重启就行,从机的role还是slave(从机不会上升为主机,但如果想要上升为master,可以使用命令 slave no one,这种方式需要手动完成,而哨兵模式是其对应的自动版),。但是如果从机挂掉,重启后会其role会自动变为master因此需要重设:slave 127.0.0.1 6379,才能变成6379的从机
主从复制原理
- 当从服务器连接上主服务器后,从服务器--->主服务器发生进行数据同步的消息
- 主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化放到rdb文件中。然后主服务器将rdb文件发送给从服务器,从服务器接收到rdb文件后进行对RDB文件进行解析和读取
- 每次主服务器进行写操作后,都会和从服务器进行数据同步
哨兵模式
简述
反客为主(即从机变主机)的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
实现方法
- 在myredis目录下新建sentinel.conf文件(注意:文件名不能错)然后再文件中添加sentinel monitor mymaster 127.0.0.1 6379 1
- 使用命令redis-sentinel sentinel.conf开启哨兵模式
可以更改redis6380(6381).conf中的配置slave-priority 100来更改优先级,其中数字(比如100)越小优先级更高.当优先级相同时,偏移量(偏移量指获得主服务器数据最全的从服务器)大的优先级高,当偏移量也相同时,选择runnid(redis每次启动都会随机生成一个40位的runnid)最小的从服务
参考:redis入门到精通
