【运维篇】5.6 Redis server 主从复制配置

文章目录

  • 0. 前言
  • 1. 配置方式
      • 步骤1: 准备硬件和网络
      • 步骤2: 安装Redis
      • 步骤3: 配置主服务器的Redis
      • 步骤4: 配置从服务器的Redis
      • 步骤5: 测试复制功能
      • 步骤6: 监控复制状态
  • 2. 参考文档

在这里插入图片描述

0. 前言

在Redis运维篇的第5.6章节中,将讨论Redis服务器的主从复制配置。在开始之前,让先来了解一下主从复制的概念和作用。

主从复制是指将一个Redis服务器的数据复制到其他Redis服务器的过程。在主从复制中,一个Redis服务器充当主服务器,而其他Redis服务器则充当从服务器。主服务器负责接收写操作,并将这些写操作传播到所有从服务器。从服务器则负责接收主服务器传播的写操作,并将这些写操作应用到自己的数据集中。

主从复制的主要作用是提高系统的可用性和性能。通过将数据复制到多个服务器上,即使主服务器发生故障,从服务器仍然可以提供读取服务,从而保证系统的可用性。此外,主从复制还可以将读操作分摊到多个服务器上,从而提高整个系统的读取性能。

在接下来的内容中,将详细讲解如何进行Redis服务器的主从复制配置和示例。

1. 配置方式

步骤1: 准备硬件和网络

确保你的主机和从机的硬件资源符合运行Redis的要求。主服务器和从服务器应该通过可靠的网络连接,确保两者之间的通信稳定且延迟较低。

这里我使用3台虚拟机来搭建一下,主服务器的ip为192.168.10.1,两个从服务器的ip分别为192.168.10.2192.168.10.2,端口号都为6379,具体的配置如下

步骤2: 安装Redis

根据你的操作系统,从Redis官网下载安装包或使用相应的包管理器进行安装。
对于基于RPM的系统(如CentOS):

sudo yum install redis

对于基于Debian的系统(如Ubuntu):

sudo apt-get update
sudo apt-get install redis-server

对于macOS(使用Homebrew):

brew install redis

我的是Centos 7
192.168.10.1
192.168.10.2
192.168.10.3
分别安装完redis 并开放防火墙6379端口号
有两种方式,看你的操作系统的支持。

  1. 使用firewall
	   # 检查当前防火墙规则:
	  sudo firewall-cmd --list-all 
	 #  如果没有特定规则,可以使用以下命令开放端口 6379:
	  sudo firewall-cmd --add-port=6379/tcp --permanent 
	   # 重新加载防火墙规则:
	 sudo firewall-cmd --reload
  1. 或者使用iptables
sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT

分别修改三台服务器的配置如下

daemonize yes
# 绑定的主机地址,这里注释掉,开放ip连接
#bind 127.0.0.1
logfile "redis.log"
requirepass 123456

步骤3: 配置主服务器的Redis

编辑Redis配置文件(通常位于/etc/redis/redis.conf/usr/local/etc/redis.conf),进行以下设置:

# 启用AOF持久化模式,以保证数据安全
appendonly yes

# 如果需要密码认证,取消以下注释并设置密码
requirepass 123456

重启Redis服务来应用新的配置:

sudo service redis-server restart

或在系统中使用对应的命令,如systemctl等。

步骤4: 配置从服务器的Redis

在从服务器上,同样编辑Redis配置文件。添加以下设置:

# 指定主服务器的地址和端口
slaveof 192.168.10.1 6379

# 如果主服务器设置了密码,配置从服务器的masterauth以匹配主服务器的密码
masterauth 123456

# 设置从服务器为只读模式
slave-read-only yes

# 设置从服务器与主服务器断开连接时的超时时间,单位为秒
repl-timeout 60

# 设置从服务器向主服务器发送PING的频率,单位为秒
repl-ping-slave-period 10

重启从服务器的Redis服务以应用新的配置。

步骤5: 测试复制功能

在主服务器上执行Redis命令,添加一些数据:

redis-cli -a 123456
set key1 "value1"

然后,在从服务器上执行:

redis-cli -a 123456
get key1

