redis主从复制
2种原理图主从复制通信过程
集群好处
主从备份,防止主机宕机读写分离,分担master的任务
主从复制案例
1个主机7369端口,并行的2个从机7380,7381端口 配置前准备 2 3个redis.conf配置文件[root@fei redis]# lsback bin redis6380.conf redis6381.conf redis.conf
1配置从服务器6380
vim redis6380.conf设置rdbsave 900 1save 300 10save 60 100stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump6380.rdbdir /usr/local/src/redis/back取消aof,因为主服务器已经设置#端口port 6380#pid文件pidfile /usr/local/src/redis/pid/redis_6380.pid#dump文件(由6380服务器来进行rdb工作,主服务器不进行rdb工作)dbfilename dump6380.rdb#配置主服务的地址 slaveof 127.0.0.1 6379 #6380端口只读 slave-read-only yes
2配置从服务器6381
vim redis6381.conf取消rdb 取消AOP port 6381 pidfile /usr/local/src/redis/pid/redis_6381.pid dbfilename dump6381.rdb slaveof 127.0.0.1 6379 slave-read-only yes
3配置主服务器6379
vim redis.conf取消rdb--因为从服务器已经配置设置aof--可取消可不取消,因为从服务器已经配置,这里设置# 是否打开 aof日志功能appendonly yes # aof文件存放位置(默认与rdb在一个路径下)appendfilename appendonly.aof # 每秒写1次appendfsync everysec # 正在导出rdb快照的过程中,不要停止同步aofno-appendfsync-on-rewrite yes#aof文件大小比起上次重写时的大小,增长率100%时,重写auto-aof-rewrite-percentage 100 #aof文件,至少超过64M时,重写auto-aof-rewrite-min-size 8mb#端口port 6379#pid文件pidfile /usr/local/src/redis/pid/redis_6379.pid
4 打开所有的服务器
[root@fei redis]# ./bin/redis-server ./redis.conf [root@fei redis]# ./bin/redis-server ./redis6380.conf [root@fei redis]# ./bin/redis-server ./redis6381.conf
5 测试
主服务器上设置[root@fei redis]# ./bin/redis-cli127.0.0.1:6379> set num 1OK127.0.0.1:6379> keys *1) "num"127.0.0.1:6379> set str 123OK127.0.0.1:6379>
从服务检验
[root@fei redis]# ./bin/redis-cli -p 6380127.0.0.1:6380> get num"1"127.0.0.1:6380> get str"123"[root@fei redis]# ./bin/redis-cli -p 6381127.0.0.1:6381> get num"1"127.0.0.1:6381> get str"123"
设置主从复制通信密码
1主机设置密码,如果从服务器不输入密码,无法获取主服务的数据 vim redis.confrequirepass 123
2开启所有的服务器
3主服务器测试:(连接的时候需要密码)
127.0.0.1:6379> flushdb(error) NOAUTH Authentication required.127.0.0.1:6379> auth 123OK127.0.0.1:6379> flushdbOK
4从服务器测试
--主服务器设置数据127.0.0.1:6379> set num 1OK--从服务器没有获取到数据(因为从服务器配置文件没有设置主服务器的密码)[root@fei redis]# ./bin/redis-cli -p 6380127.0.0.1:6380> keys *(empty list or set)
5从服务配置主服务的密码
2个从服务器都要配置masterauth 123
6测试
--主服务器设置数据127.0.0.1:6379> set num 1OK--从服务有数据[root@fei redis]# ./bin/redis-cli -p 6380127.0.0.1:6380> keys *1) "num"