Redis_主从复制
一、主从复制介绍
主机数据更新后根据配置和策略,自动同步到备机的master/slave 机制,Master以写为主,slave以读为主
好处:读写分离,性能扩展;容灾快速恢复(一主多从):一台slave从机挂掉,马上切换到另一台slave从机提供服务。
主机挂:集群
集群:一主多从 ——关联—— 一主多从
复制原理:
1、当从服务器连接上主服务器后,从服务器向主服务器发送进行数据同步消息
2、主服务器接到从服务器发送过来的同步消息,把主服务器数据进行持久化rdb文件,把rdb文件发送从服务器,从服务器拿到rdb进行读取
3、每次主服务器进行写操作之后,和从服务器进行数据同步。
二、主从复制配置
1、创建/myredis文件夹
2、复制redis配置文件到文件夹中
3、配置一主两从,创建三个配置文件。新建redis6379.conf、redis6380.conf、redis6381.conf三个配置文件文件
4、填写以下(数字替换)内容
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
5、启动三台redis服务 redis-server redis6379.conf
6、查看当前主机运行状况
infor replication打印主从复制相关信息
redis-cli -p 6379
infor replication
7、配从库不配主库
slaveof ip port:成为某个实例的从服务器
在6380和6381上执行slaveof 127.0.0.1 6379
三、一主二仆
当从服务器挂了,从服务器重启之后是master,要重新设置slaveof,加入主从后会将主数据库的数据从头开始复制到从库中。
当主服务器挂了,从服务器仍然是从服务器,
四、薪火相传
从服务器可以挂从服务器。
中途变更转向:会清除之前的数据,重新建立拷贝最新的
风险是一旦某个slave宕机,后面的slave都没办法备份
主机挂了,从机还是从机,无法写数据了
五、反客为主
当一个master宕机后,后面的slave立刻升为master,后面的slave不用做任何修改
slaveof no one 将从机变为主机
【手动更改】
六、哨兵模式
反客为主的自动版,能够后台监控主机是否发生故障,如果故障了根据投票数自动将从库转为主库
还原三个服务器一仆二主
在/myredis目录下新建sentinel.conf文件,名字绝对不能错
sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称,1为至少有多少个哨兵同意迁移的数量
选举规则:选择优先级靠前的:优先级在redis.conf中默认:slave-priority 100,值越小优先级越高
选择偏移量最大的:偏移量是指获得原主机数据最全的
选择runid最小的从服务:每个redis实例启动后都会随机生成一个40位的runid
启动哨兵:redis-sentinel sentinel.conf
旧主机恢复后成为新主库的从库。
七、复制延时
由于所有的写操作都是先在Master上操作,然后同步更新到slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙时,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。