zoukankan      html  css  js  c++  java
  • 【Redis】搭建主从复制

    纸上得来终觉浅,绝知此事要躬行。

    主从复制

    主从复制即将master中的数据即时、有效的复制到slave中。一个master可以拥有多个slave,一个slave只对应一个master

    master:

    • 写数据
    • 执行写操作时,将出现变化的数据自动同步到slave
    • 读数据(可忽略)

    slave:

    • 读数据
    • 写数据(禁止)

    作用

    • 读写分离:master写、 slave读,提高服务器的读写负载能力
    • 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数
      量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量
    • 故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复
    • 数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式
    • 高可用:基于主从复制,构建哨兵模式与集群,实现Redis的高可用方案

    连接与断开

    连接

    1. 客户端发送命令:
    slaveof <masterip> <masterport>
    
    1. 启动服务器参数:
    redis-server -slaveof <masterip> <masterport>
    
    1. 服务器配置:
    slaveof <masterip> <masterport>
    

    断开

    • 客户端发送命令
    slaveof no one
    

    slave断开连接后,不会删除已有数据,只是不再接受master发送的数据

    授权访问

    Master设置

    • master客户端发送命令设置密码
    requirepass <password>
    
    • master配置文件设置密码
    config set requirepass <password>
    config get requirepass
    

    Slave设置

    • slave客户端发送命令设置密码
    auth <password>
    
    • slave配置文件设置密码
    masterauth <password>
    
    • slave启动服务器设置密码
    redis-server –a <password>
    

    主从复制案例

    server-6379 server-6380 server-6381
    port 6379
    pidfile /var/run/redis/redis-server.pid
    logfile /var/log/redis/redis/redis-server.log
    dbfilename dump.rdb
    port 6380
    pidfile /var/run/redis/redis-server-6380.pid
    logfile /var/log/redis/redis/redis-server-6380.log
    dbfilename dump6380.rdb
    port 6381
    pidfile /var/run/redis/redis-server-6381.pid
    logfile /var/log/redis/redis/redis-server-6381.log
    dbfilename dump6380.rdb

    一主二仆

    一主多从

    server-6379(主机) server-6380 server-6381
    查看配置信息
    查看配置信息
    查看配置信息
    127.0.0.1:6379> set name ydy
    OK
    127.0.0.1:6379> set age 20
    OK
    127.0.0.1:6379> keys *
    1) "name"
    2) "age"
    127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
    OK
    127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
    OK
    127.0.0.1:6379> set gender male
    OK
    127.0.0.1:6380> get gender
    "male"
    127.0.0.1:6381> get gender
    "male"
    127.0.0.1:6380> get name
    "male"
    127.0.0.1:6381> get name
    "male"

    情况一:从机设置

    server-6379 server-6380 server-6381
    127.0.0.1:6380> set class 1
    (error) READONLY You can't write against a read only replica.
    127.0.0.1:6381> set class 1
    (error) READONLY You can't write against a read only replica.

    结论:主从复制中,从机不能写数据,只能提供读

    情况二: 主机死亡

    server-6379 server-6380 server-6381
    可能以下命令不起作用,可以尝试service redis stop
    127.0.0.1:6380> set k1 v1
    (error) READONLY You can't write against a read only replica.
    127.0.0.1:6381> set k2 v2
    (error) READONLY You can't write against a read only replica.

    结论:主机死亡,从机处于等待状态,同样不能写数据,也不能自我上位成Master

    情况三: 主机起死回生

    server-6379 server-6380 server-6381
    主机复活

    结论:主机起死回生,主从之间建立连接,恢复正常

    情况四: 从机死亡

    server-6379 server-6380 server-6381
    重新连接
    127.0.0.1:6379> get money
    "1000"
    127.0.0.1:6380> keys *
    (empty list or set)
    127.0.0.1:6381> get money
    "1000"
    127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
    OK
    127.0.0.1:6380> get money
    "1000"

    结论:从机死亡,重新恢复需要手动建立与Master的连接

    薪火相传

    一个Master连接多个Slave,而每个Slave又可以成为别的Slave的Master,形成链式主从。需要注意处于中间位置的服务器依旧是Slave,只能读数据,不能写数据

    薪火相传

    server-6379 server-6380 server-6381
    127.0.0.1:6379> set kkk vvv
    OK
    127.0.0.1:6379> get kkk
    "vvv"
    127.0.0.1:6380> get kkk
    "vvv"
    127.0.0.1:6381> get kkk
    "vvv"

    反客为主

    一个Master连接多个Slave,当Master宕机或异常关机,Slave可以通过slave no one指令断开与原来Master的连接,自己成为Master,让其他的Slave连接我。从而形成新的主从关系,这个过程是手动的,也可以通过配置文件设置slaveof <masterip> <masterport>

    反客为主

    server-6379 server-6380 server-6381
    127.0.0.1:6380> set k22 v22
    OK
    127.0.0.1:6381> get k22
    "v22"
  • 相关阅读:
    My Vim
    POJ 3292 Semi-prime H-numbers
    洛谷P3954 成绩【民间数据】
    数据结构—栈/队列
    说服式设计(persuasive design)的行为模型
    发送邮件给某人:mailto标签
    如何识别和利用用户情绪
    HDU Good Numbers (热身赛2)
    atlas z 轴
    什么叫“默认邮件客户端没有正确安装”?
  • 原文地址:https://www.cnblogs.com/ydongy/p/13229883.html
Copyright © 2011-2022 走看看