首页 > 其他分享 >数据密集型应用-数据复制

数据密集型应用-数据复制

时间:2023-03-01 19:22:52浏览次数:43  
标签:同步 快照 复制 密集型 日志 数据 节点

https://blog.csdn.net/m0_53157173/article/details/128061594
https://blog.51cto.com/feishujun/5522225

单节点

image

单节点模式存在的问题:

  1. 并发量太小,大量读写请求打在同一个节点,处理不过来。
  2. 假如果节点挂了(无论什么原因),那么就可能会丢失数据。

主从复制

image
主节点可写可读,从节点只可读。从节点通过复制日志(replication log)记录或变更流(change stream)进行复制同步主节点数据。

解决了什么问题

  1. 读写分离,并发能力提高。
  2. 主从备份,可以增加数据安全性。

产生了什么问题

  1. 主节点挂了,怎么选举从节点?
  2. 从节点与主节点的数据不是强一致性,可能落后一段时间。(新增从节点或者复制网络延迟)

新增从节点怎么办?

  1. 不能直接复制某个节点快照,因为数据一直在发生变化。
  2. 不能将数据库停机复制,这将违反高可用

解决方式: Redis的思想RBD+AOF

  1. 主节点产生一个快照
  2. 从节点对快照数据进行同步
  3. 从节点将主节点快照以后的数据更改日志再进行同步
  4. 主从节点数据复制完成

主节点挂了怎么办?

  1. 确认主节点挂了。
    基于超时机制,发送心跳包

  2. 选举新的主节点。
    选取与主节点同步最完整(数据滞后最少)的从节点

  3. 配置使新主节点生效,原主节点降为从节点

产生问题
  1. 从节点不可能时时刻刻与主节点完全同步,这就导致会有数据丢失。
  2. 如果Redis先缓存了数据,而节点数据丢失,那么会发生缓存不一致的问题。
  3. 会出现脑裂的问题,同时有多个主节点。
  4. 超时时间的选择问题。

从节点挂了怎么办?

待从节点恢复后,根据本地复制日志,查找到崩溃前一个事务,然后请求主库同步所有变更,这样从库就能追赶上主库。

复制日志的实现

  1. 基于语句的复制
    主节点将语句发送给从节点
    image
  2. 传输预写日志
    数据将写入都存进日志,主节点发送日志给从节点。
  3. 逻辑日志复制(基于行)
    mysql binlog
  4. 基于触发器的复制
    数据库发生变化时,自动执行触发器中的代码,消耗较大。

复制滞后

读自己写

在主从复制架构中,主节点与从节点的数据不可能强一致性(除非是同步写),这样就会出现一种情况:
clientA 写进主节点数据,然后在从节点读数据时候消失不见。(自己写进去的,自己却读不到了)
解决方式:

  1. 访问可能修改的数据时直接从主节点进行读取,但是假如可能修改的数据过多,那么主从架构的优势就没显示出来
  2. 统计主从复制需要的时间,如果读取时间间隔超过复制时间,那么直接在从线程读,否则主线程。

标签:同步,快照,复制,密集型,日志,数据,节点
From: https://www.cnblogs.com/handsometaoa/p/17167524.html

相关文章

  • 【专题】2022广告营销行业人才趋势报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31710原文出处:拓端数据公众号在2022上半年,由于不断发生的疫情,对整个广告业造成了很大的冲击,很多广告主的事业受到了很大的限制,一些广告公司......
  • 2023-03-01 react-native 实现 复制功能 @react-native-community/clipboard 报错:Type
    我的react-native(下称rn)版本为0.68,要实现这个功能主要用到rn的clipboard,在21年的时候他就已经提示clipboard会在未来的版本中上去掉,官方的建议是不要再从react-native引入,......
  • 如何等待接收数据
    spi通信SPI0_Recv()这个函数作用是接收一个字节按如图代码,直接判断有没有数据,没有数据直接返回了,并没有等待;应该这样写:点击查看代码len=1;while(len){ if(R8_S......
  • 【Kaggle】Telco Customer Churn 电信用户流失预测案例 ----数据预处理
    任务目标:  对于电信运营商来说,用户流失有很多偶然因素,不过通过对用户属性和行为的数字化描述,我们或许也能够在这些数据中,挖掘导致用户流失的“蛛丝马迹”,并且更重要的一......
  • 如何将数据帧行分组到 pandas groupby 中的列表中
    我有一个熊猫数据框,df例如:abA1A2B5B5B4C6我想按第一列分组并将第二列作为行中的列表:A[1,2]B[5,5,4]C[6]是否可以使用pandasgroupby......
  • 认识数据标签
    目录数据标签体系什么是数据标签体系数据标签的分类按照计算方式分类按照更新时间分类数据标签体系与用户画像数据标签与用户画像的关系如何构建常见审计平台的数据标签体......
  • Redis主从复制原理
    1.当从服务器连接上主服务器后,主服务器向从服务器发送进行数据同步消息2.主服务器接到从服务器发送的数据同步的消息,把主服务器数据持久化,复制rdb文件发送给从服务器,从服......
  • 记录一个mongo数据库TreeMap结构导致数据异常的BUG
    BUG:mongo入库丢失了某些字段,没报错场景:java代码调用mongo入库,一个嵌套结构体,在内部某一层嵌套增加一个对象结构,有几个常量和嵌套对象,2个Map<String,String>,1个Map<String,......
  • Python数据分析之财政收入影响因素分析及预测模型
     01-summary.py 1#-*-coding:utf-8-*-23#代码6-145importnumpyasnp6importpandasaspd78inputfile='../data/data.csv'#输......
  • HDFS数据安全与隐私保护
    一、HDFSTrash垃圾桶1.文件系统垃圾桶背景HDFS本身也是一个文件系统,那么就会涉及到文件数据的删除操作。默认情况下,HDFS中是没有回收站垃圾桶概念的,删除操作的数据将......