zoukankan      html  css  js  c++  java
  • Redis——主从复制

    是什么

    主节点的数据同步到从节点上,主节点负责写,从节点负责读。

    能干嘛

    • 读写分离
    • 容灾恢复

    怎么玩

    1.配从(库)不配主(库)

    2.从库配置:slaveof  主库IP  主库端口 (每次与master断开之后,都需要重新连接,除非配置进redis.conf文件)

    3.修改配置文件细节操作

    • 拷贝多个redis.conf文件
    • 开启 daemonize  yes
    • Pid文件名字 (如 pidfile  "/var/run/redis_6380.pid")
    • 指定端口 (如 port  6380)
    • Log 文件名字 (如 logfile  "6380.log")
    • Dump.rdb名字 (如 dbfilename  "dump6380.rdb")

    常用方法

    • 一主二仆 (此时并没有将slaveof写进配置文件)

    即一个Master两个Slave,现设定6379的为master,6380、6381为slave。

     master所写的内容slave都能读取到(包括6380和6381成为slave之前6379所写的内容)

    如果slave对master设置的键值进行修改会发生什么?

    这说明slave只负责读取。

    如果发生一些故障导致master挂了,那slave如何表现呢?是翻身做master还是继续当slave?

     

    很明显,此时角色还是为slave。

    如果master又回来了,那slave是继续跟着master干,还是不再听指挥了呢?

     

    在当前配置下,slave还是会继续跟着master。

    如果某个slave挂了(这里假设端口为6380的挂了),当这个slave又启动的时候会发生什么?是继续跟着原来的master还是自己当master?

    在这种情况下slave会自己成为master。

    •  薪火相传

    上一个slave可以是下一个slave的master,slave同样可以接收其他slave的连接和同步请求,那么改slave作为链中下一个的master,可以有效减轻master的写压力。

    让6379成为master,6380成为6379的slave,6381成为6380的slave(虽然在逻辑上6380既为master又为slave,但在计算机中显示仍为slave)。

    • 反客为主

    使用slaveof  no  one命令:使当前库停止与其他库的同步,转成主库。


    复制原理

    slave启动成功连接到master后会发送一个sync命令,master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。

    全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

    增量复制:master继续将新的所有收集到的修改命令依次传给slave,完成同步。

    但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。

    复制的缺点

    • 复制延时

    由于所有的写操作都是先在master上操作,然后同步更新到slave上,所以master同步到slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,slave机器数量的增加也会使这个问题更加严重。

    哨兵模式(sentinel)

     是什么

    反客为主的自动版,能够后台监控主机是否出现故障,如果故障了根据投票数自动将从库转换为主库。

    使用步骤

    • 调整结构,6379带着6380、6381
    • 自定义的目录(我的为 /myredis)下新建 sentinel.conf 文件,名字绝不能错
    • 配置哨兵,填写内容(sentinel  monitor  被监控数据库名字(自己起名字)127.0.0.1   6379   1   【此处的1表示主机挂掉后slave投票看让谁接替成为主机,得票数多少后成为主机】)
    • 启动哨兵(redis-sentinel  /myredis/sentinel.conf

    让6379挂掉,则会从6380和6381中投票选出新的master。

     

    问题:如果此时6379回来了,那结果又当如何呢?是否会造成双master冲突?

  • 相关阅读:
    2015531 网络攻防 Exp1 PC平台逆向破解(5)M
    2017-2018-1 20155331 嵌入式C语言
    20155330 《网络对抗》 Exp9 web安全基础实践
    20155330 《网络对抗》 Exp8 Web基础
    20155330 《网络对抗》 Exp7 网络欺诈防范
    20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
    20155330 《网络对抗》 Exp5 MSF基础应用
    20155330 《网络攻防》 Exp4 恶意代码分析
    20155330 《网络攻防》 Exp3 免杀原理与实践
    20155330 《网络对抗》 Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/rabbitli/p/10993502.html
Copyright © 2011-2022 走看看