redis主从复制

 

1.使用目的:

使用主从目的,是为了缓解单台redis服务器压力,是redis服务器职能分散,从而相应客户端效率更高。

 

2.主从分工:

master服务器只要负责接受从客户端的增、删、改请求,而slave则负责客户端的读请求和数据持久化。(是否让slave负责读请求可根据实际情况决定)

 

3.主从复制工作原理:

无论是初次连接还是重新连接, 当建立一个从服务器时, 从服务器都将向主服务器发送一个 SYNC 命令。

 

接到 SYNC 命令的主服务器将开始执行 BGSAVE (fork一个子进程,将数据库快照保存到文件中), 并在保存操作执行期间, 将所有新执行的写入命令都保存到一个缓冲区里面。

 

当 BGSAVE 执行完毕后, 主服务器将执行保存操作所得的 .rdb 文件发送给从服务器, 从服务器接收这个 .rdb 文件, 并将文件中的数据载入到内存中。

 

之后主服务器会以 Redis 命令协议的格式, 将写命令缓冲区中积累的所有内容都发送给从服务器。

 

此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送 给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。

 

如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。

 

如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。

 

4.主从服务配置:

主服务:因为主服务不负责持久化, 需要关闭掉redis.conf 中的save 和 appendonly 设置。

 

从服务: 在redis.conf中配置 slaveof 127.0.0.1 6379

 

本人测试机设置:

启动脚本,从redis安装目录下,copy redis_init_script redis_6379,master不需要任何修改,slave只需要修改相应端口设置即可



 

配置文件



 

配置文件具体设置,master因为不提供持久化功能,需要关闭 save设置和appendonly设置即可,当然因为已经有启动脚本了,也应该设置成后台运行,下面是从节点需要修改的几处设置:

daemonize yes   #后台执行
pidfile /var/run/redis_6381.pid #服务启动后生成进程文件
port 6381  #服务端口号
loglevel debug  #日志级别
logfile /var/log/redis_6381.log #日志路径

save 900 1
save 300 10
save 60 10000  #snapshot 方式持久化策略

dir /var/redis/6381  #持久化文件存放路径

slaveof 127.0.0.1 6379 #master节点的IP和port

appendonly yes #aof持久化方式开启
appendfsync everysec  #aof持久化策略

 

redis server放置路径,放在usr/local/bin 下是因为 这个路径已经设置在PATH中,方便到处执行,而不用特意进到redis安装目录下运行




 redis持久化目录

 

 

5.启动与测试:

本机设置 6379为master,6380和6381为slave。

master启动



 

master启动时log



 可以看出,此时没有客户端连接server,也没有slave节点

 

使用客户端连接master server,并设置数据:



 可以看出,此时Replication的状态,为无slave连接的


查看master持久化目录下状态,依然是空目录,没有做过持久化:



 
 

然后启动6380:



 

slave启动后,master日志为:



 

 

slave 6380的日志为:



 

此时的持久化存放目录状态为:



 

可以看出,在slave向master发出SYNC时,master对当前内存做了快照并且存放在文件中,并且将文件传送给了slave,slave将文件内容读入了内存中。

 

再使用同样的方式启动 6381,会看到此时master 又做了一次BGWRITE操作,同样把数据同步到了6381,,看下此时的持久化目录状态:



 

可以看出,此时的master 只将内存快照文件传送给了6381 而没有传送给6380,那是否6380的文件内容就会比6381的少呢?不会,因为在6380启动后,做完第一次同步后,之后每次master的增删改操作都会同步到6380中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值