news 2026/7/20 20:35:22

CentOS7.9:Redis主从复制结构化实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CentOS7.9:Redis主从复制结构化实战

一、项目概述
1.1 业务场景说明
主从复制(Master‑Slave),把主节点 (Master) 内存数据同步到从节点 (Slave),实现数据备份;读写分离,写请求交给主库,查询请求分发到从库分担压力;为主从切换、哨兵模式、Redis‑Cluster 集群打下基础。主库可以拥有多个从库,从库默认只读。
1.2 环境参数
项目
参数
操作系统
CentOS Linux release 7.9‑2009
Redis 版本
redis‑5.0.10
主节点
192.168.1.10:6379 master
从节点 1
192.168.1.10:6380 slave1
从节点 2
192.168.1.10:6381 slave2
安全策略
关闭 firewalld、SELinux
主库密码
Admin@123456
二、前期环境准备
2.1 关闭安全策略
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
2.2 主节点配置文件(6379)
port 6379
bind 0.0.0.0
daemonize yes
pidfile /var/run/redis_6379.pid
requirepass Admin@123456
dir /usr/local/redis/data
#开启RDB持久化
save 60 10
启动主服务:
redis-server /usr/local/redis/conf/redis-6379.conf
2.3 从节点配置两种方式
方式一:修改配置文件永久生效;
方式二:redis‑cli 命令动态设置,重启后失效。
方式 1:修改配置文件(生产环境)
6380 节点配置:
port 6380
bind 0.0.0.0
daemonize yes
pidfile /var/run/redis_6380.pid

指定主库IP和端口

slaveof 192.168.1.10 6379

填写主库密码

masterauth Admin@123456

从节点开启只读模式

replica-read-only yes
复制配置文件创建 6381 实例,修改端口。
cp /usr/local/redis/conf/redis-6380.conf /usr/local/redis/conf/redis-6381.conf
sed -i ‘s/6380/6381/’ /usr/local/redis/conf/redis-6381.conf
启动两个从节点:
redis-server /usr/local/redis/conf/redis-6380.conf
redis-server /usr/local/redis/conf/redis-6381.conf
方式 2:命令动态设置(临时测试)
进入从库客户端执行,重启 Redis 配置失效:
SLAVEOF 192.168.1.10 6379
CONFIG SET masterauth “Admin@123456”
CONFIG SET replica-read-only yes
取消主从关系,升级为独立主库:
SLAVEOF NO ONE
三、查看主从同步状态
登录主库或者从库,执行命令:
INFO replication
字段说明:

  1. role:master:当前节点为主节点;role:slave代表从节点;
  2. slave_io_running:yes:从节点网络连接正常;
  3. slave_sql_running:yes:数据同步正常;两个参数都为 yes,代表主从复制成功。
    四、主从复制完整流程(原理)
  4. 从节点发起连接请求,建立网络连接;
  5. 主库执行 BGSAVE,生成 RDB 全量快照,发送给从节点;
  6. 从节点清空自身旧数据,加载 RDB 文件完成全量同步;
  7. 主库把新产生的写命令存入复制缓冲区;
  8. 通过缓冲区持续向从库推送增量命令,实现增量同步;
  9. 网络中断重连之后,使用部分重同步机制,只同步断开期间的数据,不用全量同步。
    核心概念:复制积压缓冲区 (repl‑backlog)
    主库开辟一块内存缓冲区,保存最近一段写指令;从库断线重连,对比偏移量,只同步缺失数据,避免全量快照,提升同步效率。
    #配置文件调整缓冲区大小
    repl-backlog-size 128mb
    五、读写分离实战方案
  10. 写操作:全部连接主节点 (6379);
  11. 查询操作:程序连接两个从节点 (6380、6381),分担查询压力;
  12. 从节点默认只读,禁止业务写入数据。
    六、一主一从、一主多从、链式主从
  13. 一主多从:一个 master,多个 slave,本案例模式;
  14. 链式复制:A (master)‑B (slave+master)‑C (slave);B 既是 A 的从库,又是 C 的主库;缺点:主库故障,链式延迟变大,生产环境不推荐。
    七、动态运维命令(无需重启服务)
    #开启从库只读
    CONFIG SET replica-read-only yes
    #修改主库密码后,从库更新密码
    CONFIG SET masterauth “Admin@123456”
    #查看复制参数配置
    CONFIG GET repl*
    #取消主从身份
    SLAVEOF NO ONE
    八、ks.cfg 脚本批量部署 Redis 实例
    %post
    yum install -y gcc gcc-c++ make
    cd /usr/local/src
    wget https://download.redis.io/releases/redis-5.0.10.tar.gz
    tar -zxf redis-5.0.10.tar.gz
    cd redis-5.0.10
    make MALLOC=libc
    make install PREFIX=/usr/local/redis
    %end
    九、高频故障总结
    故障 1:INFO replication 中 slave_io_running 为 no,连接失败
  • 原因:防火墙拦截端口,bind 绑定 127.0.0.1,masterauth 密码填写错误;
  • 解决:关闭防火墙,bind 设置 0.0.0.0,核对主库密码。
    故障 2:slave‑io 正常,slave‑sql‑running 为 no,同步数据错乱
  • 原因:从库残留旧数据,版本不兼容;
  • 解决:清空从库数据文件,重启 Redis 重新全量同步。
    故障 3:网络频繁断开,每次都触发全量同步
  • 原因:repl‑backlog‑size 缓冲区空间过小,断线数据超出缓冲区;
  • 解决:调大 repl‑backlog‑size 缓冲区。
    故障 4:主库修改密码后,从库同步中断
  • 原因:从库 masterauth 配置没有更新;
  • 解决:从库执行 CONFIG SET masterauth,更新密码配置。
    文档不含文档不含@[toc]标记,可直接复制发布 CSDN 文档。
    CentOS7.9:Redis 主从复制结构化实战教程
    一、项目概述
    1.1 业务场景说明
    主从复制(Master‑Slave),把主节点 (Master) 内存数据同步到从节点 (Slave),实现数据备份;读写分离,写请求交给主库,查询请求分发到从库分担压力;为主从切换、哨兵模式、Redis‑Cluster 集群打下基础。主库可以拥有多个从库,从库默认只读。
    1.2 环境参数
    项目
    参数
    操作系统
    CentOS Linux release 7.9‑2009
    Redis 版本
    redis‑5.0.10
    主节点
    192.168.1.10:6379 master
    从节点 1
    192.168.1.10:6380 slave1
    从节点 2
    192.168.1.10:6381 slave2
    安全策略
    关闭 firewalld、SELinux
    主库密码
    Admin@123456
    二、前期环境准备
    2.1 关闭安全策略
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
    2.2 主节点配置文件(6379)
    port 6379
    bind 0.0.0.0
    daemonize yes
    pidfile /var/run/redis_6379.pid
    requirepass Admin@123456
    dir /usr/local/redis/data
    #开启RDB持久化
    save 60 10
    启动主服务:
    redis-server /usr/local/redis/conf/redis-6379.conf
    2.3 从节点配置两种方式
    方式一:修改配置文件永久生效;
    方式二:redis‑cli 命令动态设置,重启后失效。
    方式 1:修改配置文件(生产环境)
    6380 节点配置:
    port 6380
    bind 0.0.0.0
    daemonize yes
    pidfile /var/run/redis_6380.pid

