Redis---主从复制

news2025/3/9 22:57:43

一、redis主从复制

主从复制:是存储数据的服务结构
主服务器:接受客户端连接的服务器
从服务器:自动与主服务器保持数据一致的服务器

配置主从复制

1、环境准备

主服务器    主机名:master     IP地址:192.168.11.101/24
从服务器    主机名:node01     IP地址:192.168.11.102/24
 客户端     主机名:node02     IP地址:192.168.11.103/24

主从服务器都要安装redis服务,分别修改redis监听的地址为192.168.11.101,192.168.11.102

2、192.168.11.101主服务器,修改监听的IP地址

root@Master:~# ss -lntup | grep 6379
tcp   LISTEN 0      128        127.0.0.1:6379      0.0.0.0:*    users:(("redis-server",pid=1147,fd=6))
root@Master:~# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
root@Master:~# ss -lntup | grep 6379
root@Master:~# vim /etc/redis/6379.conf
bind 192.168.11.101

3、修改完配置文件重启服务

root@Master:~# /etc/init.d/redis_6379 start 
Starting Redis server...

4、登录数据库

root@Master:~# redis-cli -h 192.168.11.101 -p 6379
192.168.11.101:6379> ping
PONG

5、查看当期服务器主从信息

192.168.11.101:6379> INFO replication
# Replication
role:master # 主节点
connected_slaves:0
master_replid:88c2e017cb0ea8cbd01a4f3874b314f8de1775b2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.11.101:6379>

6、node01从服务器

修改监听的IP地址

# 先停服务器
root@node01:~# /etc/init.d/redis_6379 stop 
Stopping ...
Redis stopped

# 修改配置文件
root@node01:~# vim /etc/redis/6379.conf
# 修改客户端连接redis服务的IP地址
bind 192.168.11.102

7、重启服务检查端口监听

root@node01:~# /etc/init.d/redis_6379 start 
Starting Redis server...
root@node01:~# ss -lntup |grep 6379
tcp   LISTEN 0      128    192.168.11.102:6379      0.0.0.0:*    users:(("redis-server",pid=7978,fd=6))

8、连接主机检查主从信息

PS:在这还没添加从服务器信息,所以看到是master是正常的!!!

root@node01:~# redis-cli -h 192.168.11.102 -p 6379
192.168.11.102:6379> ping
PONG
192.168.11.102:6379> INFO replication
# Replication
role:master
connected_slaves:0
master_replid:f151ec960f14af322c6b07946a074a30a4c2c731
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

9、添加slave节点,将本机设置为node01的从服务器,node01端口号为6379

192.168.11.102:6379> SLAVEOF 192.168.11.101 6379
OK
192.168.11.102:6379> INFO replication
# Replication
role:slave
master_host:192.168.11.101
master_port:6379
master_link_status:down

错误信息:

解决方法:

关闭防火墙和selinux

root@Master:~# systemctl is-active firewalld.service
active
root@Master:~# systemctl stop firewalld.service
root@Master:~# systemctl disable firewalld.service
root@Master:~# setenforce 0

关闭连接 重启服务

# 第一次做忘了这条关闭连接命令 苦
root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdown
root@node01:~# 
root@node01:~# /etc/init.d/redis_6379 restart 
/var/run/redis_6379.pid does not exist, process is not running
Starting Redis server...

10、以上是临时配置,修改配置文件,将本机永久配置为node01的从服务器

root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdown
root@node01:~# vim  /etc/redis/6379.conf
slaveof 192.168.11.101  6379		#修改,指定主服务器的IP地址和端口号

11、重启服务

root@node01:~# /etc/init.d/redis_6379 start
root@node01:~# redis-cli -h 192.168.11.102 -p 6379
192.168.11.102:6379> info replication		#查看slave服务器的主从信息
# Replication
role:slave                  #从服务器
master_host:192.168.11.101    #主服务器IP地址
master_port:6379            #主服务器端口号
master_link_status:up       #和主服务器的连接状态:up

