redis主从复制

概述

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

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

目的:

  1. 故障恢复:虽然redis持久化可以避免数据的丢失,但是如果redis服务器的硬盘损坏,数据就有可能丢失。redis主从复制机制就可以避免这种单薄故障。

  2. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高redis服务器的并发量。

  4. 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础。

配置

在从redisredis.conf添加

slaveof 主数据库地址 主数据库端口

# slaveof  
slaveof 127.0.0.1 6379

主数据库不需要任何配置

重启从redis即可。

命令设置主从复制:slaveof 192.168.47.146 6379

redis-cli -h 192.168.47.146 -p 6380
192.168.47.146:6380> slaveof 192.168.47.146 6379
OK

实战

1. 一台机器上的不同redis实例

主节点监听6379端口,从节点监听6380端口

步骤:

  1. 复制一份redis.conf到某个目录并做相应的修改


    redis主从复制_第1张图片
    redis.conf
  2. cd到该目录执行redis-server redis.conf启动redis服务

2.两台不同的机器

需要外网访问redis,参考:https://www.jianshu.com/p/bb555f153cf1
A机器(主redis)
修改redis.conf,注释bind,修改protected-modeno

redis主从复制_第2张图片
屏幕快照 2019-03-13 下午12.39.13.png

B机器(从redis)
修改redis.conf
添加slaveof 主数据库地址 主数据库端口

# slaveof  
slaveof 192.168.47.146 6379

断开复制

slaveof no one

$ redis-cli
127.0.0.1:6379> slaveof no one
OK

断开复制,从节点又变回为主节点。

主从在线切换

查看是否有主从关系:config get slaveof

$ redis-cli -h 192.168.47.146 -p 6380
192.168.47.146:6380> config get slaveof
1) "slaveof"
2) "192.168.47.146 6379"
192.168.47.146:6380>

设置为主服务: slaveof no one

192.168.47.146:6380> slaveof no one
OK
192.168.47.146:6380>

一个主redis可以挂载多个从redis

redis主从复制_第3张图片
redis

你可能感兴趣的:(redis主从复制)