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 类似断点续传