redis主从结构 (一主一从,一主多从,主从从)

article/2025/9/27 6:42:48

关闭防火墙和selinux

systemctl disable firewalld.service
systemctl stop firewalld vim /etc/selinux/config
sed -n '7p' /etc/selinux/config
SELINUX=disabled
setenforce 0

从服务器首次做的是全量同步,且同步的数据会覆盖本机的数据

master        192.168.44.140        [root@z1 ~]#

slave           192.168.44.141        [root@z2 ~]#
1,在master节点z1和slave节点z2编译安装redis

tar xf redis-4.0.8.tar.gz
cd redis-4.0.8/
yum -y install make gcc
make && make install

初始化配置 (选项回车保持默认)

[root@z1 redis-4.0.8]# ./utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis serverPlease select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

 初始化完成后redis自动启动

[root@z1 redis-4.0.8]# ss -utnlp | grep redis
tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=4910,fd=6))
 [root@z2 redis-4.0.8]# ss -utnlp | grep redis
tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=14578,fd=6))

 2,配置一主一从       

redis默认均为主的身份

主从结构的从服务器不允许执行存储数据的操作,只能读数据

运行的redis服务 必须使用本机的 物理网卡口的地址 接收连接请求 (使用默认的lo 地址无法彼此之间建立连接

 2.1,修改配置文件,添加本机物理网卡接收请求,重启服务生效

修改配置文件

[root@z1 redis-4.0.8]# vim /etc/redis/6379.conf
[root@z1 redis-4.0.8]# sed -n '70p' /etc/redis/6379.conf
bind 127.0.0.1 192.168.44.140

 

 重启查看

[root@z1 redis-4.0.8]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@z1 redis-4.0.8]# ss -utnlp | grep redis
[root@z1 redis-4.0.8]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@z1 redis-4.0.8]# ss -utnlp | grep redis
tcp    LISTEN     0      128    192.168.44.140:6379                  *:*                   users:(("redis-server",pid=5169,fd=7))
tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=5169,fd=6))
 [root@z2 redis-4.0.8]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@z2 redis-4.0.8]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@z2 redis-4.0.8]# ss -utnlp | grep redis
tcp    LISTEN     0      128    192.168.44.141:6379                  *:*                   users:(("redis-server",pid=14798,fd=7))
tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=14798,fd=6))

 2.2,连接服务器查看状态

两个服务器均为默认身份        主master        role:master

两个服务器的从服务器均为0       connected_slaves:0  

[root@z1 redis-4.0.8]# redis-cli -h 192.168.44.140 -p 6379
192.168.44.140:6379> ping
PONG
192.168.44.140:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:c8aae9e06288dee5f6f1ebb209fd3c8496290c31
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.44.140:6379>
 [root@z2 redis-4.0.8]# redis-cli -h 192.168.44.141 -p 6379
192.168.44.141:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:c305720d6bdfd64c85a1f49afa1d6b3d95131ac8
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.44.141:6379>

 2.3,配置主从。

把192.168.44.141        [root@z2 ~]#        设置为192.168.44.140        [root@z1 ~]#的从服务器

在192.168.44.141        [root@z2 ~]#        配置         指定主服务器的IP和端口

192.168.44.141:6379> slaveof 192.168.44.140 6379
OK
192.168.44.141:6379> info replication
# Replication
role:slave
master_host:192.168.44.140
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:210
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:2adfaaeda40d88b94262c096cdcd3962396530ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:210
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:210

 在192.168.44.140        [root@z1 ~]#服务器查看状态

[root@z1 redis-4.0.8]# redis-cli -h 192.168.44.140 -p 6379
192.168.44.140:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.44.141,port=6379,state=online,offset=728,lag=1
master_replid:2adfaaeda40d88b94262c096cdcd3962396530ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:728
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:728

3,验证一主一从

连接主服务器存储数据

连接从服务器查询数据

[root@z1 redis-4.0.8]# redis-cli -h 192.168.44.140 -p 6379
192.168.44.140:6379> keys *
(empty list or set)
192.168.44.140:6379> mset a 1 b 2 c 3 d 4
OK
192.168.44.140:6379> keys *
1) "d"
2) "b"
3) "a"
4) "c"
192.168.44.140:6379> mget a b c d
1) "1"
2) "2"
3) "3"
4) "4"
192.168.44.140:6379>
[root@z2 redis-4.0.8]# redis-cli -h 192.168.44.141 -p 6379
192.168.44.141:6379> keys *
1) "d"
2) "b"
3) "c"
4) "a"
192.168.44.141:6379> mget a b c d
1) "1"
2) "2"
3) "3"
4) "4"
192.168.44.141:6379>


http://chatgpt.dhexx.cn/article/dOh6Hv0E.shtml

相关文章

Mysql主从模式

文章目录 👉🏻前言❤️主从模式说明🤍logbin日志🤍Mysql主从复制的流程🤍主从复制中遇到的问题 ❤️主从模式配置🤍Master配置🤍Slave配置 ❤️其他设置🤍半同步复制🤍并…

mysql主从同步

目录 1.创建主从同步用户 2.授予主从同步权限 3.刷新权限 4.修改master配置文件 5.重启MySQL 6.查看master的状态 7.修改slave配置文件 8.重启mysql 9.构建主从连接信息 10.开始同步 11.查看同步信息 12.同步失败 13.同步报错 13.1 server_id冲突 13.2 initiali…