12、验证查看主服务器主从配置信息

192.168.11.101:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.11.102,port=6379,state=online,offset=1330,lag=0
master_replid:ecc43c0169695c02204b624365e75859defc0aec
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1330
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1330

13、测试主从同步,插入数据

# 添加数据
192.168.11.101:6379> set school qinghua
OK

# 查看数据
192.168.11.101:6379> GET school
"qinghua"

192.168.11.102:6379> KEYS *
1) "school"
192.168.11.102:6379> GET school
"qinghua"

14、反客为主:将从库恢复为主库,在node01上操作

root@node01:~# redis-cli -h 192.168.11.101 -p 6379
192.168.11.101:6379> ping
PONG
192.168.11.101:6379> SLAVEOF no one
OK
192.168.11.101:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.11.102,port=6379,state=online,offset=1853,lag=0
192.168.11.101:6379> exit

二、redis主从复制

主服务器    主机名:master      IP地址:192.168.11.101/24
从服务器    主机名:node01      IP地址:192.168.11.102/24
从服务器    主机名:node02      IP地址:192.168.11.103/24

1、三台都要安装redis服务,分别修改redis监听的地址为

192.168.11.101 192.168.11.102 192.168.11.103

2、由于之前master和node01做实验已经修改过,所以这次直接修改node02即可

# 停止服务
root@node02:~# /etc/init.d/redis_6379 stop 
Stopping ...
Redis stopped

# 修改配置文件
root@node02:~# vim /etc/redis/6379.conf
bind 192.168.11.103

3、重启服务并监听端口

root@node02:~# /etc/init.d/redis_6379 start 
Starting Redis server...
root@node02:~# ss -lntup |grep redis
tcp   LISTEN 0      128    192.168.11.103:6379      0.0.0.0:*    users:(("redis-server",pid=9860,fd=6))

4、master设置连接密码

root@Master:~# redis-cli -h 192.168.11.101 -p 6379 shutdown
501 requirepass plj123
root@Master:~# /etc/init.d/redis_6379 start
root@Master:~# redis-cli -h 192.168.11.101 -p 6379 -a plj123
192.168.4.51:6379> info  replication
# Replication
role:master
192.168.11.101:6379> set a 1
192.168.11.101:6379> set b 1
192.168.11.101:6379> set c 1

5、node01|2主机设置带验证的从库(从库配置一样,截取数据俩边混着搞得,看对应的主机信息即可)

192.168.11.103:6379>
192.168.11.103:6379> SLAVEOF 192.168.11.101 6379

6、关掉连接,添加密码

root@node01:~#  redis-cli -h 192.168.11.102 -p 6379 shutdown
root@node01:~# vim /etc/redis/6379.conf 
289 masterauth plj123

7、重启服务

root@node01:~# /etc/init.d/redis_6379 start
192.168.11.102:6379> info replication		
# Replication
role:slave
master_host:192.168.11.101
master_port:6379
master_link_status:up

8、查看数据是否同步

192.168.11.103:6379> INFO replication
# Replication
role:slave
master_host:192.168.11.101
master_port:6379
master_link_status:up


192.168.11.103:6379> KEYS *
1) "school" # 数据已经同步

9、测试当其中的一台从服务器停止,另外一台还能继续同步数据,

模拟node01宕机

root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdow

10、master存数据

192.168.11.101:6379> set AAA CCC
OK
192.168.11.101:6379> KEYS *
1) "school"
2) "AAA"

11、node02查看

192.168.11.103:6379> KEYS *
1) "AAA"
2) "school"

12、node01机器恢复

root@node01:~# /etc/init.d/redis_6379 restart
root@node01:~# ss -lntup |grep redis
tcp   LISTEN 0      128    192.168.11.102:6379      0.0.0.0:*    users:(("redis-server",pid=15384,fd=6))

13、测试数据是否同步

