Redis主从复制
Redis主从复制
主从实现
1、创建/myredis文件夹并复制redis.conf配置文件到文件夹中
2、配置一主两从,创建三个配置文件并在三个配置文件写入内容
3、启动三个redis服务
4、查看当前主机运行状况
5、在从机上执行 slaveof 主机ip 端口号
测试
主机上进行写操作
从机上只读不写
主机挂掉,重启如初!
复制原理
薪火相传
反客为主
哨兵模式
调整为一主二仆模式
配置哨兵
启动哨兵
主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slave 以读为主,主从复制节点间数据是全量的。
主从实现
1、创建/myredis文件夹并复制redis.conf配置文件到文件夹中
Appendonly 关掉或者换名字
2、配置一主两从,创建三个配置文件并在三个配置文件写入内容
拷贝多个 redis.conf文件 include(写绝对路径)
Pid 文件名字 pidfile
指定端口 port
dump.rdb 名字dbfilename
3、启动三个redis服务
4、查看当前主机运行状况
info replication
打印主从复制的相关信息
5、在从机上执行 slaveof 主机ip 端口号
返回6379查看发现它下面多了两台从机
测试
主机上进行写操作
从机上只读不写
将6380挂掉后重连得到如下界面
主机挂掉,重启如初!
复制原理
1、当从连接上主服务器之后,从服务器 向主服务发送进行数据同步消息
2、主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化rdb文件,把rdb文件发送从服务器,从服务器拿到rdb进行读取
3、每次主服务器进行写操作之后,和从服务器进行数据同步
薪火相传
上一个 Slave,可以是下一个 slave的 Master,slave 同样可以接收其他 slaves 的连接和同步请求,那么该 slave作为了链条中下一个的 master,可以有效减轻 master 的写压力,去中心化降低风险。
用 slaveof <ip><port>
中途变更转向:会清除之前的数据,重新建立拷贝最新的
风险是一旦某个 slave 宕机,后面的 slave 都没法备份
主机挂了,从机还是从机,无法写数据了
反客为主
当一个 master 宕机后,后面的 slave 可以立刻升为 master,其后面的 slave不用做任何修改。
用 slaveof no one 将从机变为主机
这里以及提前将6379挂掉
哨兵模式
哨兵模式是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
调整为一主二仆模式
6379带着6380、6381
配置哨兵
自定义的myredis 目录下新建sentnel.conf 文件,名字不能错
填写内容
其中 mymaster 为监控对象起的服务器名称,1为至少有多少个哨兵同意迁移的数量。
启动哨兵
执行redis-sentinel /myredis/sentinel.conf
执行后只要主机挂掉了他的从机会自动变为主机
如果再次启动原来的主机会变为新主机的从机
当主机挂掉,从机选举产生新的主机
哪个从机会被选举为主机呢?根据优先级别:slave-priority ,新版本变为了replica-priority。
原主机重启后会变为从机。
1、选择优先级靠前的之
2、选择偏移量最大的
3、选择runid最小的从服务
优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。
偏移量:指获得原主机数据最全的概率。
runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。