Skip to content

redis 主从复制(replica)

一主俩从搭建主从复制

配置

配置文件

master 配置

text
# 1守护进程 后台启动
daemonize yes
# 2可以外网链接
bind 0.0.0.0
# 3关闭保护模式
protected-mode no
# 4端口 (默认6379)
port 6379
# 5指定工作目录
dir ./
# 6pid 可以不更改
pidfile "./redis.pid"
# 7日志
logfile "./redis.log"
# 8为了安全配置密码
requirepass 123456
# 9 dump文件
dbfilename dump.rdb
# 10 aof 开启   文件
appendonly yes
appendfilename "appendonly.aof"

从库配置

text
# 1守护进程 后台启动
daemonize yes
# 2可以外网链接
bind 0.0.0.0
# 3关闭保护模式
protected-mode no
# 4端口 (默认6379)
port 6379
# 5指定工作目录
dir ./
# 6pid 可以不更改
pidfile "./redis.pid"
# 7日志
logfile "./redis.log"
# 8为了安全配置密码
requirepass 123456
# 9 dump文件
dbfilename dump.rdb
# 10 aof 开启   文件
appendonly yes
appendfilename "appendonly.aof"
# 11 配置主机连接和密码
replicaof 192.168.152.150 6379
masterauth 123456

查看

master节点查看

bash
info replication

img.png 从机节点查看

bash
info replication

img.png

写入

bash
# master执行
set k1 v1
get k1
# salve执行
get k1

可以正常复制

bash
# salve 执行
set k1 v1
########error#########
从机不可以写!!!

img.png

主机宕机测试

bash
# master 
shutdown
# salve
info replication

master_down.png 手动指定主机

text
# 手动建立从属关系
REPLICAOF 192.168.152.1 6379

等待一会

slave 可以是下一台的主机

bash
info replication

slave_c_slave.png

slave 重新成为主节点

bash
SLAVEOF no one

重新成为主节点

原理

slave启动,同步初请

  1. slave 首次链接master会发送同步命令
  2. slave 首次链接master会全量复制 slave数据库原数据会被清空

首次链接,全量复制

  1. master 收到同步请求后会RDB保存
  2. slave 接收到数据库文件后 存盘并加载到内存中从而完成初始化

心跳持续,保持通讯

  1. maser发送ping 命令 默认10s

进入平稳,增量复制

  1. master继续将收到的修改命令自动依次传给slave 完成同步

从机下线,重传续传

  1. master 检查 backlog中的offset 类似断点续传