#宕机期间的数据自动同步
root@node01:~# redis-cli -h 192.168.11.102 -p 6379 
192.168.11.102:6379> ping
PONG
192.168.11.102:6379> KEYS *
1) "AAA"
2) "school"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在PyCharm中配置Git

防止以后换软件或电脑忘记怎么配置PyCharm,记录一下。 前提 电脑已经安装好了Git工具,安装教程有一个GitHub账号(这不废话嘛…)电脑最好有科学上网工具(要不然拉取、推送等操作总是不成功) PyCharm设置 …

VMware安装苹果系统教程 MAC安装VMware Tools,开启拖拽功能

VMware虚拟机安装苹果系统教程 1 准备工作 安装VM虚拟机、准备Install_macOS_Monterey_12.5 镜像、darwin1012.iso (VMware Tools)、unlocker解锁工具 2 解锁VM虚拟机 默认VM虚拟机是不支持macOS安装的,我们需要对虚拟机进行解锁操作&…

5.java程序员必知必会类库之excel读写库

前言 Excel在数据处理中的重要性自不必说,我们经常会有需求,将数据库中的数据,做过一些处理后,导出一个Excel给运营人员分析。也有需求是将批量的商品数据等,批量录入到我们系统中。直观上可以理解为Excel是客户和系统…

ASP 、PHP 代码加密的安全性逻辑思考

以古董后台语言 asp 为例,为了保证明文代码不被最终使用者修改或抄袭,有多种方法对代码进行编码,执行时再解码。也可以直接将代码全部编译入 COM 组件 ,但是这需要每次都编译,不适合日常使用。 因此,这里考…

【STL十二】适配器——容器适配器

【STL十二】适配器——容器适配器 一、适配器1、适配器简介2、使用适配器的优点3、适配器种类3.1、容器适配器3.2、迭代器适配器3.3、函数适配器(function adapters) 二、容器适配器1、简介2、分类 三、stack适配器1、简介2、构造函数3、成员函数4、demo 三、queue适…

Ubuntu NVIDIA-Docker安装

Ubuntu NVIDIA-Docker安装 Docker简介NVIDIA驱动安装NVIDIA-Docker安装 系统环境: 系统:linux 版本:ubuntu20.04 Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#…

WebRTC真实IP泄露

WebRTC真实IP泄露 1.概述2.利用漏洞获取真实IP地址演示3.WebRTC介绍4.WebRTC 泄漏真实IP原理5.防范措施 1.概述 很多人可能误以为使用代理就可以完全隐藏我们的真实IP地址,但实际并不总是这样。事实上,有大量文章指出,WebRTC存在安全风险&am…

零项目零科研,本科排名倒数,一战上岸上海交大电子与通信工程

笔者来自通信考研小马哥23上交819全程班学员 本科就读于哈工大(威海),本科成绩很差,专业排名62/99,没有科研,没有实验室,没有项目,连最基本大家都会参加的科技立项我四年也没有参与…

幽灵空白节点

图片下面为什么会有空白间隙呢&#xff1f;因为内联元素默认都是和 a 的下边缘基线对齐&#xff0c;基线和底部是有一段距离的&#xff0c;所以图片下面有一段间隙。 <style>.container {background-color: red;}img {width: 100px;height: 100px;} </style><d…

误删恢复及备份恢复

误删恢复&#xff0c;及备份恢复 一、误删恢复1.1用losf恢复进程存在的文件1.2恢复EXT类型的文件 二、备份恢复的集中方式2.1用xfsdump&#xff0c;xfsrestore对xfs类型文件进行备份恢复2.2用cpio命令备份恢复2.2.1通过find过滤文件进行备份 一、误删恢复 1.1用losf恢复进程存…

自然语言处理实战项目4-文本相似度的搜索功能,搜索文本内容

大家好&#xff0c;我是微学AI&#xff0c;今天给大家带来自然语言处理实战项目4-文本相似度的搜索功能&#xff0c;搜索文本内容。文本相似度搜索是一种基于自然语言处理技术&#xff0c;用于搜索和匹配文本内容的方法。其主要目的是将用户输入的查询内容与已有的文本数据进行…