如果返回的是"value1",表示复制功能正常。

步骤6: 监控复制状态

使用以下命令在主服务器和从服务器上查看复制的状态和信息:

redis-cli -a 123456
info replication

会看到类似于以下的信息:

192.168.10.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.10.2,port=6379,state=online,offset=700,lag=0
slave1:ip=192.168.10.3,port=6379,state=online,offset=700,lag=0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:700
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:700

192.168.10.2:6379> info replication
# Replication
role:slave
master_host:192.168.10.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:57
repl_backlog_histlen:798

192.168.10.3:6379> info replication
# Replication
role:slave
master_host:192.168.10.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:854

2. 参考文档

https://redis.io/docs/management/replication/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/168912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux程序设计(上)

系列文章目录 文章目录 系列文章目录前言一、unix, linux, GNU, POSIXLinux程序 二、shellshell语法1.变量2.语句 函数命令命令的执行dialog工具-- 三、文件操作1. Linux 文件结构2. 系统调用和设备驱动程序3. 库函数4. 底层文件访问5. 标准I/O库6.格式化输入输出7. 文件和目录…

快速排序知识总结

快速排序思维导图&#xff1a; 快速排序算法模版&#xff1a; #include <iostream>using namespace std;const int N 1e5 10;int n; int q[N];void quick_sort(int q[], int l, int r) {if (l > r) return;int x q[(l r) / 2], i l - 1, j r 1;while (i < …

七天.NET 8操作SQLite入门到实战 - SQLite 简介

什么是SQLite&#xff1f; SQLite是一个轻量级的嵌入式关系型数据库&#xff0c;它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的&#xff0c;而且已经在很多嵌入式产品中使用了它&#xff0c;它占用资源非常的低&#xff0c;在嵌入式设备中&#xff0c;可能只需要几…

记一次攻防实战渗透

经典开局一个登录框 由于漏洞应该还未修复。对于数据和相关网址打个码见谅一下 常规思路&#xff08;爆破&#xff09; 常规操作进行一波 尝试弱口令然后开始爆破 对于此种有验证码的爆破&#xff0c;可以借用一个bp插件。 captcha-killer-modified-jdk14.jar 具体使用我就…

【数据结构初阶】双链表

双链表 1.双链表的实现1.1结口实现1.2申请结点1.3初始化双链表1.4打印双链表1.5尾插1.6尾删1.7头插1.8头删1.9计算大小1.10查找1.11pos位置插入1.12删除pos位置1.12删除双链表 全部码源 1.双链表的实现 1.1结口实现 #include<stdio.h> #include<stdlib.h> #inclu…

2023下半年软件设计师考试知识点大全思维导图

软件设计师考试知识点大全思维导图 2023年下半年第一次机考 复习资料 以上是我在学习过程中根据自己的知识结构的特点及刷到的考题 做的导图&#xff0c;有需要的可以留言发原版的 mmap格式文件 方便自己拓展. 软考资料 这是网上找的资料 汇总免费放在这里 吧![ 链接&#x…

聊一聊go的单元测试

文章目录 概要一、测试框架1.1、testing1.2、stretchr/testify1.3、smartystreets/goconvey1.4、cweill/gotests 二、打桩和mock2.1、打桩2.2、mock2.2.1、mockgen 三、基准测试和模糊测试3.1、基准测试3.2、模糊测试 四、总结4.1、小结4.2、其他4.3、参考资料 概要 软件测试是…

java学习part06数组

62-数组-数组的概述_哔哩哔哩_bilibili 这篇 Java 基础&#xff0c;我吹不动了 - 掘金 (juejin.cn) 1.数组概念 重点 2.数组声明和初始化 new的时候要么给出静态初始化的数据{a,b,c}&#xff0c;要么给出动态初始化指定长度 [4]。 否则报错&#xff0c;初始化必须确定长度…

Redis字典实现

前言 字典又称符号表&#xff0c;关联数组或者映射(map)。是一种保存键值对的抽象数据结构。在字典中一个键和一个值进行关联。这些关联的值被称为键值对。 字典中每一个键都是独一无二的&#xff0c;没有重复的。我们可以通过键来查找值&#xff0c;更新值或者删除整个键值对等…

