centos搭建redis并配置redis主从复制

news2024/11/17 11:42:39

一、gcc环境搭建

1.检查是否有gcc环境:

gcc -v
#运行命令 gcc -v
#如果显示:-bash: gcc: command not found   # 表示没有该环境
#如果显示下文,代表有gcc环境
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 

2.如果没有gcc环境,就需要安装gcc
2.1.yum安装:(推荐,这种方式比较简单,但是如果服务器没连外网就不能用yum了)

#2023-05-11安装时,安装的gcc版本为4.8.5
yum install gcc

如果初次使用,需要配置yum源:https://blog.csdn.net/qq_44821149/article/details/130629065

2.2.rpm包安装gcc:
之前参考的这个文章,
https://blog.csdn.net/weixin_43231352/article/details/88849961
然后发现他博客里的gcc安装包是4.4.7版本。
然后我用他这个环境编译redis,结果报错了:c: error trying to exec ‘cc1’: execvp: 没有那个文件或目录。
猜想可能是他这个gcc版本太低导致的。如果准备rpm安装gcc,可以尝试尝试较高版本。

2.3.源码编译gcc:
可以参考这篇文章:https://blog.csdn.net/liboyang71/article/details/77152577

二、redis环境搭建

1.下载redis源码包:http://download.redis.io/releases/
本文采用的redis版本为2.8.9,下载redis-2.8.9.tar.gz 即可。

2.把redis源码包放到/usr/redis目录下(没有该目录可以mkdir一个,放其他目录也可以,看个人习惯)

3.解压:

tar -zxvf redis-2.8.9.tar.gz

4.编译

cd /usr/redis/redis-2.8.9
make

5.安装

#加PREFIX参数,安装到特定目录
#因为我服务器data目录挂载分区,所以安装到这个目录,如果/根目录比较大,可以选择安装到usr/local/share/redis
make install PREFIX=/data/reids

6.拷贝配置文件到安装目录:

cp /usr/redis/redis-2.8.9/redis.conf /data/redis/redis.conf

7.测试是否安装成功:

cd /data/redis/bin
./redis-server

出现下图表示安装成功
在这里插入图片描述

三、redis常用配置

1.实现redis后台启动

vim /data/redis/redis.conf
修改:daemonize no  → daemonize yes 

之前启动redis-server时,属于前台启动,ctl c以后服务就关闭了。
现在设置后台启动,就可以后台一直运行了。

2.为redis设置密码

vim /data/redis/redis.conf
定位到该行:#requirepass foobared
去掉注释,然后修改foobared为自己的密码
requirepass 123456

3.配置日志文件

创建日志目录
mkdir /data/redis/log
配置日志文件
vim /data/redis/redis.conf
将
logfile ""
修改为
logfile "./log/redis.log"

4.使用redis.conf启动redis服务

/data/redis/bin/redis-server  /data/redis/redis.conf

5.查看redis进程信息:

ps -ef | grep redis

6.使用redis-cli连接redis-server

/data/redis/bin/redis-cli -a 123456    (a为auth,跟配置文件设置的密码)

或者进入交互式界面再密码认证也可以。
/data/redis/bin/redis-cli 
127.0.0.1:6379> auth 123456

不加其他参数,默认连的本机的6379端口。
可以指定redis的端口和IP:
/data/redis/bin/redis-cli -a 123456 -h 192.168.0.89 -p 6379
192.168.0.89:6379>

7.关闭redis服务

/data/redis/bin/redis-cli -a 123456
127.0.0.1:6379>shutdown
这时候就关闭redis服务了,查不到redis信息了
ps -ef | grep redis

8.redis配置文件信息阐述:

daemonize:如需要在后台运行,把该项的值改为yes
 
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
 
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
 
port:监听端口,默认为6379
 
timeout:设置客户端连接时的超时时间,单位为秒
 
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
 
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
 
database:设置数据库的个数,默认使用的数据库是0
 
save:设置redis进行数据库镜像的频率
 
rdbcompression:在进行镜像备份时,是否进行压缩
 
dbfilename:镜像备份文件的文件名
 
dir:数据库镜像备份的文件放置的路径
 
slaveof:设置该数据库为其他数据库的从数据库
 
masterauth:当主数据库连接需要密码验证时,在这里设定
 
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
 
maxclients:限制同时连接的客户端数量
 
maxmemory:设置redis能够使用的最大内存
 
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
 
appendfsync:设置appendonly.aof文件进行同步的频率
 
vm_enabled:是否开启虚拟内存支持
 
vm_swap_file:设置虚拟内存的交换文件的路径
 
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
 
vm_page_size:设置虚拟内存页的大小
 
vm_pages:设置交换文件的总的page数量
 
