Redis主从复制

Redis的主从复制的是什么?
主从复制就是主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slaver以读为主
有什么用处?
读写分离,性能扩展。容灾快速恢复。
在这里插入图片描述

配置服务器(配从不配主)
  • 拷贝多个Redis.conf文件重命名,引入includeRedis.conf
  • 配置pidfile名字
  • 指定端口号
  • 为dump.rdb从命名
  • appendonly 关闭或改名在这里插入图片描述
    如redis6379.conf
include /opt/myredis/redis.conf
pidfile /var/run/redis6379.pid
port 6379
dbfilename dump6379.conf

分别开启服务并查看服务器配置:
如:启动端口为6379的服务

[root@localhost myredis]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:0f98abde24bd6e9da53d83a5ce1feec36a6a10f7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

端口为6380和6381的服务启动如上

info replication #打印主从复制的相关信息
slaveof #成为某个实例的从服务器

1、一主二从模式

我们设置6380和6381为6379的从服务器
如:设置6381

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6380> info replication
# Replication
role:slave #设置本服务器为从服务器
master_host:127.0.0.1 # 主服务器IP
master_port:6379 # 主服务器端口
master_link_status:up # 主服务器状态
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:01f941bca7a76f19f88eea102b57dcc27c518b9c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0

6381设置同上
打印6379主从复制相关信息

127.0.0.1:6379> info replication
# Replication
role:master
#从服务器信息
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=140,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=140,lag=1
master_replid:01f941bca7a76f19f88eea102b57dcc27c518b9c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:140
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:140

特点:
从服务器始终与主服务器数据保持一致
从服务器不可写入数据
主服务器shutdown后从服务器原地待命
在这里插入图片描述
复制原理

  • 每次从机联通后都会给主机发送sync指令
  • 主机立刻进行存盘操作,发送rdb文件给从机
  • 从机收到rdb后进行全盘加载
  • 之后主机的每次写操作,都会发送给从机,从机执行相同命令
薪火相传

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力。中途变更转向:会清除之前的数据,重新建立拷贝最新的。一旦某个slave宕机,后面的slave都没法备份

反客为主
  SLAVEOF no one

使当前数据库停止与其他数据库的同步,转成主数据库

2、哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
使用方式

  • 调整为一主二从模式
  • 指定的/myredis的目录下新建sentinel.conf
  • 在配置文件中填写 sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
  • 可以设置多个哨兵,上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
    在这里插入图片描述
  • 启动哨兵执行redis-sentinel.conf sentinel.conf
故障恢复原理

主机宕机后,哨兵根据票从众多从服务器选出一个新的将其转成主服务。新的主服务向剩下的从服务发送slaveof复制新的master。当已下线的服务重新上线时sentinel会向其发送slaveof,让其成为新主服务的从服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值