基于Centos7系统搭建Redis集群之主从复制(新手教程)

news/2024/12/29 21:52:14/

       最近没多少事,就想着搭建个redis集群玩玩,毕竟听起来也是很高大上的东西,但是经过自己的断断续续的搭建,也感觉不是那么难,肯定也只是刚刚入门,搭建的东西也比较简单,并没有触及到里面更深入的内容;

       因为我不是一次性搭建完成的,我是这几天下班没事时搭建的,期间掉过很多坑,所以有很多东西可能被忘记了,也请大家多多包涵;

概念:

Redis持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障。 
Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构:Redis主从复制可以根据是否是全量分为全量同步和增量同步。

Redis主从复制的特点: 

1、同一个master可以拥有多个slave。 

2、master下的slave还可以接受同一架构中其它slave的连接与同步请求,实现数据的级联复制,即master->slave->slave模式; 

3 、master以非阻塞的方式同步数据至slave,这将意味着master会继续处理client的读写请求; 

4、slave端同步数据也可以修改为非阻塞的方式,当slave在执行新的同步时,它仍可以用旧的数据信息来提供查询 

5、redis的主从复制具有可扩展性,即多个slave专门提供只读查询与数据的冗余,master端专门提供写操作,实现读写分离; 

6、通过配置禁用master数据持久化机制,将其数据持久化操作交给slave完成,避免在master中要有独立的进程来完成此操作。

全量同步过程:

1:当一个从数据库启动时,会向主数据库发送sync命令,

2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并用缓存区记录后续的所有写操作

3:当主服务器快照保存完成后,redis会将快照文件发送给从数据库。

4:从数据库收到快照文件后,会丢弃所有旧数据,载入收到的快照。

5:   主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令。

6:   从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令。

增量同步过程: 

1:Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。

2:增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

一、下载安装配置redis

       首先,我认为搭建redis集群最重要的两步就是:

                 1)使用root权限登陆,避免权限问题

                 2)请关闭防火墙,如果为了安全考虑你也不必关闭防火墙,在防火墙中设置6379端口为开放端口 

                 查看防火墙状态    firewall-cmd --state           停止firewall      systemctl stop firewalld.service     禁止firewall开机启动     systemctl disable firewalld.service

       做完上面的这些,因为我是新装的linux,所以我还要安装 wget(yum -y install wget)、gcc(yum install gcc gcc-c++)插件;

      下面就可以下载redis

        请cd到你想要的下载到的包中,执行下面的命令

wget http://download.redis.io/releases/redis-4.0.9.tar.gz  # 下载安装包
tar -zxvf redis-4.0.9.tar.gz          # 解压安装包
cd redis-4.0.9/      # 进入到安装的目录中
make install         # 安装

完美的DNF四连之后,基本上就可以了,基本上就安装完毕了,

redis-server /opt/redis-4.0.9/redis.conf     # 输入启动命令,这是两个文件名

每次都输入这么长的两个文件名,实在是有点烦,不过我们可以写个sh脚本,将这两个文件名写入进去,然后每次启动时,只用启动脚本就可以了;步骤如下: 

vi redis_start.sh                       # 创建一个 . sh结束的脚本
redis-server /opt/redis-4.0.9/redis.conf    # 在空白的我文件中写入两个文件的绝对路径,这两个并不是绝对的,这个是根据你安装的路径有关
# 然后是按Esc 、 Shift+:、w q进行保存退出
sh redis_start.sh                        #输入命令就可以启动redis

 做完这些后还是要配置redis.conf文件

vi redis.conf                             # 编译redis配置文件
#修改下面的文件,按顺序,有的隔的比较远
# bind 192.168.xxx.xxx                    #取消注释,将这个修改成该虚拟机的IP,方便在win上面使用
daemonize no                              #将no修改成yes,表示可后台启动   
################################# REPLICATION ################################
masterauth 123456                         # 在REPLICATION中,可以取消对改行代码的注释,然后设置密码,这个是可选项,       

基本做完这些设置,启动完redis后就可以在win上使用刚刚搭建的redis了;

二、制作集群

然后,我们是要做集群的额,所以我们是要将做好的这个虚拟机克隆两份,做从服务器;步骤如下:

 然后一直选择下一步,然后起好名字,建议以ip为名字(可以先用复制IP的下一个IP号),然后选好保存路径

 然后按照下图顺序进行操作

 然后我们的克隆就结束了,然后打开三个虚拟机进行修改redis.conf文件

需要强调的是:

