redis主从复制
2种原理图
这里写图片描述

主从复制通信过程
这里写图片描述

集群好处

主从备份,防止主机宕机
读写分离,分担master的任务

主从复制案例
1个主机7369端口,并行的2个从机7380,7381端口
配置前准备
2 3个redis.conf配置文件

[root@fei redis]# ls
back  bin  redis6380.conf  redis6381.conf  redis.conf

1配置从服务器6380
vim redis6380.conf

设置rdb
save 900 1
save 300 10
save 60 100
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump6380.rdb
dir /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快照的过程中,不要停止同步aof
no-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-cli
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> keys *
1) "num"
127.0.0.1:6379> set str 123
OK
127.0.0.1:6379> 

从服务检验

[root@fei redis]# ./bin/redis-cli -p 6380
127.0.0.1:6380> get num
"1"
127.0.0.1:6380> get str
"123"




[root@fei redis]# ./bin/redis-cli -p 6381
127.0.0.1:6381> get num
"1"
127.0.0.1:6381> get str
"123"

设置主从复制通信密码
1主机设置密码,如果从服务器不输入密码,无法获取主服务的数据
vim redis.conf


 requirepass 123

2开启所有的服务器

3主服务器测试:(连接的时候需要密码)

127.0.0.1:6379> flushdb
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> flushdb
OK

4从服务器测试

--主服务器设置数据
127.0.0.1:6379> set num 1
OK
--从服务器没有获取到数据(因为从服务器配置文件没有设置主服务器的密码)
[root@fei redis]# ./bin/redis-cli -p 6380
127.0.0.1:6380> keys *
(empty list or set)

5从服务配置主服务的密码
2个从服务器都要配置

masterauth 123

6测试

--主服务器设置数据
127.0.0.1:6379> set num 1
OK
--从服务有数据
[root@fei redis]# ./bin/redis-cli -p 6380
127.0.0.1:6380> keys *
1) "num"
posted on 2017-06-19 23:10  2637282556  阅读(112)  评论(0编辑  收藏  举报