【封装UI组件库系列】搭建项目及准备工作

封装UI组件库系列第一篇搭建项目 前言 &#x1f31f;搭建项目 创建工程 基本结构 1.创建8个组件展示页面 ​ 2.配置路由文件router/index.js 3.页面布局 &#x1f31f;总结 前言 在前端开发中&#xff0c;大家可能已经用过各种各样的UI组件库了&#xff0c;现在市面上热…

最大子段和(分治法+动态规划法)

求最大子段和 此类问题通常是求数列中连续子段和的最大值&#xff0c;经典的股票问题就是考察的这个思想及拓展。 例题&#xff1a; AcWing:1054. 股票买卖 Leetcode:53. 最大子数组和 分治法O(nlogn) 此类问题时分适合采用分治思想&#xff0c;因为所有子区间 [ s t a r t …

网工内推 | 国企、港企网工,年底双薪,NA以上认证即可

01 中航期货有限公司 招聘岗位&#xff1a;信息技术部-网络工程师 职责描述&#xff1a; 1、负责总部、分支机构、外联单位网络的日常运维、故障和应急处置&#xff0c;特别是定期监测设备的运行状态&#xff0c;对存在隐患的地方及时发现改正&#xff0c;保持网络稳定通畅&am…

利用JDBC及Servlet实现对信息录入注册功能的实现

利用JDBC及Servlet实现对登录注册功能的实现&#xff1b; 1.题目要求&#xff1a; 1、新建一个数据库名为&#xff08;个人姓名拼音&#xff09;&#xff0c;表&#xff08;学生所在城市&#xff09;&#xff0c;字段&#xff08;sid&#xff1a;学号&#xff0c;sname&#x…

从硬件到软件:揭秘磁盘结构和文件系统组织

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了从磁盘的硬件结构&#xff0c;再到操作系统内部是…

采集1688整店商品(店铺所有商品、店铺列表api)

返回数据&#xff1a; 请求链接 {"user": [],"items": {"item": [{"num_iid": "738354436678","title": "国产正品i13 promax全网通5G安卓智能手机源头厂家批发手机","pic_url": "http…

Altium Designer内电层(Plan)GND和POWER出现的死铜如何去除-AD

1.问题描述 更多遇到的是顶层底层敷铜时出现清楚死铜&#xff1b;但是在内电层有时候也会出现死铜。这时候不去除死铜就会在DRC中报错。 2.解决办法1-多边形填充挖空 在工具栏&#xff1a; 放置——多边形填充挖空&#xff1b;然后再错误高亮处的死铜周围画多边形&#xff0c…

制作Go程序的Docker容器(以及容器和主机的网络问题)

今天突然遇到需要将 Go 程序制作成 Docker 的需求&#xff0c;所以进行了一些研究。方法很简单&#xff0c;但是官方文档和教程有些需要注意的地方&#xff0c;所以写本文进行记录。 源程序 首先介绍一下示例程序&#xff0c;示例程序是一个 HTTP 服务器&#xff0c;会显示si…

机器学习第10天:集成学习

文章目录 机器学习专栏 介绍 投票分类器 介绍 代码 核心代码 示例代码 软投票与硬投票 bagging与pasting 介绍 核心代码 随机森林 介绍 代码 结语 机器学习专栏 机器学习_Nowl的博客-CSDN博客 介绍 集成学习的思想是很直观的&#xff1a;多个人判断的结合往往比…

通信网络安全防护定级备案流程介绍(附流程图)

通信网络安全防护定级备案是拥有增值电信业务经营许可证并且有开展电信业务的企业要做的一件事情。刚接触这块的家人们在填报操作的时候可能对具体通信网络安全防护定级备案流程还不是很清楚&#xff0c;所以就给大家画张具体的流程图吧&#xff0c;可以更加直观的了解。 通信…

栈和队列知识点+例题

1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端成为栈顶&#xff0c;另一端成为栈底。遵守后进先出的原则&#xff08;类似于弹夹&#xff09; 压栈&#xff1a;栈的插入操…