postgresql 同步流复制两个相关参数synchronous_commit 和 synchronous_standby_names

一:synchronous_commit

1.synchronous_commit参数含义

这个参数用来设置事务提交返回客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是{local,remote_write,remote_apply,on,off}。默认设置是on。

2.各可选值含义

2.1 local

当事务提交时,写入本地磁盘即可,不用关心备机的情况。

2.2 remote_write

表示流复制主库提交事务时,需等待备库接收主库发送的wal日志流并写入备节点操作系统缓存中,之后向客户端返回成功,这种情况下备库出现异常关闭时不会有已传送的wal日志丢失风险,但备机操作系统异常宕机就有已传送的wal丢失风险

2.3 on

1 )为on且没有开启同步备库的时候,会当wal日志真正刷新到磁盘永久存储后才会返回客户端事务已提交成功,

2) 当为on且开启了同步备库的时候(设置了synchronous_standby_names),必须要等事务日志刷新到本地磁盘,并且还要等远程备库也提交到磁盘才能返回客户端已经提交.

2.4 remote_apply

表示流复制主库提交事务时,需等待备库接收主库发送的wal流并写入wal文件,同时备库已经完成回放,之后才向客户端返回成功,简单的说remote_apply 表示本地wal已落盘,备库wal已落盘并且已经完成回放,这个设置保证了拥有两份持久化的wal,同时备库也已经完成了回放。

2.5 off

当数据库事务提交时不需要等待本地 wal buffer 写入 wal 日志,立刻向客户端返回成功

二:synchronous_standby_names

1. synchronous_standby_names 参数含义

这个参数用来指定同步备机的列表,存放的是需要设置为同步备机的备机名称

2. 参数配置语法

PG支持一主多备流复制,并且可以设置一个或多个同步备节点,PG9.6时只支持基于优先级的同步备库方式,PG10的synchronous_standby_names参数新增ANY选项,可以设置任意一个或多个备库为同步备库,这种基于Quorum的同步备库方式是PG10 版本的新特性,被称为同步复制优选提交。

PG10参数值有以下三种指定方式方式

[FIRST] num_sync ( standby_name [, ...] )
ANY num_sync ( standby_name [, ...] )
standby_name [, ...]standby_name是指流复制备库的名称,这个名称由备节点recovry.conf或者postgresql.auto.conf文件中的primary_conninfo参数application_name选项指定,可以设置多个,使用逗号分隔,第一个为同步备库,其他为潜在的同步备库,9.5及以前版本最多允许设置一个同步备库。FIRST表示基于优先级方式设置流复制备库,备库的优先级按备库列表的前后顺序排序,靠前的备库优先级高,num_sync指同步备库个数。示例: synchronous_standby_names=‘FIRST 2(s1,s2,s3)’
这种设置表示两个同步备库(s1,s2),s3为潜在备库。主库提交事务时,至少需要等待s1和s2备库完成接收WAL日志流并写入WAL日志文件后才能返回成功。ANY表示基于quorum方式设置流复制备库,同步备库数量为任意num_sync个,假如有四个备库运行s1,s2,s3,s4 。示例: synchronous_standby_names=‘ANY 2(s1,s2,s3)’
这种设置表示列表中任意两个为同步备库,当主库上提交事务时,至少需要等待列表中任意两个备库完成接收WAL日志流并写入WAL日志文件后才能返回成功。s4不在列表,所以s4为异步备库。

3.  实例演示

synchronous_standby_names ="2 (s1,s2,s3)"
--表示s1,s2 会被选中作为同步备库服务器
synchronous_standby_names ="FIRST 2 (s1,s2,s3)"
--同上
synchronous_standby_names ="ANY 2 (s1,s2,s3)"
--s1,s2,s3 中任意两个被选中作为同步备库服务器
synchronous_standby_names ="s1,s2,s3"
--s1,s2,s3作为同步备库服务器synchronous_standby_names ="*"
--特殊项*匹配任意后备名称。如果 synchronous_standby_names 设置成 * 的具体表现为,pg_stat_replication 表中的 sync_state 字段,其中一个 standy 节点的 sync_state 为 sync,剩下的都是 potential;
synchronous_standby_names ="FIRST 2 (*)"
--所有流复制链接到此主节点的 standy 节点中,两个是sync状态,剩下的都是potential状态;
synchronous_standby_names ="ANY 2 (*)"

