redis主从复制搭建及哨兵设置

目录

 主从搭建

启动哨兵

多哨兵

选举原理


 

 主从搭建

复制配置文件redis.windows.conf,

修改其中两个配置文件中的端口号,及日志,rdb,aof文件保存地址。使三个redis服务的端口,日志文件,持久化文件不一样。

创建三个不同端口的redis服务。

PS E:\Redis-x64-3.2.100> ./redis-server.exe --service-install redis.windows-6380.conf --service-name redis6380 --port 6380
PS E:\Redis-x64-3.2.100> ./redis-server.exe --service-install redis.windows-6381.conf --service-name redis6381 --port 6381
PS E:\Redis-x64-3.2.100> ./redis-server.exe --service-install redis.windows.conf --service-name redis6379 --port 6379

启动这三个服务。

PS E:\Redis-x64-3.2.100> ./redis-server.exe --service-start --service-name redis6380
[16420] 24 Dec 10:54:22.715 # Redis service successfully started.
PS E:\Redis-x64-3.2.100> ./redis-server.exe --service-start --service-name redis6381
[4784] 24 Dec 10:54:33.558 # Redis service successfully started.
PS E:\Redis-x64-3.2.100> ./redis-server.exe --service-start --service-name redis
[14900] 24 Dec 10:54:42.511 # Redis service successfully started.
PS E:\Redis-x64-3.2.100>

客户端登录

PS E:\Redis-x64-3.2.100> ./redis-cli.exe -h 127.0.0.1 -p 6380

修改从服务器的配置文件(这里设置6379这个为主服务器)

slaveof 127.0.0.1 6379

masterauth ******

一主二从搭建就完成了。

 


启动哨兵

新建配置文件sentinel.conf

#只需配置主服务器
sentinel monitor mymaster 127.0.0.1 6379 1
#主服务器密码
sentinel auth-pass mymaster ******

启动

./redis-server.exe sentinel.conf --sentinel

 哨兵会自动寻找从数据库并将信息加到之前的配置文件sentinel.conf

 

 使主数据库宕机

在6379客户端输入shutdown关闭服务

一段时间后哨兵重新选举主数据库,自动修改配置文件内容。

多哨兵

这里设置3个,一般为奇数个2n+1,投票数为n+1,即2

密码主从数据库要一样

关闭保护模式,否则哨兵之间无法通信,在多哨兵模式下,比如3个哨兵,只有当投票数为2的情况下才选举成功,哨兵之间无法通信投票数只会为1,无法完成选举;所以单哨兵不关闭保护模式也是可以正常工作的

sentinel.conf

port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster ******

新建其他两个的配置文件sentinel26380.conf sentinel26381.conf 只需改变哨兵端口号为不一样的数字

其他相关参数(可省)

sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

#down-after-milliseconds:
#超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了。这个值小于1s,哨兵每隔down-after-milliseconds向数据库和其他哨兵发送一次ping命令,大于1s,哨兵每隔1s发送一次ping。
#parallel-syncs:
#新的master被切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多。假设redis是1个master,4个slave,然后master宕机了,4个slave中有1个切换成了master,剩下3个slave就要挂到新的master上面去,这个时候:
如果parallel-syncs是1,那么3个slave,一个一个地挂接到新的master上面去,1个挂接完,而且从新的master sync完数据之后,再挂接下一个;
如果parallel-syncs是3,那么一次性就会把所有slave挂接到新的master上去 。
#failover-timeout:
#执行故障转移的timeout超时时长。

分别启动哨兵

./redis-server.exe sentinel.conf --sentinel

使主数据库宕机

pid为19464的哨兵首先发现主数据库宕机,接着13676也发现主数据库宕机,于是投票通过,开始哨兵头选举,第一个发现的哨兵当选,负责恢复故障,端口号为6379数据库成为新的主数据库。


选举原理

领头哨兵选举:

1.发现主数据库客观下线的哨兵(A)向其他哨兵发送命令,要求对方选自己成为leader。

2.如果目标哨兵没有选过其他人,则会同意A当选。

3.A发现有超过半数且超过设置的quorum投票数的哨兵同意(保证最多一个当选),则A成当选。

4.若有多个哨兵节点同时参选,可能会没有任何哨兵成功当选,将会重新选举。

新主数据库选择按如下顺序:

1.所有在线数据库中优先级最高的。

2.如有多个优先级最高数据库,则按复制的命令偏移量越大越优先(复制越完整)。

3.若都一样,按运行Id最小的优先。


20210204 对该博文做了一些补充,因为发现过了几个月,有些地方自己写的自己都看不明白了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值