博客
关于我
redis的主从复制详解
阅读量:775 次
发布时间:2019-03-24

本文共 927 字,大约阅读时间需要 3 分钟。

一.主从复制简介

互联网的“三高”架构指的是高并发、高性能和高可用性。高并发意味着同时处理大量用户访问,高性能则要求系统运行效率极高,而高可用性则意味着系统在面临故障时仍能持续运作。

Redis的高可用性问题

Redis作为一个高性能的键值存储系统,存在以下问题:

  • 机器故障

    • 现象:硬盘故障或系统崩溃导致数据丢失。
    • 本质:可能对业务造成灾难性影响。
    • 结论:单机 Redis的风险较高,通常会放弃使用。
  • 容量瓶颈

    • 现象:内存不足导致性能下降,需要不断升级内存有限。
    • 本质:硬件资源有限,难以支持大规模业务发展。
    • 结论:需采取分布式策略,使用多台 Redis 服务器。
  • 为了高可用,建议使用多个 Redis 服务器(主从复制),数据互相复制,确保高可用性和数据冗余。

    二. 主从复制工作流程

    主从复制分为三个阶段:

  • 数据同步阶段

    主节点(Master)将数据实时复制到从节点(Slave),确保数据一致性。

  • 命令传输阶段

    主节点执行命令后,将为从节点传输该命令的结果,保持两节点完全一致。

  • 三. 主从复制案例

    方式1:命令配置方式

    手动在客户端发送命令:

    # master配置slaveof 

    方式2:启动参数方式

    # Slave启动时指定主节点redis-server -slaveof 

    方式3:配置文件方式

    #_slave配置文件中添加slaveof 

    四. 降临问题解答

    • 断开连接后不会丢失数据,仅停止接受-master的数据同步。
    • 权限设置:确保主从节点有正确的密码,防止未授权访问。

    五. 主从复制意义

  • 提升读写能力:分离读写负载,优化性能。
  • 负载均衡:多个从节点分担读取压力。
  • 故障恢复:主节点故障时,从节点接手服务。
  • 数据冗余:提供持久化备份,确保数据安全。
  • 高可用基础:支持哨兵模式和集群方案。
  • 六. 工作流程

  • 连接阶段:Slave与Master建立连接。
  • 同步阶段:Master复制数据到Slave。
  • 命令传播:确保两节点完全一致。
  • 七. 常见问题

    • 权限问题、数据不一致、连接持续等需注意。

    通过以上方案,优化后的系统可以实现高可用性和稳定的性能,符合互联网“三高”架构的需求。

    转载地址:http://jsakk.baihongyu.com/

    你可能感兴趣的文章
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>
    multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
    查看>>
    MySQL DBA 数据库优化策略
    查看>>