c盘满了怎么清理垃圾而不误删?C盘清理,4个方法!

案例&#xff1a;c盘满了怎么清理垃圾而不误删 【我的c盘现在已经爆红了&#xff01;想清理下c盘的文件&#xff0c;但是害怕误删重要的文件&#xff0c;应该怎么做才能清理c盘但不误删重要的文件呀&#xff01;急需答案&#xff01;】 随着时间的推移&#xff0c;c盘可能会因…

游戏服务器如何搭建

无论是游戏公司还是游戏爱好者&#xff0c;游戏服务器都是不可或缺的一部分。游戏服务器承载着游戏的运行和体验&#xff0c;是在所有玩家之间建立连接的纽带。如果你想了解如何搭建游戏服务器以及相关的配置要求&#xff0c;那么本文是无法错过的。在本文中小编将为您介绍如何…

Nginx安装注意事项

一.看你是什么系统,先从官网下载你想要的版本 二.windows系统 直接解压就行了 conf 是放配置文件的地方 html是 放页面的位置 ,欢迎页也在这里 有什么静态资源也可以放这里 logs 放日志文件 在路径栏位置直接cmd 开启命令窗口 注意这里是在nginx.exe文件所在目录进行的…

TOOM解析如何搭建一套适合自己的舆情监测系统?完整的实战指南

随着互联网的普及和社交媒体的盛行&#xff0c;人们在网络上的活动越来越多&#xff0c;同时也涌现出大量的信息和舆情。这些信息和舆情在一定程度上会影响社会和个人的发展和进步。因此&#xff0c;舆情监测逐渐成为一项重要的任务。在本篇文章中&#xff0c;我们将为大家介绍…

Adobe国际认证中文官网

Adobe国际认证中文官网是Adobe公司为了帮助用户提高技能水平和职业竞争力而推出的认证服务。该官网提供了一系列的Adobe认证考试&#xff0c;包括Photoshop、Illustrator、InDesign、Premiere Pro等多个软件的认证考试。通过参加这些考试&#xff0c;用户可以获得Adobe认证&…

ASEMI代理ADG5412BRUZ-REEL7原装ADI车规级ADG5412BRUZ-REEL7

编辑&#xff1a;ll ASEMI代理ADG5412BRUZ-REEL7原装ADI车规级ADG5412BRUZ-REEL7 型号&#xff1a;ADG5412BRUZ-REEL7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;TSSOP-16 批号&#xff1a;2023 引脚数量&#xff1a;5 安装类型&#xff1a;表面贴装型 ADG5412BRUZ-…

《花雕学AI》你知道人工智能ChatGPT在10秒钟里能写出多少种标题吗?我试了24次,惊呆了!

今天准备测试AI绘画&#xff0c;使用几个不同的AI平台来生成猫娘图片&#xff0c;以此具体学习绘图的AI咒语。这篇博客用什么标题好呢&#xff1f;于是&#xff0c;我开始关心如何优化标题&#xff0c;还是老办法&#xff0c;不懂就问ChatGPT&#xff08;没有正式账号&#xff…

PHP实现输入英文语句统计单词数量,使用函数随机获取数组的最小值和最大值这两个程序的代码

目录 前言 一、输入英文语句&#xff0c;统计单词数量 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 二、使用函数随机获取数组的最小值和最大值 2.1运行流程&#xff08;思想&#xff09; 2.2代码段 2.3运行截图 前言 1.因多重原因&#xff0c;本…

WordPress安装

目标 在一台 CentOS Stream release 8 虚拟机上&#xff0c;安装一台WordPress 6.2 安装过程 安装依赖组件 依赖组件可以参考官方文档&#xff1a;https://developer.wordpress.org/advanced-administration/before-install/ 主要有3个组件&#xff1a; PHP 7.4 or greate…