Redis 单机一主二从主从复制完整搭建指南

简介

本文基于 Redis 5.0+ 版本,手把手教大家在同一台服务器 上搭建一主二从 架构(主节点:6379,从节点:6380、6381)。全程包含配置文件拷贝、分步配置、启动、状态校验、数据同步测试,同时结合实操中遇到的典型问题做避坑讲解,适合新手学习参考。

文章目录

    • 简介
    • 一、环境说明
    • [二、前期准备:目录创建 & 配置文件拷贝](#二、前期准备:目录创建 & 配置文件拷贝)
      • [2.1 查找原始配置文件](#2.1 查找原始配置文件)
      • [2.2 创建独立实例目录](#2.2 创建独立实例目录)
      • [2.3 拷贝原始配置文件](#2.3 拷贝原始配置文件)
    • [三、主节点 6379 配置与启动](#三、主节点 6379 配置与启动)
      • [3.1 编辑主节点配置文件](#3.1 编辑主节点配置文件)
      • [3.2 核心配置项 + 修改目的](#3.2 核心配置项 + 修改目的)
      • [3.3 启动主节点](#3.3 启动主节点)
    • [四、从节点 6380 配置与启动](#四、从节点 6380 配置与启动)
      • [4.1 编辑从节点配置文件](#4.1 编辑从节点配置文件)
      • [4.2 核心配置项 + 修改目的](#4.2 核心配置项 + 修改目的)
      • [4.3 启动从节点 6380](#4.3 启动从节点 6380)
    • [五、从节点 6381 配置与启动](#五、从节点 6381 配置与启动)
      • [5.1 编辑从节点配置文件](#5.1 编辑从节点配置文件)
      • [5.2 核心配置项 + 修改目的](#5.2 核心配置项 + 修改目的)
      • [5.3 启动从节点 6381](#5.3 启动从节点 6381)
    • 六、主从状态校验(带完整输出)
      • [6.1 查看主节点 6379 状态](#6.1 查看主节点 6379 状态)
      • [6.2 查看从节点 6380 状态](#6.2 查看从节点 6380 状态)
      • [6.3 查看从节点 6381 状态](#6.3 查看从节点 6381 状态)
    • 七、数据同步功能测试(直观验证)
      • [7.1 主节点写入测试数据](#7.1 主节点写入测试数据)
      • [7.2 从节点 6380 读取数据](#7.2 从节点 6380 读取数据)
      • [7.3 从节点 6381 读取数据](#7.3 从节点 6381 读取数据)
      • [7.4 从节点写入权限测试(只读校验)](#7.4 从节点写入权限测试(只读校验))
    • 八、实操高频坑点总结(重点)
    • 九、常用运维命令备查
    • 十、核心规则速记

一、环境说明

  • 部署架构:单机多实例(1主2从)
  • 主节点端口:6379
  • 从节点端口:63806381
  • 核心指令:Redis 5.0+ 使用 replicaof 配置主从关系
  • 配置文件来源:使用 Redis 原生 redis.conf 模板修改

二、前期准备:目录创建 & 配置文件拷贝

2.1 查找原始配置文件

先找到 Redis 原生 redis.conf 所在路径,执行搜索命令:

bash 复制代码
find / -name redis.conf 2>/dev/null

常规默认路径:/usr/local/redis/redis.conf

2.2 创建独立实例目录

为三个 Redis 实例分别创建专属目录,目的:实现日志、持久化数据、配置文件物理隔离,避免多实例文件互相覆盖、冲突。

bash 复制代码
mkdir -p /usr/local/redis/replication/6379
mkdir -p /usr/local/redis/replication/6380
mkdir -p /usr/local/redis/replication/6381

2.3 拷贝原始配置文件

将统一的 redis.conf 分别拷贝到三个实例目录中,目的:基于官方标准配置修改,保证服务稳定性。

bash 复制代码
# 拷贝至主节点 6379
cp /usr/local/redis/redis.conf /usr/local/redis/replication/6379/
# 拷贝至从节点 6380
cp /usr/local/redis/redis.conf /usr/local/redis/replication/6380/
# 拷贝至从节点 6381
cp /usr/local/redis/redis.conf /usr/local/redis/replication/6381/

三、主节点 6379 配置与启动

3.1 编辑主节点配置文件

bash 复制代码
vim /usr/local/redis/replication/6379/redis.conf

3.2 核心配置项 + 修改目的

逐一修改以下配置,主节点无需配置主从关联指令

conf 复制代码
# 1. 设置服务端口
port 6379
# 目的:指定当前实例为 6379 主节点端口

# 2. 绑定访问IP
bind 127.0.0.1
# 目的:仅允许本机访问,测试环境提升安全性

# 3. 开启后台运行
daemonize yes
# 目的:Redis 以守护进程后台启动,不占用终端窗口

# 4. 独立进程PID文件
pidfile /var/run/redis_6379.pid
# 目的:每个实例独有PID文件,防止多实例启动冲突、重复运行

# 5. 独立日志文件
logfile "/usr/local/redis/replication/6379/redis.log"
# 目的:日志单独存放,方便后续排查问题

# 6. 数据持久化目录
dir /usr/local/redis/replication/6379
# 目的:指定RDB/AOF等数据文件存放目录,实现数据隔离

# 7. RDB快照文件名
dbfilename dump6379.rdb
# 目的:自定义数据快照文件名,和其他实例区分

# ========== 重要提醒 ==========
# 主节点【禁止】配置 replicaof
# 目的:主节点是数据源头,不需要追随其他节点

3.3 启动主节点

bash 复制代码
redis-server /usr/local/redis/replication/6379/redis.conf

四、从节点 6380 配置与启动

4.1 编辑从节点配置文件

bash 复制代码
vim /usr/local/redis/replication/6380/redis.conf

4.2 核心配置项 + 修改目的

conf 复制代码
# 1. 设置从节点端口(与主节点不同)
port 6380
# 目的:多实例端口必须唯一,避免端口占用

bind 127.0.0.1
daemonize yes

# 2. 独立PID文件
pidfile /var/run/redis_6380.pid
# 目的:与主节点、其他从节点PID文件隔离

# 3. 独立日志文件
logfile "/usr/local/redis/replication/6380/redis.log"

# 4. 独立数据目录
dir /usr/local/redis/replication/6380

# 5. 独立RDB文件名
dbfilename dump6380.rdb

# 6. 主从复制核心配置
replicaof 127.0.0.1 6379
# 目的:声明当前 6380 为从节点,指定追随本机 6379 主节点
# 踩坑提醒:此处严禁填写自身端口,否则连接失败、无法同步数据

4.3 启动从节点 6380

bash 复制代码
redis-server /usr/local/redis/replication/6380/redis.conf

五、从节点 6381 配置与启动

5.1 编辑从节点配置文件

bash 复制代码
vim /usr/local/redis/replication/6381/redis.conf

5.2 核心配置项 + 修改目的

配置逻辑与 6380 完全一致,仅修改端口、路径等唯一标识:

conf 复制代码
port 6381
bind 127.0.0.1
daemonize yes

pidfile /var/run/redis_6381.pid
logfile "/usr/local/redis/replication/6381/redis.log"
dir /usr/local/redis/replication/6381
dbfilename dump6381.rdb

# 主从复制核心配置
replicaof 127.0.0.1 6379
# 目的:声明当前 6381 为从节点,关联 6379 主节点

5.3 启动从节点 6381

bash 复制代码
redis-server /usr/local/redis/replication/6381/redis.conf

六、主从状态校验(带完整输出)

所有实例启动完成后,通过 info replication 命令查看主从角色、连接状态。

6.1 查看主节点 6379 状态

执行命令:

bash 复制代码
redis-cli -p 6379 info replication

预期输出

复制代码
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online
slave1:ip=127.0.0.1,port=6381,state=online

解读:当前节点为主节点,已成功连接 2 个从节点,所有从节点在线正常。

6.2 查看从节点 6380 状态

执行命令:

bash 复制代码
redis-cli -p 6380 info replication

预期输出

复制代码
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up

解读:当前节点为从节点,已成功连接 127.0.0.1:6379 主节点,连接状态正常。

6.3 查看从节点 6381 状态

执行命令:

bash 复制代码
redis-cli -p 6381 info replication

预期输出

复制代码
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up

七、数据同步功能测试(直观验证)

主从架构核心特性:主节点可读写,从节点默认只读,主节点数据自动同步至所有从节点

7.1 主节点写入测试数据

执行命令:

bash 复制代码
redis-cli -p 6379 set k1 "hello_redis_master"

输出结果

复制代码
OK

7.2 从节点 6380 读取数据

执行命令:

bash 复制代码
redis-cli -p 6380 get k1

输出结果

复制代码
"hello_redis_master"

7.3 从节点 6381 读取数据

执行命令:

bash 复制代码
redis-cli -p 6381 get k1

输出结果

复制代码
"hello_redis_master"

7.4 从节点写入权限测试(只读校验)

从节点默认禁止写入,执行写入命令:

bash 复制代码
redis-cli -p 6380 set k2 123456

输出结果

复制代码
(error) READONLY You can't write against a read only replica.

解读:报错代表从节点只读属性生效,主从架构角色完全正常。

八、实操高频坑点总结(重点)

结合本次搭建过程中遇到的问题,整理最容易出错的场景:

  1. replicaof 配置错误

    • 错误写法:replicaof 127.0.0.1 6380(指向自身端口)
    • 现象:master_link_status:down,从节点无法同步数据,读取键返回空
    • 正确写法:replicaof 127.0.0.1 6379(固定指向主节点端口)
  2. 多实例文件未隔离

    • 问题:所有实例共用同一个 pidfiledirdbfilename
    • 现象:实例启动失败、数据文件互相覆盖
    • 解决方案:每个实例配置独立的 PID 文件、日志、数据目录、RDB 文件。
  3. 启动命令不指定配置文件

    • 错误操作:直接执行 redis-server
    • 现象:加载默认配置,自定义的主从规则全部失效
    • 正确操作:redis-server 完整路径/redis.conf
  4. 主节点配置 replicaof

    • 问题:主节点添加 replicaof 配置
    • 现象:主节点降级为从节点,架构完全混乱
    • 规则:仅从节点配置 replicaof,主节点禁止配置
  5. 补充说明

    pidfilelogfiledirdbfilename 仅作用于实例启动、文件存储,不会影响主从复制连接与数据同步,配置错误只会导致启动异常,不会出现"能启动但读不到数据"的问题。

九、常用运维命令备查

bash 复制代码
# 1. 优雅停止指定Redis实例
redis-cli -p 端口 shutdown

# 2. 查看所有Redis运行进程
ps -ef | grep redis

# 3. 强制杀死进程(优雅停止失败时使用)
kill -9 进程PID

# 4. 动态修改主从关系(临时生效,重启失效)
redis-cli -p 从节点端口 REPLICAOF 主IP 主端口

# 5. 取消从节点身份,升级为独立主节点
redis-cli -p 端口 REPLICAOF NO ONE

十、核心规则速记

  1. 端口、PID、日志、数据目录、RDB 文件,一实例一配置,全部独立
  2. 主节点:不配置 replicaof,负责读写、下发数据;
  3. 从节点:必须配置 replicaof 主IP 主端口,默认只读、同步主节点数据;
  4. 校验标准:从节点 master_link_status:up 代表主从连接成功。
相关推荐
lzhdim2 小时前
SQL 入门 16:SQL 事务隔离级别与死锁解析(易懂)
数据库·sql
AI 小老六3 小时前
Claude Code 如何压缩上下文:Microcompact、Prompt Cache 与 cache_edits 工程拆解
数据库·人工智能·ai·语言模型·架构·系统架构
Chasing__Dreams3 小时前
Redis--基础知识点--32--redis底层存储结构
数据库·redis·缓存
不总是3 小时前
[2026最新] Windows 免安装版 MySQL 8 详细安装配置教程(ZIP 压缩包版)
数据库·windows·mysql
tedcloud1234 小时前
DBX部署教程:打造支持AI SQL助手的数据库管理环境
数据库·人工智能·sql
野生技术架构师4 小时前
我有个大胆的想法,用 PostgreSQL 代替 Redis
数据库·redis·postgresql
cfm_29144 小时前
Redis ZSet 有序集合详解
数据库·redis·缓存
瀚高PG实验室4 小时前
V4.5.6.1授予普通用户监控类系统表及视图的查询权限
数据库·瀚高数据库
BullSmall4 小时前
模板库与抽取实例:企业数据同步最佳实践
数据库