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 被应用。
相关文章:
postgresql 同步流复制两个相关参数synchronous_commit 和 synchronous_standby_names
一:synchronous_commit 1.synchronous_commit参数含义 这个参数用来设置事务提交返回客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是{local,remote_write,remote_apply,on,off}。默认设置是on。 2.各可选值含义 2.1 local 当事务…...
运算放大器发展史
在内部集成了一个补偿电容 MPS公司OP07推出后,大受欢迎。各家厂商都推出了自己的 这4款都是可以替换的...
LVS+Keepalived 实验
Keepalived 是什么 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题的一款检查工具 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器…...
FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装
FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装 0. 界面预览1. Docker安装1.1 下载docker镜像1.2 启动docker镜像1.3 登录 2. 脚本安装2.1 下载2.2 安装2.3 登录2.4 卸载程序 3. 镜像安装3.1 下载镜像3.2 安装镜像3.3 登录 0. 界面预览 http://myfs.f3322.net…...
内网渗透神器CobaltStrike之权限提升(七)
Uac绕过 常见uac攻击模块 UAC-DLL UAC-DLL攻击模块允许攻击者从低权限的本地管理员账户获得更高的权限。这种攻击利用UAC的漏洞,将ArtifactKit生成的恶意DLL复制到需要特权的位置。 适用于Windows7和Windows8及更高版本的未修补版本 Uac-token-duplication 此攻…...
使用haproxy搭建web架构
haproxy HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。 HAProxy提供了可以在七层和四层两种负载均衡能力,它可以提供高可用性、负载均衡、及基于TCP和HTTP应用的代理。适用于负载大的Web站点,在运行在硬件上可…...
Java基础之IO流File类创建及删除
1.File类概述及构造方法 2.File类创建功能 文件创建成功! 如果文件不存在,就创建文件,并返回true 如果文件存在,就不创建文件,并返回false 如果文件夹不存在,就创建文件夹,并返回true 如果文件…...
高速道路监控:工业路由器助力高速监控远程管理与维护
工业路由器在物联网应用中扮演着重要的角色。物联网的发展使得大量设备和传感器能够互联互通,而工业路由器作为连接这些设备和网络的中间桥梁,承担着数据传输和安全管理的重要责任。 工业路由器能够为高速监控提供网络功能,实现户外无线网络部…...
【校招VIP】前端基础之post和get
考点介绍: get和post 是网络基础,也是每个前端同学绕不过去的小问题,但是在校招面试中很多同学在基础回答中不到位,或者倒在引申问题里,就丢分了。 『前端基础之post和get』相关题目及解析内容可点击文章末尾链接查看…...
如何合理设计API接口?
本规范仅适用于由服务器端发起调用请求、POST提交数据以及GET请求文本数据结果的API,统一采用UTF-8编码规则,采用JSON格式响应。 URL定义 API 服务接口应提供REST风格的HTTP(HTTPS) 接口: {protocol}://{domain}:{port}/{app}/{controller}/{action}?{query} 变量 含义 示…...
Jsp 解决out.print()输出多出空行
一、原因 在 JSP 中,HTML 标签和 JSP 指令之外的内容会被当作文本处理,包括空行、空格和制表符等。当 JSP 引擎解析 JSP 页面时,会将这些文本内容原封不动地输出到响应中。 http响应 二、解决方法 在Jsp页面最前端添加 <% page trimDir…...
SMC状态机 讲解2 从模型到SMC
SMC状态机 讲解2 从模型到SMC 1、实例化有限状态机(FSM)2、简单转换 Simple Transition3、外部环回转换 External Loopback Transition4、内部环回转换 Internal Loopback Transition5、转换动作6、转换Guard7、转换参数8、Entry 和 Exit动作9、Push 转换10、Pop转换…...
MyBatis-Plus的使用
MyBatis-Plus 1、mybatis-plus介绍 官网:https://baomidou.com/ MyBatis-Plus (简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus提供了通用的mapper…...
板卡设计+硬件每日学习十个知识点(44)23.8.24 (检测单元设计,接口部分设计,板卡电源输入设计,电源检测电路)
文章目录 1.检测单元介绍(使用GD32单片机)2.GD32的最小系统板3.GD32的温度监测4.GD32的电压监测和电流监测5.GD32的布线6.接口部分设计7.板卡电源输入设计8.电源检测电路 1.检测单元介绍(使用GD32单片机) 答: 首先要为…...
jmeter HTTP信息头管理器
首先,打开JMeter并创建一个新的测试计划。右键单击测试计划,选择"添加" > “线程组”,然后在线程组上右键单击,选择"添加" > “Sampler” > “HTTP请求”。 在HTTP请求中填写服务器的URL和其他必要…...
各种中间件的默认端口
面试时会忘记个别中间件端口 docker:2375 nacos:8848 redis:6379 rabbitMq: 5672(后台配置的端口)15672(web管理界面)账号:guest15674(web STOMP插件):通过WebSocket…...
leetcode303. 区域和检索 - 数组不可变(java)
前缀和数组的应用 区域和检索 - 数组不可变题目描述前缀和数组代码演示 区域和检索 - 数组不可变 难度 - 简单 原题链接 - 区域和检索 - 数组不可变 题目描述 给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 righ…...
PHP 安装Composer,vue前端依赖包
电脑安装Composer 官网下载:https://getcomposer.org/Composer-Setup.exe 后端安装: 检查是否安装依赖: 安装Composer install 或 Composer i 前端安装: yarn install 安装依赖...
OpenCV项目开发实战--基于Python/C++实现鼠标注释图像和轨迹栏来控制图像大小
鼠标指针是图形用户界面 (GUI) 中的关键组件。没有它,您就无法真正考虑与 GUI 进行交互。那么,让我们深入了解 OpenCV 中鼠标和轨迹栏的内置函数。我们将演示如何使用鼠标来注释图像,以及如何使用轨迹栏来控制图像的大小 我们将使用下图来演示 OpenCV 中鼠标指针和轨迹栏功能…...
❤ Vue使用Eslint检测报错问题和解决
❤ Vue使用Eslint检测报错问题和解决 1、 关闭Eslint检测 关闭ESLint语法检测即可:具体步骤如下: 第一步我们打开setting设置: 打开左上角的file,然后点击setting 接下来进入setting以后我们来看下面操作: eol-l…...
Sentaurus TCAD实战:手把手教你提取NPN三极管的Gummel-Poon模型参数(SPICE建模必备)
Sentaurus TCAD实战:从Gummel曲线到SPICE模型参数的完整提取流程 在半导体器件设计与电路仿真中,准确的三极管模型参数是确保仿真结果可靠性的关键。传统方法往往依赖器件手册提供的典型参数,但针对特定工艺定制的器件,这些参数可…...
英雄联盟LCU工具集LeagueAkari:终极自动化游戏助手完整指南
英雄联盟LCU工具集LeagueAkari:终极自动化游戏助手完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkari是一款基于…...
别再混淆了!一文理清华为云Stack里FusionStorage、OceanStor Pacific与存储服务的对应关系
华为云Stack存储产品演进史:从FusionStorage到OceanStor Pacific的技术脉络解析 在云计算基础设施领域,存储系统的命名规则往往反映了技术架构的迭代路径。华为云Stack作为企业级混合云解决方案,其存储产品线经历了多次重大技术革新与品牌整合…...
快速上手3DGS数字孪生开发:一份必做的技术动作盘点清单
一、行业核心技术科普:3DGS数字孪生开发的关键技术节点从零开始构建一个基于3D高斯泼溅(3DGS)的数字孪生应用,涉及多个关键技术节点。每个节点的执行质量,都直接影响最终应用的性能与用户体验。其域创新推出的LCC格式&…...
免费开源AMD Ryzen调试神器:ZenStatesDebugTool完整使用指南
免费开源AMD Ryzen调试神器:ZenStatesDebugTool完整使用指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...
从CNN到ViT:混合网络架构的设计哲学与PyTorch实战
1. 项目概述:为什么我们需要混合网络?在计算机视觉领域待了十几年,我亲眼见证了模型架构的“风水轮流转”。从早期的LeNet、AlexNet,到后来统治多年的ResNet、DenseNet等纯卷积神经网络,再到这两年Transformer架构&…...
终极指南:如何一键重置JetBrains IDE试用期,免费获得全新30天评估时间
终极指南:如何一键重置JetBrains IDE试用期,免费获得全新30天评估时间 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置是每个开发者都需要的实用技能,当…...
标签系统的底层同步拓扑:大批量客户标签异步更新的一致性方案
标签(Tag)是私域精细化运营的灵魂。在进行大规模广告投放、或者老客清洗时,企业系统经常需要同时为上万个外部客户批量追加或清空标签。 1. 标签同步的复杂性在哪里? 原生设计中,企业微信的标签是以“企业标签组&#…...
如何在Vue3项目中3步完成专业代码编辑器集成:终极指南
如何在Vue3项目中3步完成专业代码编辑器集成:终极指南 【免费下载链接】vue-codemirror codemirror code editor component for vuejs 项目地址: https://gitcode.com/gh_mirrors/vu/vue-codemirror 还在为Vue3项目寻找完美的代码编辑器组件吗?vu…...
2026年制造业员工入转调离全流程自动化趋势?——从“系统孤岛”到“Agent全闭环”的效能革命
2026年,全球制造业正处于从“设备自动化”向“组织智能化”跨越的关键拐点。 随着人口红利消退与用工结构性矛盾加剧,工厂对于人力资源的精准配置已不仅是行政命题,而是直接影响产线柔性与交付周期的核心生产力命题。 传统的HR管理模式在面对…...