指定主库IP和端口

slaveof 192.168.1.10 6379

填写主库密码

masterauth Admin@123456

从节点开启只读模式

replica-read-only yes
复制配置文件创建 6381 实例,修改端口。
cp /usr/local/redis/conf/redis-6380.conf /usr/local/redis/conf/redis-6381.conf
sed -i ‘s/6380/6381/’ /usr/local/redis/conf/redis-6381.conf
启动两个从节点:
redis-server /usr/local/redis/conf/redis-6380.conf
redis-server /usr/local/redis/conf/redis-6381.conf
方式 2:命令动态设置(临时测试)
进入从库客户端执行,重启 Redis 配置失效:
SLAVEOF 192.168.1.10 6379
CONFIG SET masterauth “Admin@123456”
CONFIG SET replica-read-only yes
取消主从关系,升级为独立主库:
SLAVEOF NO ONE
三、查看主从同步状态
登录主库或者从库,执行命令:
INFO replication
字段说明:

  1. role:master:当前节点为主节点;role:slave代表从节点;
  2. slave_io_running:yes:从节点网络连接正常;
  3. slave_sql_running:yes:数据同步正常;两个参数都为 yes,代表主从复制成功。
    四、主从复制完整流程(原理)
  4. 从节点发起连接请求,建立网络连接;
  5. 主库执行 BGSAVE,生成 RDB 全量快照,发送给从节点;
  6. 从节点清空自身旧数据,加载 RDB 文件完成全量同步;
  7. 主库把新产生的写命令存入复制缓冲区;
  8. 通过缓冲区持续向从库推送增量命令,实现增量同步;
  9. 网络中断重连之后,使用部分重同步机制,只同步断开期间的数据,不用全量同步。
    核心概念:复制积压缓冲区 (repl‑backlog)
    主库开辟一块内存缓冲区,保存最近一段写指令;从库断线重连,对比偏移量,只同步缺失数据,避免全量快照,提升同步效率。
    #配置文件调整缓冲区大小
    repl-backlog-size 128mb
    五、读写分离实战方案
  10. 写操作:全部连接主节点 (6379);
  11. 查询操作:程序连接两个从节点 (6380、6381),分担查询压力;
  12. 从节点默认只读,禁止业务写入数据。
    六、一主一从、一主多从、链式主从
  13. 一主多从:一个 master,多个 slave,本案例模式;
  14. 链式复制:A (master)‑B (slave+master)‑C (slave);B 既是 A 的从库,又是 C 的主库;缺点:主库故障,链式延迟变大,生产环境不推荐。
    七、动态运维命令(无需重启服务)
    #开启从库只读
    CONFIG SET replica-read-only yes
    #修改主库密码后,从库更新密码
    CONFIG SET masterauth “Admin@123456”
    #查看复制参数配置
    CONFIG GET repl*
    #取消主从身份
    SLAVEOF NO ONE
    八、ks.cfg 脚本批量部署 Redis 实例
    %post
    yum install -y gcc gcc-c++ make
    cd /usr/local/src
    wget https://download.redis.io/releases/redis-5.0.10.tar.gz
    tar -zxf redis-5.0.10.tar.gz
    cd redis-5.0.10
    make MALLOC=libc
    make install PREFIX=/usr/local/redis
    %end
    九、高频故障总结
    故障 1:INFO replication 中 slave_io_running 为 no,连接失败
  • 原因:防火墙拦截端口,bind 绑定 127.0.0.1,masterauth 密码填写错误;
  • 解决:关闭防火墙,bind 设置 0.0.0.0,核对主库密码。
    故障 2:slave‑io 正常,slave‑sql‑running 为 no,同步数据错乱
  • 原因:从库残留旧数据,版本不兼容;
  • 解决:清空从库数据文件,重启 Redis 重新全量同步。
    故障 3:网络频繁断开,每次都触发全量同步
  • 原因:repl‑backlog‑size 缓冲区空间过小,断线数据超出缓冲区;
  • 解决:调大 repl‑backlog‑size 缓冲区。
    故障 4:主库修改密码后,从库同步中断
  • 原因:从库 masterauth 配置没有更新;
  • 解决:从库执行 CONFIG SET masterauth,更新密码配置。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 20:33:55