三:两个参数关系

如果 synchronous_standby_names 参数不指定值,同步复制不会启用。
即使同步复制被启用,通过设置 synchronous_commit 配置参数为 local 或者 off,单个事务可以被配置为不等待 standby 端的 wal 被应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/58101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab论文插图绘制模板第109期—特征渲染的标签气泡散点图

在之前的文章中,分享了Matlab标签散点图的绘制模板: 特征渲染的标签散点图: 进一步,再来分享一下特征渲染的标签气泡散点图的绘制模板,从而可以再添加一个维度的信息。 先来看一下成品效果: 特别提示&…

运用亚马逊云科技Amazon Kendra,快速部署企业智能搜索应用

亚马逊云科技Amazon Kendra是一项由机器学习(ML)提供支持的企业搜索服务。Kendra内置数据源连接器,支持快速访问Amazon S3、AmazonRDS、AmazonFSX以及其他外部数据源,帮助用户自动提取文档并建立索引。Kendra支持超过30多种多国语…

人工智能会成为人类的威胁吗?马斯克、扎克伯格、比尔·盖茨出席

根据消息人士透露,此次人工智能洞察论坛将是一次历史性的聚会,吸引了来自科技界的许多重量级人物。与会者们将共同探讨人工智能在科技行业和社会发展中的巨大潜力以及可能带来的挑战。 埃隆马斯克,特斯拉和SpaceX的首席执行官,一直…

无涯教程-Python机器学习 - Analysis of Silhouette Score函数

剪影得分的范围是[-1,1]。其分析如下- 1分数-接近1 剪影分数表示样本距离其邻近簇很远。 0分数-0 剪影分数表示样本在将两个相邻聚类分隔开的决策边界上或非常接近。 -1分数-1 剪影分数表示样本已分配给错误的聚类。 Silhouette得分的计算可以使用以下公式完成 $$剪影得…

nginx配置https

1.安装nginx 安装完成后检查 nginx -V2.申请证书与上传 阿里云申请免费的证书 然后上传到某个目录 3.修改nginx配置 #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid …

