Redis主从复制搭建过程
准备
两台linux服务器(虚拟机),配置了IP,保持网络畅通
IP | 角色 | 端口 |
---|---|---|
192.168.1.121 | Redis主节点 | 6379 |
192.168.1.122 | Redis从节点 | 6380 |
下载Redis安装包
# wget http://download.redis.io/releases/redis-3.2.8.tar.gz
安装
解压下载好的Redis安装包到一个指定的目录中
# mkdir -p /opt/module/redis
# tar -zxvf redis-3.2.8.tar.gz -C /opt/module/redis
进入到Redis的解压目录中,编译安装
# cd /opt/module/redis
# make & make install
安装过程中如果没有出现异常,错误,那么安装完成之后就可以在/usr/local/bin/
目录下看到Redis的几个脚本的文件
- redis-server //Redis服务器脚本
- redis-cli //redis的客户端脚本
- redis-benchmark //redis的性能检测工具
- redis-check-aof //AOF文件修复工具
- redis-check-dump //RDB文件检测工具
***注意: 以上步骤主从两台服务器(虚拟机)都要执行!
Redis主节点配置
将Redis解压目录中的utils
目录下的redis_init_script
脚本文件拷贝到/etc/init.d/
目录中
# cp /opt/module/redis/utils/redis_init_script /etc/init.d/
修改redis_init_script
脚本文件名称
# cd /etc/init.d/
# mv redis_init_script redis_6379
创建两个目录,用于存放Redis相关的文件
# mkdir /etc/redis //存放redis的配置文件
# mkdir -p /var/redis/6379 //存放redis的持久化文件
将Redis配置文件redis.conf(默认在Redis的解压目录下)
拷贝到/etc/redis/
目录下,并且修改文件名称
# cp /opt/module/redis/redis.conf /etc/redis/
# cd /etc/redis
# mv redis.conf 6379.conf
修改Redis配置文件6379.conf
,修改的内容如下:
bind 0.0.0.0 //修改redis绑定的IP,在服务器(虚拟机)上也可以访问redis服务
port 6379 //设置redis的监听端口号,这个端口要和redis_6379脚本文件中端口保持一致!
daemonize yes //让redis以守护进程方式启动
pidfile /var/run/redis_6379.pid //设置redis的pid文件位置
logfile "6379.log" //日志文件名称
dbfilename dump_6379.rdb //设置dump持久化文件名称
dir /var/redis/6379 //设置持久化文件的位置
appendonly yes //开启aof持久化
appendfilename "appendonly_6379.aof" //aof持久化文件
requirepass redis-pass //开启安全认证,后面的字符串是认证的口令/密码
修改Redis脚本文件redis_6379
,设置Redis服务随机服务器的启动而自动启动
①.在脚本文件redis_6379
中添加两行注释内容
# chkconfig: 2345 90 10
# description: redis is a persistent key-value database
②.设置开机启动
# chkconfig redis_6379 on
防火墙打开6379端口(在~
目录下执行)
# /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
# /etc/rc.d/init.d/iptables save
到这里Redis主节点配置完毕!
Redis从节点配置
将Redis解压目录中的utils
目录下的redis_init_script
脚本文件拷贝到/etc/init.d/
目录中
# cp /opt/module/redis/utils/redis_init_script /etc/init.d/
修改redis_init_script
脚本文件名称
# cd /etc/init.d/
# mv redis_init_script redis_6380
编辑脚本文件内容,修改Redis默认的端口
# vim redis_6380
创建两个目录,用于存放Redis相关的文件
# mkdir /etc/redis //存放redis的配置文件
# mkdir -p /var/redis/6380 //存放redis的持久化文件
将Redis配置文件redis.conf(默认在Redis的解压目录下)
拷贝到/etc/redis/
目录下,并且修改文件名称
# cp /opt/module/redis/redis.conf /etc/redis/
# cd /etc/redis
# mv redis.conf 6380.conf
修改Redis配置文件6380.conf
,修改的内容如下:
bind 0.0.0.0 //修改redis绑定的IP,在服务器(虚拟机)上也可以访问redis服务
port 6380 //设置redis的监听端口号,这个端口要和redis_6380脚本文件中的端口保持一致!
daemonize yes //让redis以守护进程方式启动
pidfile /var/run/redis_6380.pid //设置redis的pid文件位置
logfile "6380.log" //日志文件名称
dbfilename dump_6380.rdb //设置dump持久化文件名称
dir /var/redis/6380 //设置持久化文件的位置
appendonly yes //开启aof持久化
appendfilename "appendonly_6380.aof" //aof持久化文件
slaveof 192.168.1.121 6379 //开启主从复制,后面的IP为主节点的IP地址,端口则是主节点的端口
slave-read-only yes //强制读写分离,主节点可以读写,从节点只能读,该属性默认已经打开了
masterauth redis-pass //安全认证,后面的字符串是认证口令
修改Redis脚本文件redis_6380
,设置Redis服务随机服务器的启动而自动启动
①.在脚本文件redis_6380
中添加两行注释内容
# chkconfig: 2345 90 10
# description: redis is a persistent key-value database
②.设置开机启动
# chkconfig redis_6380 on
防火墙打开6380端口(在~
目录下执行)
# /sbin/iptables -I INPUT -p tcp --dport 6380 -j ACCEPT
# /etc/rc.d/init.d/iptables save
到这里Redis从节点也配置完毕!
启动Redis服务
①.启动Redis主节点
服务,执行/etc/init.d/redis_6379
脚本
# cd /etc/init.d/
# ./redis_6379 start
②.启动Redis从节点
服务,执行/etc/init.d/redis_6380
脚本
# cd /etc/init.d/
# ./redis_6380 start
停止Redis服务
# cd /etc/init.d/
# ./redis_6380 stop
***注意: 由于Redis主节点开启了安全认证,按照上面的方式是无法停止Redis主节点的服务的
解决方案:先访问Redis主节点服务,然后再使用"shutdown"关闭Redis服务
测试
①.在Redis主节点
使用redis-cli
客户端脚本访问Redis服务
# redis-cli -h 192.168.1.121 -p 6379 -a redis-pass
②.在Redis从节点
使用redis-cli
客户端脚本访问Redis服务
# redis-cli -h 192.168.1.122 -p 6380
可以看到,数据已经同步过来了!!!
③.在Redis从节点上执行数据写入操作,测试读写分离
根据提示可以看到,从节点是不能进行数据写入操作的!!!
查看Redis主从节点信息
通过info replication
命令查看当前Redis主/从节点信息
总结
- 如果配置主从复制之前就启动过Redis服务,那么就需要将
/var/run/
目录中redis_xxx.pid
文件删除掉!! - 如果Redis主节点开启了认证口令,那么使用”./redis_6379 stop”命令是无法停止redis服务的,需要先使用
redis-cli -h <主节点ip地址> -p <主节点端口> -a <认证口令>
连接redis服务,然后在使用”shutdown”命令才可以停止redis服务!!!
Redis主从复制原理
https://blog.csdn.net/xp_xpxp/article/details/90694894