首页 > 代码库 > Redis(三)-- 主从同步

Redis(三)-- 主从同步

一、主从同步的工作原理

  redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将 数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。master同步数据时是非阻塞式的,可以接收用户的读写请求。然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询。

  可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。

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

  技术分享

  • slave连接到master
  • slave发送SYNC命令
  • master服务器备份数据库到.rdb文件
  • master服务器把.rdb文件传输给slave服务器
  • slave服务器把.rdb文件数据导入到数据库
   上面的这5步是同步的第一阶段,接下来在master服务器上调用每个命令都在使用replicationFeedSlaves()来同步到slave服务器。

二、配置主从同步

  1.复制一份Redis 作为slave,修改slave的配置文件:端口号、进程文件和日志文件的位置。

  2.修改slave的配置文件:

    slaveof <masterip> <masterport>    指定master的ip和port

    masterauth <master-password>       master有验证的情况下

    slave-read-only yes                设置slave为只读模式

  

  

Redis(三)-- 主从同步