avatar

Redis主从模式+哨兵配置

集群搭建

配置

复制多个配置文件

  • 更改端口号
  • pid名字 pidfile /var/run/redis_6379.pid
  • log文件名 logfile
  • dump.rdb文件名 dbfilename dump6379.rdb

一主二从

默认情况下,每台Redis服务器都是主节点 ; 我们一般情况下只用配置从机就好了!

认老大! 一主 (79)二从(80,81)

使用在客户端里使用命令slaveof host post host为主机地址,post为主机端口号

配置完后可以使用info replication 查看主从机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=70,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=70,lag=0
master_replid:804daedebab98a129b014a75f7b46619c0041498
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:70
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:70
127.0.0.1:6379>

配置文件配置replicaof <masterip> <masterport>

如果主机有密码:masterauth <master-password>

配置完后,主机可以读写,从机只能读(redis已经默认帮我们配置好了)

1
2
127.0.0.1:6381> set k2 v2
(error) READONLY You can't write against a read only replica.

测试

  • 主机宕机后又恢复连接,再次set值时,从机能获取吗,可以

    reids的高可用性质

测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依 旧可以直接获取到主机写的信息! 如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从 主机中获取值!

  • 如果使用命令配置的主从,从机重启后会变回主机,只要便会从机数据会立马复制回来

复制原理

Slave 启动成功连接到 master 后会发送一个sync同步命令

Master 接到命令启动后台的存盘进程(RDB),同时收集所有接收到的用于修改数据集命令,在后台进程执行 完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步

但是只要是重新连接master,一次完全同步(全量复制)将被自动执行! 我们的数据一定可以在从机中 看到!

从机自己想当老大

slaveof no one

哨兵模式配置

1
2
3
4
vim sentinel.conf

# sentinel monitor 被监控的名称 host port 1
sentinel monitor myredis 127.0.0.1 6379 1

后面的这个数字1,代表主机挂了,slave投票看让谁接替成为主机,票数最多的,就会成为主机!

image-20200821002051716

当主机挂掉后,会选举一个从机为主机

主机回来后,也会变成从机

image-20200821002357167

注意事项

  • redis配置文件中 protected-mode yes 修改为 no
  • 哨兵配置文件中 sentinel monitor myredis 127.0.0.1 6379 1 host应该会服务器的ip地址
文章作者: Hobo
文章链接: https://hobo-clh.github.io/2020/09/22/Redis%E4%B8%BB%E4%BB%8E%E6%A8%A1%E5%BC%8F-%E5%93%A8%E5%85%B5%E9%85%8D%E7%BD%AE/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hobo's blog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论