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

一、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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

confined.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值