Redis多机部署复制replica

介绍

redis多机部署的一种形式,通过读写分离来降低服务器的工作负载。

服务器被分为master和slave:

  • master
    • 接收写请求(特殊情况同样可接收读请求)
    • 将新数据异步同步到slave数据库
  • slave
    • 接收读请求

缺陷

  1. master宕机后需要人工干预才能从slave中重选一个作为master以维持服务。
  2. slave数量较多,或是多次传递(master→slave→slave...),则会存在一定复制延迟。

工作原理

  1. slave首次连接master,发送sync命令,执行全量复制,slave自身数据被清除。
  2. master接收sync命令后,后台保存rdb快照,同时将所有写命令存入缓存,rdb保存完成后,将rdb文件和缓存的命令都发送给slave。
  3. slave接收rdb和缓存命令后开始初始化。
  4. master定期向slave发送心跳包;同时将新的所有收集到的写命令自动传给slave完成同步。
  5. slave下线后如果重练,master将从backlog中获得slave当前复制的offset和masterid,根据offset将未复制的数据传递给slave。

案例演示

配置文件更改

复制只需要修改slave的配置文件即可:

  1. 如果master设置了密码,则需要将masterauth设置为对应的密码。
  2. 可以将replicaof 192.168.146.128 6379设置为对应的主机ip和端口号,这样开机时就是从机。

完整配置文件修改内容:

  • daemonize yes
  • #bind 127.0.0.1
  • protected-mode no
  • port 6379(端口)
  • dir ./(工作目录)
  • pidfile /var/run/redis.pid(pid文件)
  • logfile ./redis.log(日志文件)
  • requirepass 123456(密码)
  • dbfilename dump.rdb(rdb文件名)
  • appendonly yes
  • appendfilename "appendonly.aof"(aof文件名)
  • masterauth 123456(从机设置主机密码)

主从设置命令

  1. slaveof masterip masterport:指定master数据库并同步。
  2. slaveof no one:将自身设置为master。
  3. info replication:查看主从关系。

配置为持久生效,无论master或者slave宕机都不会改变主从关系;命令为当次生效,从机宕机后关系即失效。

架构说明

一主二从

使用一主二从结构:

从机只能读不能写:

master查看主从关系:

从机查看主从关系:

主机日志:

slave链

将其中一个slave的slaveof改为另一个slave:

结构为:

master的info replication:

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.146.129,port=6379,state=online,offset=1120,lag=0
master_failover_state:no-failover
master_replid:2ffea1d7eca897713c47588d2b9042f7b694c690
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1120
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1120

slave1的info replication:

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.146.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_read_repl_offset:1204
slave_repl_offset:1204
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:1
slave0:ip=192.168.146.130,port=6379,state=online,offset=1204,lag=1
master_failover_state:no-failover
master_replid:2ffea1d7eca897713c47588d2b9042f7b694c690
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1204
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:1190

slave2的info replication:

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.146.129
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:1302
slave_repl_offset:1302
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:2ffea1d7eca897713c47588d2b9042f7b694c690
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1302
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:1288

master中设置:

slave2中顺利接收:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值