首页 > 数据库 >Redis主从复制,高可用性面试题

Redis主从复制,高可用性面试题

时间:2023-09-23 17:57:55浏览次数:43  
标签:面试题 写入 主从复制 复制 高可用性 缓冲区 服务器 连接

参考链接:https://xiaolincoding.com/redis/cluster/master_slave_replication.html#%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%90%8C%E6%AD%A5

 

主从第一步同步的过程?

 分成三步进行:

1、建立连接,从服务器获得主服务的id和复制位置,一开始是-1。

2、主服务器fork一个子进程用来创建当前的RDB,并将RDB传输给从服务器。

3、将forkRDB和传输过程中产生的新写入操作写入缓冲区中,并将缓冲区中的内容通过长连接发送给从服务器。

 

后续的同步怎么保证?

建立TCP/IP长连接,将新的写入命令传给从服务器。

 

主服务器同步压力太大怎么分摊主服务器压力?

通过赋给从服务器职能,使得从服务器也能进行主从复制。

 

增量复制的概念?

因为网络关系tcp/ip断开后,主从数据库出现不一致的情况,就需要进行增量复制。

存在环形缓冲区,用来存放每次写入命令的备份。

主服务器记录写的位置,从服务器记录一个读的位置,进行比对,就能知道从哪个地方开始重新发给从服务器,如果位置差距过大超过了环形缓冲区的大小,就需要进行全量复制。

这个环形缓冲区一般大小是,重新建立连接的时间 * 每秒写入命令的大小 * 2  (10mb)。

Redis主从节点时长连接还是短连接?

长连接

 

怎么判断 Redis 某个节点是否正常工作?

pingpong机制,所有节点向那个节点ping一次,回应正常的超过1/2,即可证明这个节点是正常的。

主从复制架构中,过期key如何处理?

主服务器中key过期了,将过期的key用del指令的方式传给从服务器。

Redis 是同步复制还是异步复制?

异步。

主从复制中两个 Buffer(replication buffer 、repl backlog buffer)有什么区别?

replication buffer 是在创建RDB和传输RDB时,写入命令暂时存放的地方,是长连接正常连接时,进行主从同步的地方。

repl backlog buffer 是在进行增量复制的时候,暂存的写入命令,为了保证一致性的环形缓冲区。

减少异步复制的数据丢失的方案?

1、首先保证网络畅通,尽量减少异步同步时,主从同步的时间。

2、在异步同步延迟过高的情况下,用消息队列削峰或者暂时禁止新的写入操作。

3、客户端将写入操作暂存本地,等处理完了之后再写入主服务器。

集群产生脑裂数据丢失?

产生数据丢失的原因?

因为网络原因导致主服务器与从服务器断开,但是写的命令正常进行,哨兵在监测到主服务器“下线”之后推举出新的主服务器,这时候旧的主服务器重新连接,导致变成从服务器。

这时候建立连接时会进行全量复制,这时候写的命令就会丢失。

 

方案?

当主服务器连接的从节点没有一半时,就有被挂掉的风险,此时禁止写入操作。

延迟超过n秒时,也禁止写入操作。

 

标签:面试题,写入,主从复制,复制,高可用性,缓冲区,服务器,连接
From: https://www.cnblogs.com/xiaochaoheni/p/17724735.html

相关文章

  • 剑指Offer面试题10:斐波那契数列
    一、题目示例:输入:4返回值:3说明:根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。二、题解2.1解法一:迭代相加知识点:动态规划动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然......
  • 随想录Day4|24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07.
    随想录Day4|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表Ⅱ 24.两两交换链表中的节点文章讲解视频讲解给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,......
  • vue3的面试题
    1.什么是Vue3?Vue3有哪些新增特性?答:Vue3是Vue.js框架的最新版本,它增加了很多新特性,包括CompositionAPI、Teleport、Suspense和Fragment等。2.Vue3CompositionAPI是什么?它的作用是什么?答:Vue3CompositionAPI是Vue3中的一个新特性,它的作用是将组件中的逻辑分解成可复用的可......
  • Docker Swarm 与高可用性
    什么是DockerSwarm?DockerSwarm是Docker官方提供的容器编排工具,它可以将多个Docker节点组成一个集群,实现容器的自动化部署和管理。DockerSwarm采用了Raft算法来保证集群的一致性,同时支持多种调度策略,如随机调度、最少使用调度、节点标签调度等。DockerSwarm的高可用......
  • MySQL 主从复制与读写分离
    MySQL主从复制与读写分离1、什么是读写分离?读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。2、为什么要读写分离呢?因为数据库的“写”(写10000......
  • 常见面试题汇总
    现在到处都能搜到面试题,也说的很全,可有时候发现,刷的有时候面试官也不问,就跟考试一样,复习的都是被面试官跳过的,这样就很被动,要是问到知识盲区了,还有可能直接社死。请教了一些我认为很强的大佬们,收集了一些问的我或者会被常问到的问题,目的就是面试前能临阵磨磨枪,笔记记一堆,那时候找......
  • JVM面试题、关键原理、JMM
    boolean:占用1个字节,取值为true或false。byte:占用1个字节,范围为-128到127。short:占用2个字节,范围为-32,768到32,767。int:占用4个字节,范围为-2,147,483,648到2,147,483,647。long:占用8个字节,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。float:占用4个字节,范......
  • postgresql主从复制状态检查
    确定主从库方法一ps-ef|grep"wal"|grep-v"grep如果输出walsender…streaming进程说明当前数据库为主库如果输出walreceiverstreaing进程说明当前数据库为备用库方法二select*frompg_stat_replication;在主库上查询pg_stat_replication视图,如果返回记录说明是主库,备库上......
  • MySQL数据库查询对象空值判断与Java代码示例【含面试题】
    AI绘画关于SD,MJ,GPT,SDXL百科全书面试题分享点我直达2023Python面试题2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、......
  • 资深java面试题及答案整理
    编写Java程序时,如何在Java中创建死锁并修复它?经典但核心Java面试问题之一。如果你没有参与过多线程并发Java应用程序的编码,你可能会失败。如何避免Java线程死锁?如何避免Java中的死锁?是Java面试的热门问题之一,也是多线程的编程中的重口味之一,主要在招高级程序员时......