2026年最火的 AI Agent(智能体)

对普通人来说,AI 带来的最大机会是"能力杠杆"——它不会让你凭空变强,但能让你以更低的成本、更快的速度,去尝试以前不敢想的事情,以下是26年最火的AI Agent。一、编程开发 Agent这是 2026 年竞争最激烈的领域&#xff…

作者头像 李华
网站建设 2026/7/20 20:33:33

2026华为OD机试 新系统真题题库目录|机考题库

2026年4月已正式启用华为OD机试 新系统,目前已完全收录于OJ 华为OD机试2026年新系统 目录链接OD 真题目录 OJ2026年新系统 (C Java Py C语言 JS) 面试真题目录 OD面试高频手撕代码&八股文 华为OD机试2026年新系统 题目考点 or 实现分值959、 水库溃坝填补 贪心…

作者头像 李华
网站建设 2026/7/20 20:28:22

如何快速部署高性能AI模型:Qwopus-GLM-18B本地助手完整实战指南

如何快速部署高性能AI模型:Qwopus-GLM-18B本地助手完整实战指南 【免费下载链接】Qwopus-GLM-18B-Merged-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/Jackrong/Qwopus-GLM-18B-Merged-GGUF 想要在本地部署一个高性能的AI助手吗?Qwopus-G…

作者头像 李华
网站建设 2026/7/20 20:28:21

对比各类法务机构:龚SIR法拍提供全流程无套路一对一干预

面对房贷断供:如何理性筛选专业的债务危机干预服务当面临按揭逾期、银行起诉甚至即将进入法拍程序时,业主往往处于高压与信息不对称的状态。此时,寻找能够提供全流程跟进的房贷断供危机干预服务,核心不在于看谁的承诺更诱人&#…

作者头像 李华
网站建设 2026/7/20 20:28:16

Bagging集成学习原理与实战:自助采样、方差抑制与OOB评估

1. 什么是Bagging?先别急着写代码,搞懂它为什么能“以弱胜强”Bagging,全称Bootstrap Aggregating,是集成学习里最朴素也最扎实的起点。如果你刚接触机器学习,听到“多个模型投票决定结果”,第一反应可能是…

作者头像 李华
网站建设 2026/7/20 20:28:03

Aily Blockly 辅助 STM32 开发教程2

Aily Blockly 辅助 STM32 开发教程2 第 7 章:串口通信 7.1 串口基础 UART/USART(通用异步收发器)是最常用的串行通信接口,可用于: 与电脑通信(调试打印) 与其他模块通信(蓝牙、WiFi、GPS 等) STM32F103 有 3 个 USART 接口: 串口 TX 引脚 RX 引脚 USART1 PA9 PA10 …

作者头像 李华