没有 JavaScript 计时器的自动播放轮播 - CSS 动画

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计时器</title><style>* {padding: 0;margin: 0;box-siz…

MySQL 基本操作

目录 数据库的列类型 数据库基本操作 SQL语言规范 SQL语句分类 查看表&#xff0c;使用表 管理数据库 创建数据库和表 删除数据库和表 向数据表中添加数据 查询数据表中数据 修改数据表的数据 删除数据表中数据 修改表明和表结构 扩展表结构&#xff08;增加字段&…

JAVA JNA 调用C接口的三种方式

文章目录 1. 准备一个共享库文件2. JNA姿势1—继承Library接口3. JNA姿势2—直接NativeLibrary.getInstance3. JNA姿势3—Native方法 1. 准备一个共享库文件 test.c #include <stdio.h> int test(char *input){printf("input:%s\n",input);return 0; }libtes…

OpenCV 开启O3优化

opencv默认没有开启O3优化选项&#xff0c;需要进行手动设置&#xff0c;下面是一种优化方法&#xff1a; 方法一 在 /opencv-4.5.5/cmake/OpenCVCompilerOptions.cmake 中的第 269 行做出以下修改&#xff1a; # 修改前 set(OPENCV_EXTRA_FLAGS_RELEASE "${OPENCV_EXT…

Aidex 移动端快速开发框架# RuoYi-Uniapp项目,uniapp vue app项目跨域问题

参考地址&#xff1a; manifest.json官方配置文档&#xff1a;manifest.json 应用配置 | uni-app官网 Chrome 调试跨域问题解决方案之插件篇&#xff1a; uni-app H5跨域问题解决方案&#xff08;CORS、Cross-Origin&#xff09; - DCloud问答 其实uni-app官方有解决跨域的办…

Yolov8-pose关键点检测:模型轻量化创新 | PConv结合c2f | CVPR2023 FasterNet

💡💡💡本文解决什么问题:新的partial convolution(PConv),通过同时减少冗余计算和内存访问可以更有效地提取空间特征。 PConv| GFLOPs从9.6降低至8.5,参数量从6482kb降低至6134kb, mAP50从0.921提升至0.925 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.n…

第9章:聚类

聚类任务 性能度量 距离度量 非度量距离 原型聚类 有很好的统计学上的意义&#xff0c;但是只能找到椭球形的聚类。 密度聚类 层次聚类

JVM,JRE和JDK的区别

JVM&#xff0c;JRE和JDK的区别 JVM(Java Virtual Machine&#xff0c;Java虚拟机)JREJRE目录结构 JDK JVM(Java Virtual Machine&#xff0c;Java虚拟机) Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行&#xff0c;Java虚拟机中…

Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect‘ not set

场景&#xff1a; 项目中使用JPA&#xff0c;在验证授权中心环境可用性测试类里执行测试类时候报错 问题描述 报如下错误 java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDe…

Redis三种特殊数据类型

Redis三种特殊数据类型 geospatial 地理位置 Redis 地理空间数据类型简介 Redis 地理空间索引允许您存储坐标并搜索它们。 此数据结构可用于查找给定半径或边界框内的邻近点。 基本命令 GEOADD 将位置添加到给定的地理空间索引&#xff08;请注意&#xff0c;使用此命令&a…

cortex-A7核PWM实验--STM32MP157

实验目的&#xff1a;驱动风扇&#xff0c;蜂鸣器&#xff0c;马达进行工作 目录 一&#xff0c;PWM相关概念 有源蜂鸣器和无源蜂鸣器 二&#xff0c;分析电路图&#xff0c;框图 三&#xff0c;分析RCC章节 1&#xff0c;确定总线连接 2&#xff0c;根据总线内容确定基…

媒体服务器与视频服务器有什么区别

媒体服务器与视频服务器有什么区别 流媒体服务器用在远程教育&#xff0c;视频点播、网络电台、网络视频等方面。 直播过程中就需要使用流媒体服务器&#xff0c;一个完整的直播过程&#xff0c;包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放等过程&#xf…

Flink CDC学习笔记

第一章 CDC简介 1.1 什么是CDC ​ CDC (Change Data Capture 变更数据获取&#xff09;的简称。核心思想就是&#xff0c;检测并获取数据库的变动&#xff08;增删查改&#xff09;&#xff0c;将这些变更按发生的顺序记录下来&#xff0c;写入到消息中间件以供其它服务进行订…

无涯教程-机器学习 - 数据统计

在进行机器学习项目时&#xff0c;通常无涯教程会忽略两个最重要的部分&#xff0c;分别是 数学 和 数据 。这是因为知道ML是一种数据驱动的方法&#xff0c;并且ML模型只会产生与提供给它的数据一样好的或坏的输出。 在上一章中&#xff0c;讨论了如何将CSV数据上传到ML项目中…

【JSDocvscode】使用JSDoc、在vscode中开启node调试、使用vscode编写运行Python程序

JSDoc JSDoc是JavaScript的一种注释语法&#xff0c;同时通过JSDoc注释也可以规避js弱类型中不进行代码提示的问题 图形展示JSDoc的效果&#xff1a; 上述没有进行JSDoc&#xff0c;然后我们a点什么 是没有任何提示的 上述就是加上 JSDoc的效果 常用的 vscode 其实内置了 js…