Redis笔记之主从复制

Redis主从复制

    • 1. 概念
    • 2. 作用
    • 3. 为什么使用集群
    • 4. 环境配置
    • 5. 一主二从配置
    • 6. 使用规则

1. 概念


主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower),数据的复制是单向的!只能由主节点复制到从节点(主节点以为主,从节点以为主)。

Redis笔记之主从复制_第1张图片

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

2. 作用


  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式。
  2. 故障恢复:当主节点故障时,从节点可以暂时替代主节点提供服务,是一种服务冗余的方式。
  3. 负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的压力;尤其是在读多写少的场景下,通过多个从节点分担负载,提高并发量。
  4. 高可用基石:主从复制还是哨兵和集群能够实施的基础。

3. 为什么使用集群


  1. 单台服务器难以负载大量的请求
  2. 单台服务器故障率高,系统崩坏概率大
  3. 单台服务器内存容量有限

4. 环境配置


redis.conf 中的replication模块

查看当前库的信息:info replication

127.0.0.1:6379> info replication # 查看当前库的信息
# Replication
role:master # 角色 master
connected_slaves:0 # 从机 0 个
master_replid:9a78b49fde23e317cda2a52eccbaa575e28dcab5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

既然需要启动多个服务,就需要多个配置文件。
Redis笔记之主从复制_第2张图片

每个配置文件对应修改一下信息:

  • 端口号
  • pid文件名
  • 日志文件名
  • rdb文件名
    在这里插入图片描述

Redis笔记之主从复制_第3张图片
在这里插入图片描述

启动单机多服务集群
在这里插入图片描述

5. 一主二从配置


默认情况下,每台Redis服务器都是主节点;我们一般情况下只用配置从机就好了
一主(79)二从(80,81)
Redis笔记之主从复制_第4张图片

使用slaveof host port命令就可以为从机配置主机了

  • 6380
    Redis笔记之主从复制_第5张图片
  • 6381
    Redis笔记之主从复制_第6张图片
  • 主机6379
    Redis笔记之主从复制_第7张图片

这里是使用命令搭建,是暂时的,真实开发中应该在从机的配置文件中进行配置,这样的话是永久的

Redis笔记之主从复制_第8张图片

6. 使用规则


  1. 从机只能读,不能写,主机可读可写,但多用于写。
    # 从机6381 只能读不能写
    127.0.0.1:6381> set name zhangsan
    (error) READONLY You can't write against a read only replica.
    127.0.0.1:6381> get name
    "zhangsan"
    # 主机6379 可以读写
    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> get name
    "zhangsan"
    
  2. 当主机断电宕机后,默认情况下从机的角色不会发生变化,集群中只是失去了写操作, 当主机恢复以后,又会连接上从机恢复原状。
  3. 当从机断电宕机后,若不是使用配置文件配置的从机,再次启动后作为主机是无法获取之前主机的数据的,若此时重新配置成为从机,又可以获取到主机的所有数据。这里就要提到一个同步原理。
  4. 第二条中提到,默认情况下,主机故障后,不会出现新的主机,有两种方式可以产生新的主机:
    • 从机手动执行slaveof no one ,这样执行以后从机会独立出来成为一个主机
    • 使用哨兵模式(自动选举)

如果主机断开了连接,可以使用slaveof no one 让自己变成主机!其他的节点就可以手动连接到最新的主节点(手动)!如果这时候主机恢复了,那么就重新连接!

你可能感兴趣的:(Redis,redis,数据库,服务器)