搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小惠珠哦
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
字节日常实习二面_字节实习生 两面
2
github: Support for password authentication was removed on Please use a personal acces
3
论文阅读Mark(一)Generative Feature Replay For Class-Incremental Learning CVPR2020【Xialei Liu,Chenshen Wu】
4
Docker查看、创建、进入容器相关的命令_docker 查看历史容器
5
深度学习在岩土工程中的应用与实践
6
启明智显工业级HMI芯片Model3A功耗特性--(以M3A 7寸触摸屏为例)_hmi model3a spec
7
stable-diffusion.cpp 一个文件解决stable diffusion所有环境,不需要python,stable-diffusion.dll动态库C#调用Demo_stable diffusion cpp
8
Python酷库之旅-比翼双飞情侣库(03)
9
2024最新 Jenkins + Docker实战教程(一) - Jenkins介绍及安装_jenkins docker 最新版
10
Flutter 学习路线图_flutter学习路线
当前位置:
article
> 正文
postgres数据库的流复制
作者:小惠珠哦 | 2024-06-30 09:57:56
赞
踩
postgres数据库的流复制
1. 流复制和逻辑复制的差异
逻辑复制和流复制最直观的不同是,逻辑复制支持表级别复制
区分点事原理不同
逻辑日志是在wal日志产生的数据库上,由逻辑解析模块对wal日志进行初步的解析,解析结果是ReorderBufferChange(理解为HeapTupleData),再由pgoutput plugin对中间结果进行过滤和消息化拼接,然后将其发送到订阅端,订阅端根据接受到的Heap TupleData重新对其执行insert、delete、udpate操作
流复制时将数据从walrecord拷贝到数据页,
逻辑复制时将数据重新执行一次insert、update或delete
2. 流复制
流复制面对未提交的事务,事务没有提交也会同步到备机,当主库进行提交和回滚的时候,也会同步进行提交和回滚。对大事务相对友好
流复制会导致备机也会产生大量死元祖,需要做vacuum
流复制时将wal日志中记录的内容按照确切的块地址逐字节的拷贝到备库,因此主备之间数据分布是一样的,意味着主备机器上,同一条记录的ctid是相同的
3. 流复制的实现原理
后端进程通过执行XLogInsert和XLogFlush函数,将wal数据写入并刷新到WAL段文件中
walsender进程将写入wal段的wal数据发送给walreveiver进程
发送wal数据后,后端进程继续等待备用服务器的ACK响应。更准确的说,后端进行通过执行内部函数SyncRepWaitForLSN获得一个latch,并等待他被释放
备用服务器上的walreveiver将接受到的wal数据写入备用的wal段中,使用write系统调用,并向walsender返回一次ACK响应
walreveiver使用如fsync等系统调用将wal数据刷新到wal段,向walsender返回另一个ACK响应,并通知启动进程关于wal数据的刷新
startup进程回访已写入wal段的wal数据
当walsender收到walreveiver的ack响应时,释放后端进程的latch,然后后端进程的提交或中止操作将完成。latch释放的时机取决于参数synchronous_commit,如果设置为on,当收到步骤5的ACK时释放latch,如果设置为remote_wirte,则在收到步骤3的ACK时释放latch
ACK的包括内容
写入最新wal数据的lsn位置
刷新最新wal数据的lsn位置
在启动过程中回放最新wal数据的lsn位置
发送此响应的时间戳
过程分析
主库的进程进行写操作
产生WAL record
walsender感知到新的wal,发送给备库
备库接受,写盘再回放
是否发送wal日志与主库事务的提交与否没有关系,但主库是否能提交取决于备库的wal日志写入位置,默认是on的话需要落盘,备库实时回放
注意点
流复制就是借助latch实现主从进程间的协作
流复制场景下,只读事务、子事务的提交以及事务回滚,无需等待备库的ACK
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小惠珠哦/article/detail/772227
推荐阅读
article
毕业
设计
基于
51
单片机
的
智能
门禁
系统
的
设计
_
门禁
报警电路怎么连接
单片机
...
由于本次课题
设计
所用到
的
按键数量较多,既要进行数字密码
的
输入,又要通过按键
的
进行简单
的
人机交流
的
操作。原理图如图1-8所...
赞
踩
article
Allegro
PCB
封装
库:分类
命名
规范
,
类型
齐全,400多个库文件,提供
EXCEL
查找
表,附带3...
摘要:
Allegro
PCB
封装
库是一个集成了阻容感分立元器件、各种
类型
的
封装
(如SOIC、QFN、QFP等)、常用连接...
赞
踩
article
【
AIGC
】
如何
从
0
开始
快速打造
个人
知识库
...
最近我在使用一些
AIGC
的产品时发现一个问题,我没有办法让它能够结合我现有的数据内容回答我的问题,并且让这些数据保存起来...
赞
踩
article
Spark
新
特性
与核心概念
_
spark3.
2
.
2
版本新
特性
有哪些...
1.AQE的开启通过: spark.sql.adaptive.enabled设置为true开启。
2
.AQE是自动化优化机...
赞
踩
article
Streamlit
讲解专栏(
一
):
安装
以及初步
应用
_
streamlit
安装
...
Streamlit
是
一
个用于快速构建和部署数据
应用
的Python库。它的设计理念是使数据科学家能够快速而简便地创建交互式...
赞
踩
article
cudnn
是要
安装
在
cuda
目录
下吗?
_
cudnn
必须
安装
吗...
是的,通常情况下
cudnn
需要
安装
在
cuda
的
目录
下才能被正确识别和使用。当
安装
cuda
时,会在系统环境变量中添加CUD...
赞
踩
article
Unity
中
TextMeshPro
的使用...
在
Unity
中有自带的Text组件,这个组件已经能够满足我们日常开发中绝大多数的开发字体显示需求了,我们为什么还要使用这...
赞
踩
article
嵌入式通信协议----
Wi
-
Fi
协议详解(二)(基于
STM32
+有人物联网
WIFI
模块
)_
stm32
...
Wi
-
Fi
模块
用于实现串口到
Wi
-
Fi
数据包的双向透明转发,
模块
内部完成协议转换,通 过该
模块
,客户可以将物理设备...
赞
踩
article
最全的
JVM
面试
知识点
(一)
:
运行
时
数据
区_91463333...
转自
:
https://blog.csdn.net/keets1992/article/details/92089754不...
赞
踩
article
(
从0-1带你了解)
Pytorch
之
模型
的
读取
_
pytorch
读取
模型
...
def __init__(self): # 输入大小 (3, 256, 256)self.conv1 = nn.Sequ...
赞
踩
article
Linux
中
mariadb
的
安装及
使用
...
触发器和存储过程
的
区别执行时机触发器:自动在特定数据库操作前后执行,不需要手动调用,通常用于数据完整性、审计等需求。存储...
赞
踩
article
让
GPT
使用工具:NIPS最新论文《
GPT
4
Tools
:
Teaching
Large Langua...
本文是关于NIPS最新论文《
GPT
4
Tools
:
Teaching
Large Language Model
to
Us...
赞
踩
article
Socket
网络
编程
中
的
常见
应用
场景与
实例
分析...
从简单
的
Echo服务器到复杂
的
聊天
应用
和文件传输,
Socket
提供了强大
的
功能和灵活性。通过本文
的
介绍和
实例
分析,希望大...
赞
踩
article
FPGA
概念
、
芯片
结构
、
工作原理
、
开发流程以及
xilinx
公司主要
可编程
芯片
...
一
、
FPGA
概念
可编程
逻辑器件(Programmable Logic Device,PLD)专用集成电路(Applica...
赞
踩
article
STM32
的
SPI
通信...
SPI
(Serial Peripheral Interface)协议是由摩托罗拉公司提出的通信协议,即串行外围设备接口,...
赞
踩
article
计算机
视觉
——
期末
复习(
简答题
)_
计算机
视觉
期末
...
计算机
视觉
、
期末
复习_
计算机
视觉
期末
计算机
视觉
期末
1、
计算机
视觉
与机器
视觉
的区别 计算...
赞
踩
article
Head
First
设计模式
中
的
典型
设计模式
解析
与案例分析...
在《
Head
First
设计模式
》一书中,策略模式、观察者模式、装饰者模式和单例模式等典型
设计模式
通过生动
的
示例和详细
的
...
赞
踩
article
Android
开发
OCR
:通过
Tesseract
实现
图片
文字识别_
tesseract
ocr
an...
本文详细介绍了如何在
Android
应用中集成
Tesseract
OCR
库,包括添加依赖、数据文件准备、权限管理以及实际的代...
赞
踩
article
从
高考
到
程序员
的
成长之路_
东北大学
程序员
...
风风雨雨四十载——
高考
恢复40年,中国士子
的
人生上升通道也已经被打通了40载。虽然社会
的
多元发展,已经淡化了“
高考
决定人...
赞
踩
article
大数据系列:
Spark
的
工作原理及
架构
_
spark
可视化
的
项目
架构
有哪些...
介绍本Apache
Spark
教程将说明Apache
Spark
的
运行时
架构
以及主要
的
Spark
术语,例如Apache ...
赞
踩
相关标签
课程设计
51单片机
嵌入式硬件
单片机
git
windows
程序人生
AIGC
spark
大数据
分布式
信息可视化
streamlit
数据分析
简易网页
数据看板
python
tensorflow
深度学习
unity
游戏引擎
物联网
mcu
网络
c++