标签:发送 mic 指定 内存 完全 主服务器 eof 指示 http
一、简介
官网介绍
行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。
二、准备工作
准备三个服务器配置文件,以6379、6380、6381三个端口为例。
步骤1:拷贝多个redis.conf文件
步骤2:开启daemonize yes
步骤3:pidfile文件名字
步骤4:指定端口
步骤5:log文件名字
步骤6:dump.rdb名字
配置完以后启动三个redis实例,此时三个实例地位相同,都是master
三、一主双从配置
可以使用SLAVEOF命令将该实例设置为从机
将6380、6381都设置为从机后,再看主机的情况
- Slave会在启动后完全复制Master的数据。
- Slave只能读不能写
- Master宕机后,Slave原地待命,不会自动变成Master,Master重启后,如果写入数据,Slave依然会复制。
注意:SLAVEOF命令是一次性的,如果Slave宕机后,重启后会变成Master,除非将slaveof命令写入配置文件。
四、薪火相传
- 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
- 中途变更转向会清除之前的数据,重新建立拷贝最新的
- slaveof 新主库IP 新主库端口
五、反客为主
SLAVEOF no one
使当前slave停止与其他实例的同步,转成master
六、复制原理
- slave启动成功连接到master后会发送一个sync命令
- Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
- 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
- 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
- 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
七、哨兵模式(sentinel)
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
步骤1:调整结构6379带着6380、6381
步骤2:自定义的/opt/myredis目录下新建sentinel.conf文件,名字绝不能错
步骤3:配置哨兵,填写内容
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
- 第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。
- 不过要注意, 无论你设置要多少个 Sentinel 同意才能判断一个服务器失效, 一个 Sentinel 都需要获得系统中多数(majority) Sentinel 的支持, 才能发起一次自动故障迁移, 并预留一个给定的配置纪元 (configuration Epoch ,一个配置纪元就是一个新主服务器配置的版本号)。
- 换句话说, 在只有少数(minority) Sentinel 进程正常运作的情况下, Sentinel 是不能执行自动故障迁移的。
其他选项的基本格式如下:
sentinel <选项的名字> <主服务器的名字> <选项的值>
步骤4:启动哨兵
redis-sentinel /opt/myredis/sentinel.conf
上述目录依照各自的实际情况配置,可能目录不同
步骤5:测试
主动将6379停掉,sentinel开始选举新的master,最终6380被选为新的master,6381为slave
注意sentinel不仅将存活的6381选为slave,6379如果重启也会作为slave存在
Redis 主从复制
标签:发送 mic 指定 内存 完全 主服务器 eof 指示 http
原文地址:https://www.cnblogs.com/jwen1994/p/14554347.html