Redis主从复制与一致性

Redis主从复制与一致性,第1张

数据的同步过程一般都涉及到全量数据的迁移以及后续增量数据的同步。

在主Master接收到SYNC命令之后,它会执行bgsave在后台生成一个RDB文件,并且使用一个缓冲区记录从现在开始执行所有写命令。当bgsave生成的RDB文件完成了之后,它就发送给从服务器去进行载入。在更新状态完成之后,Master再将记录在缓冲区里面的新命令发送给从服务器,这样从服务器进行执行,主从服务器就保持了一致状态。
从服务器到主服务器的复制可以分为两种情况:

为了解决SYNC在处理断线重复制时候的低效问题,Redis从28版本之后开始使用PSYNC命 令,它支持完整重同步和部分重同步。 完整重同步和SYNC一样,部分重同步就是在处理断 线重新连接之后,主节点只向从节点发送链接断开期间的写命令,它的实现基于以下三部分:

缺点:

注:上述所有场景的前提是数据依然保存在backlog中,否则还是会进行完全重同步。

如果slave可以收到每条传播指令,并执行成功,便可以保持与master的数据一致状态。但是master并不等待slave节点的返回,master与slave是通过网络通信,由于网络抖动等因 素,命令传播过程不保证slave真正接收到,那如何在传播阶段确保主从数据一致呢
在命令传播阶段,每隔一秒slave节点向master节点发送一次心跳信息,命令格式为 REPLCONF ACK <offset>。其中offset指从节点保存的复制偏移量。REPLCONF ACK命令的作用包括:

在全量复制阶段,主节点会将执行的写命令放到复制缓冲区中,该缓冲区存放的数据包括了以下几个时间段内主节点执行的写命令:bgsave生成RDB文件、RDB文件由主节点发往从 节点、从节点清空老数据并载入RDB文件中的数据。当主节点数据量较大,或者主从节点之间网络延迟较大时,可能导致该缓冲区的大小超过了限制,此时主节点会断开与从节点之间的连接;这种情况可能引起全量复制→复制缓冲区溢出导致连接中断→重连→全量复制→复制缓冲区溢出导致连接中断的循环。
复制缓冲区的大小由client-output-buffer-limit slave{hard limit}{soft limit}{soft seconds}配 置,默认值为client-output-buffer-limit slave 256MB 64MB 60,其含义是:如果buffer大于 256MB,或者连续60s大于64MB,则主节点会断开与该从节点的连接。该参数是可以通过 config set命令动态配置的(即不重启Redis也可以生效)。

Redis为复制积压缓冲区设置的默认大小为1MB,如果主服务器需要执行大量写命令,又或者主从服务器断线后重连接所需的时间比较⻓,那么这个大小也许并不合适。如果复制积压 缓冲区的大小设置得不恰当,那么PSYNC命令的复制重同步模式就不能正常发挥作用,正确估算和设置复制积压缓冲区的大小非常重要。
复制积压缓冲区的最小大小可以根据公式secondwrite_size_per_second 来估算:

mysql主从复制三种模式:
1、异步复制:主服务器将执行的事务发送到从服务器,不等待从服务器的响应,主服务器只是将事务发送出去;
2、半同步复制:主服务器会等待从服务器的响应,当主服务器收到从服务器的响应后,才继续执行下一个事务;
3、同步复制:主服务器会等待从服务器的响应,主服务器将事务发送到从服务器后,必须等待从服务器的响应,从服务器确认收到事务后,主服务器才能继续执行下一个事务。

拓展:MySQL主从复制模式可以实现数据备份、提高服务器性能、实现数据安全等功能,是MySQL数据库系统中常用的一种复制方式。

如果是一主一从,只是这个复制过程的话那消耗差不多的资源;不过一般都是一主多从,这样主的压力就打了,他需要给多个从传送日志文件,还要自己的写任务。所以一般都是把读放在从服务器,降低主的压力。

通常一个域有很多台机子都可以升级为域控制器
但是只有你选定的某一台也是唯一的一台才能
成为主域控制器!用来存放一些用户的资料啊(比如
配置文件什么的)等等!其他的域控制器是用来
备份的,防止主域出现问题的!
另外,在NT40环境中PDC和BDC之分,但是在50中实现了多主机的多线程复制模式,也就是没有主与备份域服务器且40中不支持AD

主域控制器作为域中的主导服务器,承担大部分的工作。
从域控制器又称为备份域控制器,可以同时存在多个,作用是在主域控制器失效时,全部或部分替代主域控制器的工作。
但是在Windows2000server或以上的 *** 作系统中已经不再特别区分主从域服务器的概念了,而是努力转变为一种相对平等的多域控制器的结构。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13413230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存