CentOS7下Redis主从复制操作和配置详情

更新时间:2022-09-22 10:25:59

这篇文章主要介绍了Redis主从复制操作和配置详情,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下!

前言

环境:CentOS7下安装Redis集群,默认已安装好5.0及以上版本,操作包括:

Redis-server环境变量配置配置集群的Redis.confRedis主从配置和启动测试主从机的数据一致性和读写分离

一、Redis-server环境变量

启动redis服务报错:

-bash: redis-server: command not found

原因:

没有配置对应命令,类似于window的环境变量,所以命令找不到

解决办法:

将安装目录下的redis-server执行文件路径配置到系统执行命令里ln -s /usr/local/redis/redis-4.0.9/src/redis-server /usr/bin/redis-server

其中/usr/local/redis/redis-4.0.9/src/redis-server 为安装目录下的redis-server服务文件地址

二、配置集群的Redis.conf

我们在一台服务器上开启三个Redis服务,模拟redis集群,一主两从,结构如下 :

ff04449c2a059ba5aa40efe8a4349eb5_2022092114421225.png

端口信息为7001,7002,7003(若使用的服务器记得开启端口的防火墙)

1.先创建7001~7003的三个目录,将配置文件放入对应目录并进行配置

eb19251ccba193161a59e8c8650bfdbc_2022092114421226.png

Redis.conf配置:

bind:绑定的 IP,默认是本地,可以指定 IP,表示只有指定的 IP 才可访问,注释掉的话则全部 IP 都可访问。(我们是本地开三个服务,绑定不用动,如果是分布式就0.0.0.0)protected-mode:保护模式(无密码 + 无绑定 = 本地访问),默认开启。这个不用动port:端口,改为700xdaemonize :表示以守护进程的方式运行,默认 no,需要改为 yes,避免关闭客户端后,redis 也跟着关闭。我们实验用的话,可以关掉requirepass :密码,默认没有密码,如果需要则设置密码

[root@VM-0-4-centos ~]# redis-cli -p 6379
# 获取密码
127.0.0.1:6379> config get requirepass	
1) "requirepass"
2) ""
# 设置密码
>127.0.0.1:6379> config set requirepass	12455
OK
# 重新关闭客户端再进入时,输入一下命令,则显示无权限
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
# 输入密码
127.0.0.1:6379> auth 12455
OK

三、配置主从服务器

有临时和永久两种模式:

修改配置文件(永久生效)在redis.conf中添加一行配置:slaveof <masterip> <masterport>使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效):

slaveof <masterip> <masterport>

四、启动三台Redis服务器

[root@localhost bin]# redis-server /myredis/redis6379.conf
[root@localhost bin]# redis-server /myredis/redis6380.conf
[root@localhost bin]# redis-server /myredis/redis6381.conf
[root@localhost bin]# ps -ef | grep redis
root   2999  1  0 11:58 ?00:00:00 redis-server *:6379
root   3013  1  0 11:59 ?00:00:00 redis-server *:6380
root   3019  1  0 11:59 ?00:00:00 redis-server *:6381
root   3025   2189  0 11:59 pts/000:00:00 grep --color=autoredis

使用命令登录三个redis

redis -p  <port> -a 密码   指定端口号登录redis

执行下列操作以测试:

利用redis-cli连接7001,执行set num 123利用redis-cli连接7002,执行get num,再执行set num 666利用redis-cli连接7003,执行get num,再执行set num 888

我们对从机进行写操作发现报错

对主机进行写操作,从机可以获取

可以发现,只有在7001这个master节点上可以执行写操作,7002和7003这两个slave节点只能执行读操作。

Redis