Redis(主从复制搭建)

2024-05-09 00:36
文章标签 redis 主从复制 搭建

本文主要是介绍Redis(主从复制搭建),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.主从复制示意图
    • 2.搭建一主多从
        • 1.搭建规划三台机器(一主二从)
        • 2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)
          • 1.安装Redis
            • 1.yum安装gcc
            • 2.查看gcc版本
            • 3.将redis6.2.6上传到/opt目录下
            • 4.进入/opt目录下然后解压
            • 5.进入 redis-6.2.6目录
            • 6.编译并安装
            • 7.进入 /usr/local/bin 查看是否有redis的命令
          • 2.启动并使用Redis
            • 1.进入 /opt/redis-6.2.6/
            • 2.将里面的redis.conf复制一份到/etc下
            • 3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
            • 4.启动redis,指定刚才的配置文件
            • 5.查看redis进程
          • 3.Redis基本配置
            • 1.修改端口为7489 port
            • 2.设置redis密码 requirepass
            • 3.使redis支持远程访问 bind
            • 4.登录redis的命令行,关闭redis
            • 5.重新启动redis,使配置生效
          • 4.开启7489端口
            • 1.宝塔开启端口
            • 2.腾讯云开启端口(只允许本机ip访问)
          • 5.Redis持久化配置
            • 1.进入redis配置文件
            • 2.dbfilename为redis持久化的文件名(一般不用改)
            • 3.dir修改为/root/则每次持久化的dump.rdb都会在/root/下,恢复时无论在哪里启动,都会读取这个文件进行恢复
            • 4.开启AOF持久化配置,编辑配置文件找到appendonly,设置成yes
            • 5.进入命令行关闭redis,需要指定端口登录
            • 6.重新启动redis,使配置生效
            • 7.发现/root/下面有两个配置文件,如果没有dump.rdb是因为没有对redis进行操作
          • 6.测试Java连接redis
            • 1.引入jedis的jar包
            • 2.编写测试程序
        • 3.配置Redis的一主二仆
          • 1.在配置之前,将三台的Redis的7489端口完全放开
          • 2.三台机器都进入redis的客户端,将数据全部清除
          • 3.输入 info replication 可以看到目前三台机器都为master
          • 4.在两台从服务上输入 slaveof 主服务ip 主服务端口 来设置主服务
          • 5.输入 info replication 来查看角色
            • 1.从服务
            • 2.主服务
            • 3.没连接成功,后来询问GPT4发现如果主服务器配置了密码,则需要在从服务器的masterauth 中设置一下密码
          • 6.为两台从服务器的 masterauth 配置主服务器的密码,然后测试连接
            • 1.分别设置密码
            • 2.分别重启
            • 3.从服务器重新配置
            • 4.再查看一下主服务器的状态,也是成功连接两台从服务器
          • 7.注意事项和细节
            • 1.如果想要持久化,需要在从服务的配置文件中配置 slaveof ...... 否则重启主从关系就会消失
            • 2.主服务器可读可写,从服务器只可读
    • 3.主从复制原理分析
        • 1.原理示意图
        • 2.解读
        • 3.细节
          • 1.主服务down掉了的情况
          • 2.当从服务down掉了的情况
        • 4.薪火相传
        • 5.反客为主(是在薪火相传的基础上的)
    • 4.哨兵模式(sentinel)
        • 1.配置哨兵
          • 1.**保持一主二仆的环境即可**
          • 2.随便找一台服务器启动哨兵,这里选择在master服务器启动
            • 1.在/etc下面创建一个sentinel.conf的配置文件
            • 2.编辑文件,设置master的名字,ip+端口以及哨兵的个数,这里是1,还有master的密码
            • 3.再开启一个连接,启动哨兵,指定配置文件
        • 2.测试
          • 1.关闭master
          • 2.等待一会,查看哨兵,可以看到切换了master
          • 3.查看子节点的情况,注意:此时需要重新进行密码验证
          • 4.重启原来的master,会自动降级为子节点
        • 3.注意事项和细节
          • 1.主机down后的执行流程
          • 2.哨兵挑选新master的依据
          • 3.重启原来的master,会自动降级为子节点
          • 4.如果原来的主节点有密码,则需要在sentinel.conf 配置auth-pass参数设置密码
          • 5.关于密码配置方案

1.主从复制示意图

image-20240502113422879

2.搭建一主多从

1.搭建规划三台机器(一主二从)
2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)
1.安装Redis
1.yum安装gcc
yum install gcc
2.查看gcc版本
gcc --version

image-20240502134411561

3.将redis6.2.6上传到/opt目录下

image-20240502134559769

4.进入/opt目录下然后解压
cd /opt && tar -zxvf redis-6.2.6.tar.gz

image-20240502134704827

5.进入 redis-6.2.6目录
cd redis-6.2.6

image-20240502134745310

6.编译并安装
make && make install