主服务器不需要配置什么, 因为时要从服务器时刻同步主服务器的,所以只用配置从服务器

 

 修改的属性如下:

################################# REPLICATION #################################
slaveof 192.168.xxx.xxx 6379                      # 取消注释,写上主redis的bind后面的IP和ip
masterauth 123456                                 #如果你主redis有密码,这个也要取消,并配置上密码

 配置上这些我们就基本上完成了主从配置

所以我们要下载redis-client,

wget http://download.redis.io/redis-stable.tar.gz(下载redis-cli的压缩包)
tar xvzf redis-stable.tar.gz(解压)
cd redis-stable(进入redis-stable目录)
make(安装)
sudo cp src/redis-cli /usr/local/bin/(将redis-cli拷贝到bin下,让redis-cli指令可以在任意目录下直接使用)

然后在三个虚拟机中都执行上面的命令

现在我们就配置完成了,我们可以测试下

现在主服务器上操作

 然后在从服务器上获取下

看到上面的结果,我们就配置完成了!!!

集群的高可用,不只是主从复制,还需要哨兵机制和keepalive的支持,这些后续会慢慢写出来!!!


http://www.ppmy.cn/news/402159.html

相关文章

【genius_platform软件平台开发】第七十二讲:linux系统驱动开发之-patchelf修改动态库链接器的方法

linux系统驱动开发之-patchelf修改动态库链接器的方法 1. patchelf 命令熟悉1.1 安装1.2 运行1.3 应用-使用自定义的动态库目录1.4 查看rpath信息1.5 设置rpath信息 2. 同名动态库修改应用2.1 第一个动态库文件2.2 应用程序2.3 第二个动态库文件2.4 使用patchelf 工具修改 1. p…

VMware启动时提示我已移动或我已复制该虚拟机

一、VMware启动时提示“我已移动该虚拟机”或“我已复制该虚拟机”,选择“我已复制该虚拟机” 1、如果选择 我已移动该虚拟机 的话网卡的MAC地址会保持不变: 因为始终只有一个MAC地址,不会造成冲突,所以虚拟机间通信没问题。 2、…

linux不清楚软件包名字,技术|Shilpa Nair 分享的 RedHat Linux 包管理方面的面试经验...

Shilpa Nair 刚于2015年毕业。她之后去了一家位于 Noida,Delhi 的国家新闻电视台,应聘实习生的岗位。在她去年毕业季的时候,常逛 Tecmint 寻求作业上的帮助。从那时开始,她就常去 Tecmint。 有关 RPM 方面的 Linux 面试题 所有的问…

Elasticsearch:实用 BM25 - 第 1 部分:分片如何影响 Elasticsearch 中的相关性评分

作者:Shane Connelly 背景 在 Elasticsearch 5.0 中,我们切换到 Okapi BM25 作为我们的默认相似度算法,这是用于对与查询相关的结果进行评分的算法。 在本博客中,我不会过多地介绍 BM25 与替代措施,但如果你想了解 B…

13.Centos软件包管理(rpm,yum,dnf),源码编译安装

基础知识 软件运行和编译 ABI:Application Binary InterfaceWindows与Linux不兼容ELF(Executable and Linkable Format)PE(Portable Executable)库级别的虚拟化:Linux: WINEWindows: CygwinAPI:Application Programmin…

Linux rpm和yum/dnf安装方式及区别

rpm是以一种数据库记录的方式来将将所需要的套件安装在Linux主机的一套管理程序。也就是说Linux系统中存在一个关于rpm的数据库,它记录了安装的包与包之间的依赖相关性。rpm包是预先在Linux主机上编译好并打包的文件,安装起来非常快捷。下面就介绍rpm常用…

搭建DNF台服之开启拍卖行

目录 一、搭建DNF台服之服务器篇 二、搭建DNF台服之数据库 三、搭建DNF台服之配置客户端 四、搭建DNF台服之无限疲劳 五、搭建DNF台服之链接数据库 六、搭建DNF台服之开启拍卖行 七、搭建DNF台服之[真外网架设]篇 自年前发布的在群晖NAS中手动搭建DNF台服服务端系列教程…

CentOS 8通过DNF命令安装最新版的LNMP(Linux+Nginx+MariaDB+PHP)

今天给大家讲解下如何安装LNMP ,首先呢我们要知道上面是DNF命令是什么. DNF是什么?YUM是什么?DNF和YUM的区别,为什么用DNF代替YUM?安装Nginx安装PHP7.4安装MariaDB DNF是什么? DNF仅仅是基于RPM的Linux发行版(如CentOS、RHEL、…