vm_max_thrrads:设置vm IO同时使用的线程数量

四、redis主从复制

1.基本信息阐述

主服务器:192.168.0.89:6379
从服务器:192.168.0.90:6379
主服务器redis密码:123456
从服务器redis密码:123456

2.主服务器redis配置(/data/redis/redis.conf):

主服务器配置文件添加 bind 0.0.0.0
表示对所有ip都开放。
如果不开放ip,从服务器会显示:master_link_status:down
表示与主服务器不能通信。

# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
bind 0.0.0.0

3.从服务器redis配置(/data/redis/redis.conf):

从服务器配置文件添加
slaveof接主服务器的ip和端口。(据说新版本redis采用replicaof替代了slaveof,使用高版本redis的时候要稍微注意一下。)
masterauth接主服务器redis的密码。

# slaveof <masterip> <masterport>
slaveof 192.168.0.89 6379

# masterauth <master-password>
masterauth 123456

4.依次重启主从redis服务,验证redis主从复制是否搭建成功

验证主服务器(主服务器上运行命令):
/data/redis/bin/redis-cli 
127.0.0.1:6379> auth 123456
127.0.0.1:6379> info replication
可以看出来本服务器角色为master,连接的从服务器数量为1。

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.0.90,port=6379,state=online,offset=24833,lag=0
master_repl_offset:24833
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:24832


验证从服务器(从服务器上运行命令):
/data/redis/bin/redis-cli 
127.0.0.1:6379> auth 123456
127.0.0.1:6379> info replication
可以看出master_link_status:up,即与主服务器连通状态为开。
一切正常。

# Replication
role:slave
master_host:192.168.0.89
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:25365
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

5.依次测试主从redis服务器的读写数据。

主服务器读写测试:
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"

从服务器读写测试:
主服务器上写数据,从服务器上可以直接读到该数据,说明主从复制配置成功,成功同步到从服务器。
从服务器默认设置只读,所以从服务器不能写数据

127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> set k2 v2
(error) READONLY You can't write against a read only slave.


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

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

相关文章

Java中ArrayList的三种构造方法

ArrayList的构造方法 //三种构造方法 ArrayList()// 无参构造 ArrayList(Collection<? extends E> c) //利用其他 Collection 构建 ArrayList ArrayList(int initialCapacity) //指定顺序表初始容量1.无参构造方法 其中elementData是一个成员数组&#xff0c;类型是Ob…

什么是敏捷开发?敏捷开发流程的8个步骤

文章目录 一、什么是敏捷开发&#xff1f;二、敏捷开发模式的分类三、SCRUM 的工作流程四、敏捷开发流程的8个步骤包括&#xff1a;五、敏捷开发模型 一、什么是敏捷开发&#xff1f; 敏捷开发&#xff08;Agile&#xff09;是一种以人为核心、迭代、循序渐进的开发方法。 在…

phpstorm 配置xdebug

目录 配置全局环境 phpstorm 项目xdebug配置 额外补充&#xff1a; 配置全局环境 本地运行命令 php -v, 看是否有Xdebug相关的信息若没有&#xff0c;安装xdebug&#xff0c;以下是mac相关方式&#xff1a; pecl search xdebug 查询&#xff0c;找到之后用 pecl install xdebug…

【企业信息化】第4集 免费开源ERP: Odoo 16 Rental租赁管理系统

文章目录 前言一、概览二、使用功能1.提高出租效率2.产品 & 价格3.销售订单4.跟进5.报告6.集成 三、总结 前言 唯一可以满足您所有需求的租赁软件 从时间安排到开具发票。 您的所有租赁流程都集中在一处。 一、概览 从租金报价到发票 从一处管理所有事务。 从一个视图创建您…

强力推荐,两款Excel插件,极致好用,让你秒变高手

Excel是我们日常生活工作中应用最多、业界最标准的表格软件。 由于Excel的用户数量非常庞大&#xff0c;在社区支持方面非常丰富&#xff0c;用户可以轻松地找到各种教程和解决方案。 虽然Excel很功能已经成熟&#xff0c;但自身也存在一定的局限性&#xff0c;很多用户在网上…

git仓库新建项目第一次推送代码流程记录

git仓库新建项目第一次推送代码流程记录 换了个坑之后,公司改用SVN管理代码,隔了好长时间没用git,突然又捡起来,有点懵逼,简单记录一下。 电脑安装git之后,在项目父文件夹处,右键选择“Git Bash Here”打开git小黑窗。 在gti后台创建新项目目录之后,如果是空的项目,…

洛谷P1909-买铅笔