mysql主从原理

目录 一、主从复制原理 1.原理 2.也就是说 3.注意 随着访问量的不断增多,mysql数据库的压力不断增加,需要对mysql进行优化和架构改造,可以使用高可用、主从复制、读写分离、拆分库、拆分表进行优化。下面我们来学习mysql主从复制高可用如…

MySQL主从复制

一、MySQL主从复制原理 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用「主从复制」。 比如:在复杂的业务系统中,有一句sql执行后导致锁表,并且这条sql的的执行时间有比较长&…

Mysql主从同步配置

1. mysql主从同步定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的&am…

MySQL 的主从架构

数据库主从概念、优点及用途 主从数据库中主是主库的意思,从是从库的意思。数据库主库对外提供读写操作,从库对外提供读操作。 数据库为什么需要主从架构呢? 高可用,实时灾备,用于故障切换。比如主库挂了&#xff0c…

MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置

前言:前面我们了解了MySQL数据库的基础知识,今天及接下来的五天时间里我会给大家带来MySQL进阶方面的一些学习总结,如有不足,还请大家留言指出;下面我们就开始今天的内容。 ** 部署mysql主从同步结构 **  主从同步…

MySQL的主从

前言 金三银四面试的时候,面试官经常会问MySQL主从。今天就跟大家聊聊MySQL的主从。 数据库主从概念、优点、用途 数据库主从复制原理 主主、主从、主备的区别 MySQL是怎么保证主从一致的 数据库主从延迟的原因与解决方案 聊聊数据库的高可用方案 1. 数据库…

主从原理,一主多从架构

主从架构总结 主从原理 用binlog做主从,redolog只支持innodb 过程 ①start slave后从库启动io线程连接主库,请求读日志②dump线程根据请求信息读取指定位置后的日志③完成后就响应成功,没有确认机制④IO线程收到信息,将受到的日…

主从复制:主从复制的概述、一主一从架构搭建主从复制的原理、同步数据一致性问题

文章目录 1. 主从复制的概述1.1 如何提升数据库的并发能力1.2 主从复制的作用 2. 主从复制的原理2.1 原理剖析2.2 复制的最大问题2.3 复制的基本原则 3. 一主一从架构搭建3.1 准备工作3.2 主机配置文件3.3 从机配置文件3.4 建立账户并授权3.5 配置需要复制的主机3.6 测试3.7 停…

c/c++经典面试题(高频考点)

一、数据结构及算法(快排、归并、堆排等) 十大排序算法 数据结构(c/c版)-严蔚敏 数据结构与算法(思维导图) E:\学习\4.数据结构(C语言版)].严蔚敏_吴伟民.扫描版.pdf 数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图 1.快速排…

吐血整理 | 最常见的 C/C++ 面试题(含答案)

大家好,我是 K 哥! 最近群里有小伙伴想跳槽,问我有没有常见的 C/C 面试题。这不正好,K 哥之前整理了一份 PDF,里面包含了各种经典的 C/C 题目,当然更重要的是还附带了非常详细的答案。 K 哥不仅面试之前会反…

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C的区…

C++面试题总结,一篇就够了

C面试题汇总 1. C基础1.1 内存模型1.1.0 内存四区1.1.1 简述C、C程序编译的内存分配情况1.1.2 分配函数与释放函数1.1.2.1 malloc / free1.1.2.2 new / delete1.1.2.3 new/delete 与 malloc/free 区别1.1.2.5 calloc 、realloc1.1.2.6 在C中,使用malloc申请的内存能…

C面试题--汇总

目录 一、C语言基础面试题1. gcc编译器编译的完整流程,分别有什么作用?2.什么是回调函数?3.地址能否使用 printf函数中的 %u形式打印?4.结构体与共用体(联合体)的区别5. static、const、volatile关键字有什…

C/C++ 最常见50道面试题

C/C经典面试题 面试题 1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明, 但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或…

C语言经典面试题学习

1. 请填写bool , float, 指针变量 与“零值”比较的if 语句。 提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针” 。例如int 变量n 与“零值”比较的if 语句为: if ( n 0 ) if ( n ! 0 ) 以此类推。 (1)请写出bool flag 与“…

C语言面试题目大全

http://blog.chinaunix.net/uid-12077574-id-145080.html 1.求下面函数的返回值(微软) int func(x) { int countx 0; while(x) { countx ; x x&(x-1); } return countx; } 假定x 9999。 答案:8 思路:将x转化为2进制&am…

C语言常见面试题汇总

文章目录 gcc的编译过程&#xff1f;static关键字变量/函数的声明和定义之间有什么区别各种指针指针常量与常量指针“引用”与指针的区别是什么&#xff1f;C语言参数传递方式&#xff1a;结构体的浅拷⻉与深拷⻉#include<> 与#include ""的区别&#xff1f;宏…

c语言打印菱形图案

1.打印空心菱形 #include<stdio.h> int main() {int n,i,m,j,k;scanf("%d", &n);m (n 1) / 2;for (i 1; i < n; i) //一行一行的循环打印{if (i < m) //分两种情况&#xff0c;上半部分和下半部分{for (j m - i; j > 0; j--)pri…