redis的主从复制
1.安装依赖的环境
2.编写配置文件,这里写了三个配置文件
细节: 引入redis.conf文件
找到在redis.conf里面的pidfile
端口号
dbfilename
每个文件代表着一个服务,端口号写完后要重新改一下,最后配置文件格式如下
3.启动服务
3.1
redis-server /myredis/redis6379.conf
3.2
启动客户端
redis-cli -p 6379
最后启动的服务如下
➢info replication • 打印主从复制的相关信息
➢slaveof • 成为某个实例的从服务器
1>从机有了主机所有的key,所有的数据
2>从机只有读的权限
3>主机写东西从机可以get到
4>主机挂了,从机原地等待
5>从机下面可以再加从机
6>主机死了以后,可以手动让从机上位
slaveof no one 反客为主 这样从机变主机
从机可以写值,他的小弟也可以读他的值
➢复制原理 •
每次从机联通后,都会给主机发送sync指令 • 主机立刻进行存盘操作,发送RDB文件,给从机 • 从机收到RDB文件后,进行全盘加载 • 之后每次主机的写操作,都会立刻发送给从机,从机执行相同的命令
➢ 薪火相传 •
上一个slave可以是下一个slave的Master,slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的 master, 可以有效减轻master的写压力,去中心化降低风险。 • 用 slaveof • 中途变更转向:会清除之前的数据,重新建立拷贝最新的 • 风险是一旦某个slave宕机,后面的slave都没法备份
哨兵模式 (自动的判断主机是否死亡,避免人工处理)
定期骚扰主机,发指令ping看主机有没有回复pang住过没有pong根据投票数自动将从机转为主机
当从机变主机时,这时候的主机(之前从机的设置的值将不存在,)
变主机后,
这个主机继承了之前从机所对应主机的数据。
调整为一主二仆模式 • 自定义的/myredis目录下新建sentinel.conf文件
• 在配置文件中填写内容: sentinel monitor mymaster 127.0.0.1 6379 1
• 其中mymaster为监控对象起的服务器名称, 1 为 至少有多少个 哨兵同意迁移的数量。
开启哨兵模式-----》配置
在配置文件下加入如下配置,保存退出
启动哨兵模式
指向的为启动的哨兵启动的选项
执行,redis-sentinel /myredis/sentinel.conf
以前台的方式启动此处
主机挂了过十几秒出现下面情况,谁的优先级小谁先上位,哨兵对配置文件的修改如下加了slaveof 127.0.0.1 6381所以主机死了以后6381上位
➢故障恢复
新主登基
从下线的主服务的所 有从服务里面挑选一 个从服务,将其转成 主服务 选择条件依次为:
1、选择优先级靠前 的
2、选择偏移量最大 的
3、选择runid最小的 从服务 挑选出新的主服务之 后,sentinel 向原主 服务的从服务发送 slaveof 新主服务 的命 令,复制新master 群仆俯首 旧主俯首 当已下线的服务重新 上线时,sentinel会向 其发送slaveof命令, 让其成为新主的从 Redis的主从复制 优先级在redis.conf中slave-priority 100