洛谷P1909-买铅笔 大家来看一道简单的题&#xff0c;第一次写的时候我过了一半&#xff0c;看了半天自己的代码&#xff0c;还感觉没问题&#xff0c;还是学艺不精啊 先看题目 #include <iostream> using namespace std; int n;//要买的铅笔数 int n1,m1; int n2,m2; i…

(数字图像处理MATLAB+Python)第八章图像复原-第一节:图像复原概述

文章目录 一&#xff1a;图像复原概述二&#xff1a;图像退化模型&#xff08;1&#xff09;连续退化模型&#xff08;2&#xff09;离散退化模型 三&#xff1a;图像退化函数的估计&#xff08;1&#xff09;基于模型的估计法&#xff08;2&#xff09;运动模糊退化估计 一&am…

(双指针)leetcode11. 盛最多水的容器

文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、本题小知识 一、题目 1、题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中…

win10系统ssh连接阿里云linux服务器并传输文件教程

前言 因为业务需要&#xff0c;最近搞了一台linux的阿里云服务器&#xff0c;现在要连接阿里云服务器。 之前没有玩过这种云服务器&#xff0c;两眼一抹黑&#xff0c;在网上搜索资料也比较少&#xff0c;所以写篇博客记录一下连接的步骤&#xff0c;以防止忘记。 SSH命令行…

如何使用Nodejs搭建HTTP服务,实现公网远程访问「内网穿透」

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章&#xff1a;使用Nodejs搭建HTTP服务&#xff0c;并实现公网远程访问「内网穿透」 前言 Node.js…

Linux 之 yum使用(yum 命令使用讲解)

一、yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软件包&#x…

优思学院|何时应该使用8D方法?

8D&#xff08;Eight Disciplines&#xff09;过程是一种用于问题解决和改进的方法&#xff0c;其包含8个步骤。 D0是准备8D过程的阶段&#xff0c;其作用在于帮助我们判断是否需要使用8D来解决问题。如果问题的根本原因明显&#xff0c;可以通过直接采取措施来解决异常&#…

基于turtlebot3实现SLAM建图及自主导航仿真

一、turtlebot3依赖安装 1、安装turtlebot3 sudo apt-get install ros-noetic-turtlebot3-* //安装gmapping建图算法依赖 apt-get install ros-noetic-gmapping //安装dwa局部路径规划算法 apt-get install ros-noetic-dwa-local-planner 2、安装键盘依赖 sudo apt-get insta…

别再手动一个个添加了。使用While循环控制器轻松遍历获取文件参数

目录 测试环境 应用 实现单线程在单次迭代内遍历获取文件参数 软件测试学习心得分享 一、最后这里详细的给大家说下&#xff0c;对于0基础的朋友&#xff0c;应该怎么去学习软件测试。 二、自学软件测试需要多久&#xff1f;&#xff08;从真正的零基础到找到软件测试的工…

设计原则之【接口隔离原则】,我只做我能做的事

文章目录 一、什么是接口隔离原则二、实例三、总结接口隔离原则与单一职责原则的区别 一、什么是接口隔离原则 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;是指用多个专门的接口&#xff0c;而不使用单一的总接口&#xff0c;客户端不应该依赖…

OpenDDS安装环境构建+Demo实践(自己动手写一个)

此文用于辅助构建类似于OpenDDS\DevGuideExamples\DCPS\Messenger的Demo示例 OpenDDS安装环境构建Demo实践&#xff08;自己动手写一个&#xff09; 本文相关参考资料OpenDDS安装环境构建参考博客 Demo上手实践&#xff08;依赖于Windows下的OpenDDS环境&#xff09;OpenDDS安…

Android中常见的内存优化及内存泄露场景

避免内存泄露的关键是及时释放不再需要的资源,特别是生命周期较长的资源。在Activity和Fragment的生命周期方法中释放这些资源,如onDestroy()方法中释放线程、集合等引用,避免这些资源的生命周期过长导致内存泄露。 Android内存优化主要有以下几个方面: 合理设置应用的minSdk…

身为企业管理者,必须了解的财务知识

财务管理工作是企业管理工作中的核心内容&#xff0c;也是企业管理工作中的难点内容&#xff0c;对于集团企业来讲更是任务艰巨而又问题频出。然而&#xff0c;信息时代的来临为解决和完善企业财务管理问题提供了新思路&#xff0c;就集团企业而言&#xff0c;财务管理信息化基…

如何解决人力资本管理挑战?

人力资本管理&#xff08;HCM&#xff09;是任何企业成功的一个重要因素。得益于高效、多产和敬业的员工队伍&#xff0c;在此领域找到正确的方法和策略可以推动您取得更大的成果。 但是&#xff0c;除了关注HCM的好处和机会之外&#xff0c;你还需要做好准备&#xff0c;以克…