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

浙公网安备 33010602011771号