Redis主从复制模式详解

Redis主从复制

1、主从简介

      配置多台 Redis 服务器,以主机和备机的身份分开。主机数据更新后,根据配置和策略,自动同步到备机的 master/salver 机制,Master 以写为主,Slave 以读为主,二者之间自动同步数据。

Redis主从复制目的:读写分离提高 Redis 性能;避免单点故障,容灾快速恢复。

2、主从原理

     每次从机联通后,都会给主机发送 sync 指令,主机立刻进行存盘操作,发送 RDB 文件给从机,从机收到 RDB 文件后,进行全盘加载。之后每次主机的写操作,都会立刻发送给从机,从机执行相同的命令(第一次是全量加载数据,之后是增量;如果断开后重新连接则第一次全量,之后是增量)。

3、主从准备

      除非是不同的主机配置不同的 Redis 服务,否则在一台机器上面跑多个 Redis 服务,需要配置多个 Redis 配置文件。

  • 准备多个 Redis 配置文件,每个配置文件,需要配置以下属性

daemonize yes:服务在后台运行
port:端口号
pidfile:pid 保存文件
logfile:日志文件(如果没有指定的话,就不需要)
dump.rdb:RDB 备份文件的名称
appendonly 关掉,或者是更改 appendonly 文件的名称。aof(也可以不用配置)
  • 根据多个配置文件,启动多个 Redis 服务

//主机执行
[root@centos102 myredis]# redis-server 6379.conf    
[root@centos102 myredis]# redis-cli -p 6379

//从机执行
[root@centos102 myredis]# redis-server 6380.conf    
[root@centos102 myredis]# redis-cli -p 6380


//从机执行
[root@centos102 myredis]# redis-server 6381.conf    
[root@centos102 myredis]# redis-cli -p 6381

 

4. 主从建立

  4.1 临时建立(临时建立每次从机断开后,需要重新执行命令进行连接;如果是永久建立,则把命令写进redis.conf配置文件中;永久建立参考下面的4.2)

        原则:配从不配主
        配置:在从服务器上执行 SLAVEOF IP:PORT命令(这里的 IP和 PORT都是指的master的IP 和 PORT)
        查看:执行 info replication 命令

127.0.0.1:6381> SLAVEOF 127.0.0.1 6379   //配置主从结构,在从机执行,这里的IP和port都是master的
OK
127.0.0.1:6381> info replication         //从机
# Replication
role:slave                               //从机的角色
master_host:127.0.0.1                    //主机IP
master_port:6379                         //主机PORT
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:739
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:8f6be09ce99db803a7969d51327ab912feb90520
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:739
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:446
repl_backlog_histlen:294
127.0.0.1:6381> 

注意:从机只会读取,不能写入

   4.2 永久建立

         在从机的配置文件中,编写 slaveof 属性配置!
         # slaveof 127.0.0.1 6379

   4.3 恢复身份

        执行命令 slaveof no one 恢复自由身!【反客为主】(使当前数据库停止与其他数据库的同步,转成主数据库)

127.0.0.1:6381> SLAVEOF no one                    //执行命令恢复自由之身
OK
127.0.0.1:6381> info replication
# Replication
role:master                                       //状态
connected_slaves:0
master_replid:8ec57360f8ab64d59a2a786be1a14bd81f5530dc
master_replid2:8f6be09ce99db803a7969d51327ab912feb90520
master_repl_offset:2069
second_repl_offset:2070
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1720
repl_backlog_histlen:350
127.0.0.1:6381> 

 

5. 主从常见问题

   ①从机是从头开始复制主机的信息,还是只复制切入以后的信息?
   答:从头开始复制,即完全复制。实际上是读取主机的 rdb

   ②从机是否可以写?
   答:不能


  ③主机 shutdown 后,从机是上位还是原地待命?
  答:原地待命

  ④主机又回来了后,主机新增记录,从机还能否顺利复制?
  答:可以

 ⑤从机宕机后,重启,宕机期间主机的新增记录,丛机是否会顺利复制?
  答:可以(如果是永久建立连接关系,则可以顺利复制;如果是临时建立连接关系,则需要建立与主机的连接关系,否则将无法复制)

 ⑥其中一台从机 down 后重启,能否重认旧主?  
 答:不一定,看配置文件中是否配置了 slaveof  
 # slaveof 127.0.0.1 6379

 ⑦如果两台从机都从主机同步数据,此时主机的 IO 压力会增大,如何解决?  
 答:按照主---从()---从模式配置![薪火相传](此处如有不懂可私信我
 # slaveof 127.0.0.1 6380(slaveof 新主库IP 新主库端口)

 

6. 哨兵模式

   6.1 简介

   反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

  作用:

          ①Master 状态检测
          ②如果 Master 异常,则会进行 Master-Slave 切换,将其中一个 Slave 作为 Master,将之前的 Master 作为 Slave

    6.2 配置

         自定义的 /usr/local/bin(目录可以自定义) 目录下新建 sentinel.conf 文件(sentinel.conf 文件名字绝不能错)
         # vim sentinel.conf
         哨兵模式需要配置哨兵的配置文件!(文件中添加)

sentinel monitor mymaster 127.0.0.1 6379 1    //mymaster(这里的名字可以自定义) 
//上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

         启动哨兵:./redis-sentinel sentinel.conf

        说明:如果想自己指定主节点,则可以使用反客为主:127.0.0.1:6381> SLAVEOF no one

    6.3 主机宕机后

         主机宕机后通过投票选举方式从slave中产生新的master继续工作,如果之前的master重新回来,则会成为slave。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值