image-20240502134932117

7.进入 /usr/local/bin 查看是否有redis的命令
cd /usr/local/bin && ll

image-20240502135006749

2.启动并使用Redis
1.进入 /opt/redis-6.2.6/
cd /opt/redis-6.2.6/

image-20240502135103511

2.将里面的redis.conf复制一份到/etc下
cp redis.conf /etc/redis.conf

image-20240502135237138

3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
vim /etc/redis.conf

image-20240502135330240

4.启动redis,指定刚才的配置文件
/usr/local/bin/redis-server /etc/redis.conf
5.查看redis进程
ps -aux | grep redis

image-20240502135537103

3.Redis基本配置
1.修改端口为7489 port

image-20240502135741587

2.设置redis密码 requirepass

image-20240502135842050

3.使redis支持远程访问 bind

image-20240502140044483

image-20240502140108290

4.登录redis的命令行,关闭redis
/usr/local/bin/redis-cli

image-20240502140407662

5.重新启动redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240502140612286

4.开启7489端口
1.宝塔开启端口
systemctl start firewalld && firewall-cmd --permanent --add-port=7489/tcp && firewall-cmd --reload && firewall-cmd --query-port=7489/tcp

image-20240502140719020

2.腾讯云开启端口(只允许本机ip访问)

image-20240502143052618

5.Redis持久化配置
1.进入redis配置文件
vim /etc/redis.conf
2.dbfilename为redis持久化的文件名(一般不用改)

image-20240502141741998

3.dir修改为/root/则每次持久化的dump.rdb都会在/root/下,恢复时无论在哪里启动,都会读取这个文件进行恢复

image-20240502141833925

4.开启AOF持久化配置,编辑配置文件找到appendonly,设置成yes

image-20240502142032064

5.进入命令行关闭redis,需要指定端口登录
/usr/local/bin/redis-cli -p 7489

image-20240502142252827

6.重新启动redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240502142304676

7.发现/root/下面有两个配置文件,如果没有dump.rdb是因为没有对redis进行操作

image-20240502142608205

6.测试Java连接redis
1.引入jedis的jar包

image-20240502143134966

