一、主从同步的工作原理

  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.新建文件夹master-slave,在master-slave中新建master和slave,将redis.conf到master和slave文件夹中。

  2.修改master和slave的配置文件:端口号、进程文件和日志文件的位置。

  3.修改slave的配置文件:

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

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

    slave-read-only yes                设置slave为只读模式,默认的

  4.分别进入到master和slave文件夹,启动 redis服务:redis-server redis.conf

  5.客户端连接

    1) 连接master:redis-cli -h 192.168.99.207 -p 6379

        查看master的信息,输入 info,看到角色是master

        

    2) 连接slave:redis-cli -h 192.168.99.207 -p 6380

        查看slave的信息,输入info,看到的角色是slave,且

      • master_link_status:up
      • master_repl_offset 和 slave_repl_offset相等
      • master_last_io_seconds_ago 在 10 秒内,则说明配置成功

      

  6.测试

   1) 在master中添加数据:set name xbq

     2) 在slave中查询数据:get name,结果和在master中插入的数据一样。

   3) 测试下 在slave中添加数据:set address shenzheng,发现报错,(error) READONLY You can't write against a read only slave.

     这是因为 我们设置了 slave为只读,不可以操作写。

三、主从同步的应用

  1.用于对 数据的热备份

  2.用于读写分离

  

Redis(三)-- 主从同步的更多相关文章

  1. Redis的主从同步复制

    先来看一下Redis的主从同步复制的原理: 在Slave启动并连接到Master之后,它将主动发送一条SYNC命令.此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台 ...

  2. Redis 的主从同步(复制)

    Redis 的主从同步(复制) Redis 的主从同步(复制) 什么是主从同步(复制) 假设有两个 redis 实例 ⇒ A 和 B B 实例的内容与 A 实例的内容保持同步 那么称 A 实例是主数据 ...

  3. redis的主从同步

    一.redis的主从操作流程 1. 准备三个redis配置文件 #进入redis的配置文件夹,准备好这几个文件,6379不用管,默认的,和这次操作无关 [root@qishi ~]# cd /etc/ ...

  4. Redis的主从同步手动执行故障切换

    1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制. # a6371.conf port 6371 daemonize yes pidfile /data/ ...

  5. redis 安装 主从同步 哨兵模式

    一.redis 的安装1.先将安装包放到linux的一个文件夹下面 2.解压压缩包如图所示 3.解压后进入解压文件 4.安装: make 出现it.s a good idea to run 'make ...

  6. redis之主从同步

    很多企业都没有使用到 Redis 的集群,但是至少都做了主从.有了主从,当 master 挂掉的时候,运维让从库过来接管,服务就可以继续,否则 master 需要经过数据恢复和重启的过程,这就可能会拖 ...

  7. 【Redis】主从同步

    Redis提供了主从复制功能,主要是为了保证服务的高可用性.在redis.conf配置文件中通过设置,可以开启主从复制功能.或者在客户端中使用slaveof 命令开启该功能. slaveof < ...

  8. Redis——主从同步原理

    刚接触到Redis,首先对Redis有一个初步的了解. 开源,免费,遵守BSD协议,key-value数据库. 可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用. 多种key-value类型 ...

  9. Redis主从同步、哨兵、集群

    什么是主从同步(复制) 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点 ...

  10. Redis系列之(二):Redis主从同步,读写分离

    1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...

随机推荐

  1. Python socket聊天室程序

    http://blog.csdn.net/calling_wisdom/article/details/42524745 今天用python的socket模块实现了一个聊天室的程序 虽然功能比较简单, ...

  2. addEventListener()绑定事件的对象方法。

    addEventListener()绑定事件的对象方法.addEventListener()含有三个参数,一个是事件名称,另一个是事件执行的函数,最后一个是事件捕获,, obj.addEventLis ...

  3. C++笔记 4

    1.类和对象   类就是对对象的描述,主要从属性和行为两个方面描述.   对于属性一般作成private , 行为作为public   函数 (1)构造函数,初始化所有的成员变量,系统自动调用,可以重 ...

  4. vim自动跳转到引用的函数

        安装:  yum install ctags 在你代码的根目录下执行:比如/data/www/test/trunkctags -R * 打开文件只能在根目录下打开就可以,比如 vim appl ...

  5. 3D跑马灯效果

    睡了13个小时,发烧终于退了,持续2周的感冒看起来终于好了点,这一周一直在看perspective的一些资料,写一个3D跑马灯的效果. 个人感觉主要就是理解视角的概念,也就是perspective和p ...

  6. invalid conversion from 'void* (*)()' to 'void* (*)(void*)'

    void *thread1() ], NULL, thread1, NULL)) != ) 提示:invalid conversion from 'void* (*)()' to 'void* (*) ...

  7. rp2833 网卡以及串口与接插件位置关系

    P13     eth0  (电口--兼容光口,如果使用光口,请将去掉U31以及P13) p12     eth1 P9     /dev/ttyS3 调试口 P10-1  /dev/ttyS2  r ...

  8. yaffs2文件镜像制作工具yaffs2image

    1.  不同nand容量,工具不一样. 首先使用的是mkyaffs2image,编译生成根文件系统的镜像之后,下载到板子上,启动的时候报错,错误代码这里没有上传.问题出在工具使用的不正确,查看工具目录 ...

  9. C++实现八皇后问题

    C++实现八皇后问题 #include <iostream> using std::cout; using std::endl; #include <iomanip> usin ...

  10. 缓存之 ACache

    1.android缓存的介绍 Android开发本质上就是手机和互联网中的webserver之间进行通信,就必定须要从服务端获取数据.而重复通过网络获取数据是比較耗时的.特别是訪问比較多的时候.会极大 ...