Redis主从复制基础知识

来源:互联网 发布:淘宝男装店铺简介范文 编辑:程序博客网 时间:2024/06/06 00:25

1、主从复制机制
(1)主节点会将客户端的操作指令发送给从节点执行
(2)主从节点由于未知原因断开后,从节点会主动尝试重新连接,并进行【增量同步】,即只提取失联期间错过的命令
(3)如果【增量同步】失败,则会执行【全量重新同步】(主节点生成一个包含全部数据的快照,发送给从节点

2、为了保证低延迟和高性能,Redis采用异步复制。如果客户端想要执行同步复制,可以显式执行WAIT命令。
(1)Master可以有多个Slaves,不同Slave之间可以互相连接
(2)Master在复制过程中是非阻塞的,即Master与Slave进行【增量】或【全量】复制时,同时可以处理客户端的读或写指令
(3)Slave复制过程中大体上也是非阻塞的,当Slave进行新的一次复制时,可以配置让其使用老的数据响应客户端。但是在新数据复制完毕,删除老数据并重新加载新数据的间隙,Slave是阻塞的(非常大的数据集阻塞时间才几秒钟)。在Redis 4.0中会将删除老数据操作放在单独线程中执行,以减少阻塞时间。
(4)由于Master既负责读也负责写,压力较大,所以一般不在Master上做持久化操作。可以将Master持久化配置禁用,然后利用Slave做不间断持久化(Save)或AOF。采用此种策略要小心:重启Master要慎之又慎,因为重启后Master为空,如果同步给Slave,后者也为空,造成数据丢失。【在哨兵(Sentinel)模式中,如果Master重启足够迅速,快到哨兵还没检测到Master挂掉,仍然执行Master-Slave同步,就危险了】

3、主从复制内部原理
(1)主节点数据集由【Replication ID,offset】唯一标识,offset用于标识主节点发送给从节点的进度
(2)当从节点连接主节点时,使用PSYNC命令向主节点发送持有的老的【Replication ID,offset】,如果主节点可以识别,则只会发送增量部分。如果主节点不能识别,则会发生【全量重新同步】
全量同步如何工作?:主节点开启一个后台保存进程(BGSAVE),生成一个RDB文件,同时将这段时间新增的客户端命令缓存起来。然后把RDB文件发送给从节点加载。最后主节点将剩余缓存的命令发送给从节点。
Disk-backed replication:【全量同步】是主节点先把RDB文件存储在磁盘上,然后由主节点进程慢慢把RDB文件传送给从节点
Diskless replication:【全量同步】是主节点直接在后台线程中生产RDB文件,并在后台线程中将文件写入从节点Sockets中,【不经过磁盘】。此种情况下,主节点通常会delay(repl-diskless-sync-delay),以便更多从节点同时到达,从而并行传输。适用于磁盘传输慢和网络速度较快场合

4、运行时参数设置CONFIG SET
功能:运行时设置Redis节点参数,不用重启,在下个命令执行时生效
语法:config set XXX XXX
使用命令行只是临时更改,重启后丢失修改
在配置文件中设置是永久修改

原创粉丝点击