2.编写测试程序
    public static void main(String[] args) {// 连接服务器的redis命令行Jedis jedis = new Jedis("xxx", xx);// 如果redis设置了密码要先进行验证jedis.auth("******");String ping = jedis.ping();System.out.println(ping);}
3.配置Redis的一主二仆
1.在配置之前,将三台的Redis的7489端口完全放开

image-20240502151305582

2.三台机器都进入redis的客户端,将数据全部清除

image-20240502152257185

3.输入 info replication 可以看到目前三台机器都为master

image-20240502152339936

4.在两台从服务上输入 slaveof 主服务ip 主服务端口 来设置主服务
slaveof xxxx  xxx
5.输入 info replication 来查看角色
1.从服务

在这里插入图片描述

2.主服务

image-20240502160014051

3.没连接成功,后来询问GPT4发现如果主服务器配置了密码,则需要在从服务器的masterauth 中设置一下密码

image-20240502160216284

6.为两台从服务器的 masterauth 配置主服务器的密码,然后测试连接
1.分别设置密码

image-20240502160347989

2.分别重启

image-20240502160945545

3.从服务器重新配置
slaveof 。。。。。。

在这里插入图片描述

4.再查看一下主服务器的状态,也是成功连接两台从服务器
info replication

在这里插入图片描述

7.注意事项和细节
1.如果想要持久化,需要在从服务的配置文件中配置 slaveof … 否则重启主从关系就会消失
2.主服务器可读可写,从服务器只可读

3.主从复制原理分析

1.原理示意图

image-20240502162041121

2.解读

image-20240502162022135

3.细节
1.主服务down掉了的情况
  • 从服务并不会抢占主服务的位置
  • 当主服务重新启动之后,从服务又会指向主服务
2.当从服务down掉了的情况
  • 当再次连接主服务时还是会进行一次全量备份
4.薪火相传
  • 简单来说就是让b是a的slave,c是b的slave
  • 这样c的数据就从b来获取,而写入操作还是从a进行

image-20240502163548532

5.反客为主(是在薪火相传的基础上的)

image-20240502164007948

4.哨兵模式(sentinel)

1.配置哨兵
1.保持一主二仆的环境即可
2.随便找一台服务器启动哨兵,这里选择在master服务器启动
1.在/etc下面创建一个sentinel.conf的配置文件
touch /etc/sentinel.conf
2.编辑文件,设置master的名字,ip+端口以及哨兵的个数,这里是1,还有master的密码
vim /etc/sentinel.conf
sentinel monitor redis_master ........
3.再开启一个连接,启动哨兵,指定配置文件
/usr/local/bin/redis-sentinel /etc/sentinel.conf 

image-20240502165851224

2.测试
1.关闭master

image-20240502183659278

2.等待一会,查看哨兵,可以看到切换了master
3.查看子节点的情况,注意:此时需要重新进行密码验证

在这里插入图片描述
在这里插入图片描述

4.重启原来的master,会自动降级为子节点

在这里插入图片描述

3.注意事项和细节
1.主机down后的执行流程

image-20240502184700413

2.哨兵挑选新master的依据

image-20240502184725028

3.重启原来的master,会自动降级为子节点
4.如果原来的主节点有密码,则需要在sentinel.conf 配置auth-pass参数设置密码
5.关于密码配置方案
  • 在redis.conf中配置requirepass 以及masterauth 都为相同的密码,这样各个节点就可以正常连接了
  • 如果是哨兵模式还要在sentinel.conf 配置master的密码,格式为 sentinel auth-pass master名字yourStrongPassword

这篇关于Redis(主从复制搭建)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971891

相关文章

docker搭建mysql主从配置

1.拉取mysql,这里使用5.7 docker pull mysql:5.7 2、在本地主机新建两个配置文件:my-master.cnf、my-slave.cnf my-master.cnf: [mysqld]log-bin = mysql-binserver-id = 1 my-slave.cnf: [mysqld]server-id = 2 注意:自己创建文件所在的路径。

Redis利用zset数据结构如何实现多字段排序,score的调整(finalScore = score*MAX_NAME_VALUE + getIntRepresentation(name) )

1、原文:   2、使用sql很容易实现多字段的排序功能,比如: select * from user order by score desc,name desc; 3、问题:用两个字段(score,name)排序。在redis中应该怎么做?   4、使用按分数排序的redis集合。你必须根据你的需要准备分数。 finalScore = score*MAX_NAME_VALUE +

SVN—SVN服务器搭建和使用

本系列会总结一些svn和git的安装和使用,以及最后svn的项目如何迁移到git上,整个系列会持续输出。 要学习svn,那么首先开始搭建svn服务器和客户端。 下面要讲的有: svn下载和安装svn配置文件svn服务器的使用 1:svn服务器和客户端安装包下载和安装 Subversion是优秀的版本控制工具, 现在Subversion已经迁移到apache网站上了,下载地址: http:/

图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境

上一次分享了Nginx相关的应用场景如下: ​Nginx介绍以及一些应用场景说明 在实际使用,单机版的Nginx就不能满足高可用的要求了,在这种情况下,我们使用Nginx+Keepalived(双机热备)搭建一套高可用的环境,这就是本文的核心内容。 首先我们先了解一下Keepalived是个什么东东? Keepalived介绍 Keepalived是一个类似于layer3, 4 & 5交

QtCreator MSVC 搭建 Debugger

QtCreatorForWindows搭建Debugger QtCreator for windows选择mingw或者msvc: qt-opensource-windows-x86-msvc2015-5.8.0.exeqt-opensource-windows-x86-mingw530-5.8.0.exe Mingw支持默认调试器gdb无需配置; MSVC 需要另外安装调试器(Debug

NFS服务器搭建-共享PC与ARM主板文件

NFS服务器搭建-共享PC与ARM主板文件 在搭建好交叉编译环境之后需要实现目标板与宿主机的文件共享,在这里选择NFS,由于资料较多。需要注意的以下几点: 目标板与宿主机需要连接在同一个网段内。宿主机需要搭建nfs服务器,同样目标板在编译内核的时候需要选择nfs。 步骤一 宿主机环境设置 安装nfs-kernel-server; sudo apt-get install nfs-kern

测试服务搭建之centos7下安装java

一 安装Java 1 创建普通用户 useradd userNameTest passwd userNameTest 提示输入密码:【输入wujian的密码】 user:userNameTest group:root passwd:123456789   2 给“userNameTest”分配root权限 vi /etc/sudoers 在文件中找到 # %wheel ALL=(

关于redis一些问题记录

问题一:启动redis时出现警告,使用下列命令(已解决)       问题二:启动时,需要解决的警告(未解决)       问题三:使用自己的配置文件启动redis时,可能会遇到: Could not connect to Redis at 127.0.0.1:6379: Connection refused 原因:6379 没有断开,使用“exit”后,重新使用redis-c

Redis操作指南

目录 一、概述 4 1.1 目的 4 1.2 适用对象 4 1.3 文档内容 4 二、下载Redis及安装Redis 4 2.1 下载Redis 4 2.2 安装Redis 4 2.2.1 解压和编译 4 2.2.2 创建工作目录 5 三、 配置Redis 5 3.1 设置后台运行 5 3.2 设置工作目录 6 3.3 设置监听地址 6 3.4 设置pid存放路径 6

redis 5.0.2 搭建集群

前言 我们日常在对于redis的使用中,经常会遇到一些问题 高可用问题,如何保证redis的持续高可用性。容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。并发性能问题,redis号称单实例10万并发,但也是有尽头的。 哈希槽的概念 Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis