Redis安装、主从复制配置及操作

实验环境

虚拟机:一台
Ubuntu:两台
ip地址:
192.168.10.10:6379(master)
192.168.10.11:6379(slave)

为两个Ubuntu分别安装Redis

# sudo apt update
# sudo apt install redis-server

启动redis

1、如何杀死redis进程?
进入redis-cli客户端输入命令:shutdown
或者
sudo /etc/init.d/redis-server stop
有时可能需要
kill -9 redis_pid

2、如何启动redis进程?
sudo redis-server /etc/redis/redis.conf

redis.conf配置文件的作用

bind 127.0.0.1 ::1
bind 0.0.0.0

replicaof <masterip> <masterport>          #启动后服务器成为masterip的从服务器
replicaof 192.168.10.1 6379                #当前redis服务器将成为从服务器,且主服务器为192.168.10.1:6379

protected-mode yes                         #开启protected-mode保护模式,需配置bind ip或者设置访问密码,即必须设置下面的requirepass参数,否则会报错
protected-mode no                          #关闭protected-mode模式,此时外部网络可以直接访问

requirepass foobared                       #设置客户端登录redis-server的密码
requirepass "123"                          #此时本地redlis-cli登录上redis-server后,需要auth 123验证才能进行读写操作;
#此时远程slaveof主从复制该redis-server服务器时,需要在从服务器中配置masterauth <master-password>,相当于requirepass参数用来设置主服务器的密码,而masterauth用来验证从服务器复制主服务器的登录密码
#特别注意,requirepass配置主、从配置文件都要设置,因为后边切换的时候原本的主机可能会变成从机

masterauth <master-password>               #当前redis服务器用于从服务器时,用于验证登录主服务器的密码,如果主服务器requirepass "123",则从服务器必须验证masterauth "123"。
#特别注意,requirepass配置主、从配置文件都要设置,因为后边切换的时候原本的主机可能会变成从机

daemonize no                               #不以守护进程的方式运行
daemonize yes                              #以守护进程的方式运行

port 6379                                  #指定redis运行的端口

pidfile /var/run/redis.pid                 #当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis服务时,需要指定不同的pid文件和端口。

logfile /var/log/redis/redis-server.log    #指定Redis日志记录方式,默认值为stdout,表示打印在命令行终端的窗口上,也可设为/dev/null屏蔽日志
logfile /var/log/redis/redis-server.log    #redis启动的日志文件,一般需要注意对默认路径进行修改,因为Linux读写的权限问题,很可能导致redis服务器启动失败

dir /var/lib/redis                         #指定rdb/AOF文件的目录位置,只能为文件夹不能为文件,一般需要注意对默认路径进行修改,因为Linux读写的权限问题,很可能导致redis服务器无法启动,启动失败

slave-serve-stale-data yes                 #参数设置成yes,主从复制中,从服务器可以响应客户端请求;
slave-serve-stale-data no                  #参数设置成no,主从复制中,从服务器将阻塞所有请求,有客户端请求时返回“SYNC with master in progress”;

replica-read-only yes                      #
replica-read-only no                       #

appendonly yes                             #开启AOF持久化服务

配置/etc/redis/redis.conf文件

主从服务器共同修改内容:

#修改监听端口
bind 127.0.0.1 ::1
修改为:
bind 0.0.0.0

#修改路径,统一放到/home/username/redis下,修改后还需要在Linux上执行:chmod 777 /home/username/redis对该目录进行权限修改,否则下面修改仍然无法解决问题
logfile /var/log/redis/redis-server.log
修改为:
logfile /home/username/redis/log/redis-server.log

dir /var/lib/redis
修改为:
dir /home/username/redis/lib #lib是文件夹,不是文件

replica-serve-stale-data yes
修改为:
replica-serve-stale-data no 

appendonly no
修改为:
appendonly yes

protected-mode no
修改为:
protected-mode yes

#为什么此处requirepass和masterauth都要修改且都修改为"123",因为主从服务器之间的关系可以互相转换
#requirepass foobared
修改为:
requirepass "123"

#masterauth <master-password> 
修改为:
masterauth "123"

主从节点修改完共同配置后,从服务器还需要一点修改:

replicaof <masterip> <masterport>
修改为:
replicaof 192.168.10.10 6379

此时,192.168.10.11:6379将在启动时自动成为10:637的从服务器。

依次启动主、从服务器

192.168.10.10服务器:# redis-server /etc/redis/redis.conf
192.168.10.11服务器:# redis-server /etc/redis/redis.conf

分别检测独立的redis服务器是否可登陆

redis-cli -h 192.168.10.183 -p 6379 -a "123"

其中,-h是主机ip,-p是端口号,-a是redis密码

建立复制

需要注意,主从复制的开启,完全是在从节点发起的;不需要我们在主节点做任何事情。
从节点开启主从复制,有3种方式:
(1)配置文件
在从服务器的配置文件中加入:slaveof <masterip> <masterport>
(2)启动命令
redis-server启动命令后加入--slaveof <masterip> <masterport>
(3)客户端命令
Redis服务器启动后,直接通过客户端执行命令:slaveof <masterip> <masterport>,则该Redis实例成为从节点。

上述3种方式是等效的,下面以客户端命令的方式为例,看一下当执行了slaveof后,Redis主节点和从节点的变化。

查看主从复制情况

登录redis-cli后,输入命令:auth 123,然后输入:info replication即可得知当前服务器的主从连接情况。

常见问题

  • 修改redis.conf配置文件后启动redis-server无效:
    直接输入命令:redis-server启动redis-server服务器时,会以默认的初始化方式初始化,不会读取配置文件,如果想要配置文件有效,需要输入命令:../redis-server /etc/redis/redis-conf
  • 输入:./redis-server /etc/redis/redis.conf无反应,很有可能是文件路径读写权限问题,进入redis.conf的配置文件看看

注:修改redis配置文件后,发现修改并未生效,因为redis如果没有在启动时指定配置文件,就会加载初始化状态,如果要修改的配置生效,需要启动时如下命令:redis-server /etc/redis/redis.conf

posted @ 2021-09-01 17:08  一只小菜菜鸟  阅读(351)  评论(0)    收藏  举报