• Redis的主从复制


    本次测试环境使用一台ip为192.168.2.11的虚拟机。拷贝redis.conf改名为redis-slave.conf作为redis的从服务器启动时的配置文件。

    1.修改从节点配置文件

    1) vim redis-slave.conf
    2) 修改端口为6380 #唯一即可
    2) 修改 slaveof 的值,如:slaveof 192.168.2.11 6379
    

    2.按照主从顺序启动redis实例

    cd /usr/redis    #根据自己情况而定
    ./bin/redis-server ./redis.conf                #启动redis主服务器
    ./bin/redis-server ./redis-slave.conf       #启动redis从服务器
    


    3.测试

    1) 在主从数据库端键入 info replication 可以查看信息
    2) 在主节点设置新的key: set username admin
    3) 经测试,从节点只能读取,不能写入
    


    4.主从复制原理(磁盘复制)

    当一个从数据库启动时,会向主数据库发送SYNC命令,主数据库收到命令后会开始在后台保存快照(即RDB持久化过程),并将保存快照期间接收到的命令缓存起来。
    当快照完成后,Redis会将快照文件和缓存的命令发给从数据库,从数据库收到数据后,会载入快照文件并执行缓存的命令。以上过程称为复制初始化。
    复制初始化之结束后,主数据库每收到写命令时就会将命令同步给从数据库,从而保证主从数据库数据一致,这一过程称为复制同步阶段。
    
    需要注意:
        复制同步阶段贯穿整个主从同步过程的始终,直到主从关系终止为止。在复制过程中,即使关闭了RDB方式的持久化(删除所有save参数),依旧会执行快照操作。
    

    5.无磁盘复制

    Redis在与从数据库进行复制初始化时不会将快照存储到磁盘,而是直接通过网络发送给从数据库,避免了IO性能差的问题。
    需要修改redis.conf文件:
    repl-diskless-sync yes
    

    6.宕机问题

    1.从数据库宕机
    答:再次启动从数据库即可。
    说明:当主从数据库之间的连接断开后,Redis2.8之前的版本会重新进行复制初始化过程,这样就使得主从数据库断开连接后数据恢复的过程的效率很低下。
    Redis2.8版本的一个重要改进就是断线支持有条件的增量数据传输,当从数据库再次连接到主数据库时,主数据库只需要将断线期间执行的命令发给从数据库即可,大大提高了Redis主从复制的实用性。
    
    2.主数据库宕机
    1)在从库中执行,键入slaveof no one命令。从库升级为主库
    2)重新启动主库,键入slaveof命令,降为从库
  • 相关阅读:
    (剑指Offer)面试题18:树的子结构
    (剑指Offer)面试题17:合并两个排序的链表
    (剑指Offer)面试题16:反转链表
    程序员水平分级 你属于哪一类?
    Hacker
    十分钟让你看懂中国经济形势,10分钟,坚持看完,必有所获~(转载)
    人口问题,怎样的生育率才能保持正常的世代更替?
    理科和文科的区别?
    柴晓霞:做销售要学会画蓝图 (转载)
    工作,为钱还是为理想
  • 原文地址:https://www.cnblogs.com/moonlightL/p/7364680.html
Copyright © 2020-2023  润新知