postgresql 流复制相关参数及影响

修改流复制相关的参数,测试影响

wal_level

wal日志级别,这个参数决定了有多少信息写入wal日志,默认是replica。(TDSQL-PG 默认是
logical

  • minimal:除了实例crash恢复需要的记录,其他不记录,比如CREATE TABLE AS,CREATE INDEX,CLUSTER,COPY可以跳过,该模式记录的日志信息不足以支持wal归档和流复制。
  • replica: 这种模式支持复制和wal归档,同时支持备库只读查询。replica:在9.6之前还有archive和
  • hot_standby模式,映射到现在的replica模式。
  • logic:在replica的基础上增加一些信息以支持逻辑解码,该模式会增大wal日志的数量,尤其是大量的update,delete操作的库。

日志写入量为logical>replica>minimal,主备复制配置为replica,逻辑复制配置成logical

实验:将wal_level设置为minimal,观察影响

关闭备机、主机
[pg@localhost data]$ pg_ctl -D /data/db2/ stop
waiting for server to shut down.... done
server stopped[pg@localhost data]$ pg_ctl -D /data/db1/ stop
waiting for server to shut down.... done
server stopped修改主机wal_level为minimal
[pg@localhost ~]$ vi /data/db1/postgresql.conf
-----------------------------------------
wal_level = minimal
-----------------------------------------[pg@localhost ~]$ pg_ctl -D /data/db1/ -l /data/db1/server.log start
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.查看启动日志
[pg@localhost ~]$ less /data/db1/server.log
-----------------------------------------
2024-01-10 11:25:50.540 CST [3279] LOG:  database system is shut down
2024-01-10 11:41:17.541 CST [4304] LOG:  listening on IPv6 address "::1", port 15431
2024-01-10 11:41:17.541 CST [4304] LOG:  listening on IPv4 address "127.0.0.1", port 15431
2024-01-10 11:41:17.552 CST [4304] LOG:  listening on Unix socket "/tmp/.s.PGSQL.15431"
2024-01-10 11:41:17.562 CST [4304] LOG:  redirecting log output to logging collector process
2024-01-10 11:41:17.562 CST [4304] HINT:  Future log output will appear in directory "log".
2024-01-10 13:40:44.113 CST [10943] FATAL:  WAL streaming (max_wal_senders > 0) requires wal_level "replica" or "logical"

结论:wal_level设置为minimal不支持流复制

synchronous_standby_names

这个参数用来指定同步备机的列表,存放的是需要设置为同步备机的备机名称。synchronous_commit 不为off和local 的时候有效。

参数值有下面几种表达方式:

  • synchronous_standby_names=‘s1,s2’ 代表s1或s2备机任一返回就可以提交,同ANY 1(s1,s2)。
  • synchronous_standby_names=‘FIRST 2 (s1,s2,s3)’ 代表s1,s2,s3三个备机中前两个s1和s2返
    回主库就可以提交。
  • synchronous_standby_names=‘ANY 2 (s1,s2,s3)’ 代表s1,s2,s3三个备机中任意两个备机返回主库就可以提交,基于quorum协议。
  • synchronous_standby_names=’*’ *代表匹配任意主机,也就是任意主机返回就可以提交。

s1,s2,s3代表备机的application_name,在备机recovery.conf的primary_conninfo参数中配置:
primary_conninfo = ‘host=localhost port=15431 application_name=s1’

实验:调整 synchronous_commit 及synchronous_standby_names观察影响
初始条件:主从同步正常

设置备库1的 application_name
[pg@localhost ~]$ vi /data/db2/postgresql.conf
---------------------------------------
primary_conninfo = 'host=localhost port=15431 application_name=s1'
---------------------------------------重截备机配置
[pg@localhost ~]$ pg_ctl -D /data/db2/ reload
修改主库配置
[pg@localhost ~]$ vi /data/db1/postgresql.conf
---------------------------------------
synchronous_commit = on
synchronous_standby_names = 's1,s2'  #添加一个不存在的备库 s2
---------------------------------------
重载主库配置
[pg@localhost ~]$ pg_ctl -D /data/db1/ reload

根据上面的操作修改数据库参数并,并在主库进行dll和dml操作得到如下结果:

参数影响
synchronous_commit = off
synchronous_standby_names = ‘s1,s2’
同步正常
synchronous_commit = local
synchronous_standby_names = ‘s1,s2’
同步正常
synchronous_commit = on
synchronous_standby_names = ‘s1,s2’
同步正常
synchronous_commit = on
synchronous_standby_names = ‘ANY 2 (s1,s2)’
s2备库不存在,DLL,DML语句hang住。
ctrl+c 强制退出后执行成功,s1同步正常
synchronous_commit = remote_write
synchronous_standby_names = ‘ANY 2 (s1,s2)’
s2备库不存在,DLL,DML语句hang住。
ctrl+c 强制退出后执行成功,s1同步正常

其他参数

没有测试条件,先记录一下。

wal_keep_segments

设置“pg_wal”目录下保留事务日志文件的最小数目用于流复制,如果备机停机时间过长导致主库
xlog被删除,那么主备关系会失败,但是如果开启了归档,备机可以从归档日志中继续恢复。

max_wal_size (integer)

在自动WAL检查点使得WAL增长到最大尺寸。
这是软限制;特殊情况下WAL大小可以超过 max_wal_size,如重负载下,错误archive_command,或者 较大wal_keep_segments的设置。缺省是1GB。 增加这个参数会延长崩溃恢复所需要的时间。
这个参数只能在postgresql.conf文件或者服务器命令行上设置。

min_wal_size (integer)

只要WAL磁盘使用率低于这个设置,旧的WAL文件总数被回收,以供将来检查点使用。
而不是删除。 这可以用来确保预留足够的WAL空间处理WAL使用中的峰值,比如当运行大批量工作时。 缺省是80MB。这个参数只能在postgresql.conf文件或者 服务器命令行上设置。

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

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

相关文章

VUE+bpmn.js实现工作流

1、安装bpmn.js npm install bpmn-js7.3.1 // 我安装的版本是7.3.1npm install bpmn-js-properties-panel0.37.2npm install bpmn-moddle7.1.3 npm install --save camunda-bpmn-moddle 2、配置axios,在main.js中引入axios import axios from axiosVue.proto…

论文阅读:TinyGPT-V 论文阅读及源码梳理对应

TODO 有待更新 QFormer作用? QFormer来自论文BCLI2工作中,用来弥补Frozen Image encoder和Frozen LLM之间的gap。 基于Bert作为初始化的。 推理结构图 #mermaid-svg-5qFxDUGSPd77On5n {font-family:"trebuchet ms",verdana,arial,sans-ser…

小汪,TCP连接和断连夺命6连问你可能扛得住?

目录 TCP三次握手连接和四次挥手断连的几处疑问 一、建立连接,为什么是三次握手,而不是二次握手? 二、为什么每次建立 TCP 连接时,初始化的序列号都要求不一样呢? 三、断开连接,为什么是四次握手&#x…

sdbusplus:同步读写property的通用函数

属性的读写,其实函数形式很像,只是参数类型有所不同,可以把这部分抽象出来: //dbus_prop.hpp #pragma once#include <utility> #include <boost/asio.hpp> #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/bus.hpp> #include <…

机器学习激活函数

激活函数 激活函数是人工神经网络中的一个重要组成部分。它们用于向神经网络中添加非线性因素&#xff0c;使得网络能够解决复杂问题&#xff0c;如图像识别、语言处理等。激活函数的作用是决定一个神经元是否应该被激活&#xff0c;也就是说&#xff0c;它帮助决定神经元的输…

科技顶天,市场立地 。璞华科技“顶天立地”的成长之路

科技顶天&#xff0c;市场立地。 几十年来&#xff0c;我们越来越深刻地认识到&#xff0c;这就是真理&#xff0c;质朴而深刻。尤其在当前特殊的国际国内商业环境中&#xff0c;这一理念不但没有过时&#xff0c;反而恰逢其时。有这么一家企业&#xff0c;一直践行“科技顶天…

二级C语言备考3

一、单选 共40题 &#xff08;共计40分&#xff09; 第1题 &#xff08;1.0分&#xff09; 题号:6168 难度:易 第1章 以下叙述中错误的是(). A:.OBJ文件和.EXE文件都是可直接执行的二进制文件 B:用户按规定语法编写的C程序不是二进制文件 C:C源程序经…

使用阿里云镜像创建一个Spring Boot项目

由于现在的idea在创建项目时已经不支持Java8版本了&#xff0c;如果我们还想用8版本&#xff0c;可以使用阿里云镜像创建。所以得改变原有的地址为&#xff1a;https://start.aliyun.com springboot版本选择2开头的任意版本的。 1.配置6个依赖 2.改变下载依赖地址 下载依赖默认…

Proteus仿真stm32f103r6输出PWM/正弦波

资料下载地址&#xff1a;Proteus仿真stm32f103r6输出PWM/正弦波 一、仿真图 Proteus仿真stm32f103r6输出PWM/正弦波 二、程序 #include "pbdata.h"u16 fre; void RCC_Configuration(void); void GPIO_Configuration(void); void TIM3_Configuration();void Dela…

动物脚掌“温度升降”体验:ZL-021大小鼠冷热板测痛仪

ZL-021大小鼠冷热板测痛仪用于评估动物对疼痛的敏感度。通过将小鼠或大鼠放置在温度可调的热板上&#xff0c;记录它们在板上停留的时间来评估它们对不同温度刺激的反应。 优点说明&#xff1a;设备能够明确指示组织损伤情况&#xff0c;同时对动物影响较小&#xff0c;可以反…

安全三要素与如何实施安全评估?

一、安全三要素 是安全的基本组成元素&#xff0c;分别是机密性&#xff08;Confidentiality&#xff09;、完整性&#xff08;Integrity&#xff09;、可用性&#xff08;Availability&#xff09;。 二、如何实施安全评估 一个安全评估的过程&#xff0c;可以简单地分为4个…

学生评教,问卷调查表评价教师统计,python+pandas处理数据

先上一个结果表格 几个关键步骤 1、问卷网站上设置相关题目&#xff0c;条目&#xff0c;最好用评分题目&#xff08;点击文本选项&#xff0c;但是保存下来的是分值&#xff09;&#xff0c;如图 2、pandas清洗数据&#xff0c;包括unstack&#xff0c;其目的是把所有学生得…

Spring Boot实现国际化

src\main\resources\i18n\messages_zh_CN.properties message.hello你好&#xff0c;世界&#xff01; message.welcome欢迎&#xff01; src/main/resources/i18n/messages_en_US.properties message.helloHello World! message.welcomeWelcome! 默认语言 src\main\resources\…

快速了解VR全景拍摄技术运用在旅游景区的优势

豆腐脑加了糖、烤红薯加了勺&#xff0c;就连索菲亚大教堂前都有了“人造月亮”&#xff0c;在这个冬季&#xff0c;“尔滨”把各地游客宠上了天。面对更多的游客无法实地游玩&#xff0c;哈尔滨冰雪世界再添新玩法&#xff0c;借助VR全景拍摄技术对冬季经典冰雪体验项目进行全…

什么是Modbus协议?

Modbus协议是一种在工业自动化领域广泛应用的通信协议&#xff0c;它允许不同设备之间进行可靠的数据交换和控制。该协议最初由Modicon公司于1979年创建&#xff0c;旨在提供一种简单而有效的方法&#xff0c;使PLC&#xff08;可编程逻辑控制器&#xff09;和其他自动化设备能…

AI老照片修复-Bringing-Old-Photos-Back-to-Life

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. AI老照片修复原理-…

修改idea或者pycharm或者android studio的快捷键,快速跳转到行尾

ctrl enter这个快捷键是idea默认配置的&#xff0c;就是将光标所在的行切一刀&#xff0c;并且换到下一行。但是在我的开发习惯里面不怎么使用ctrl enter这个快捷键&#xff0c; 反而开发java或者flutter软件需要快速跳转到行尾添加分号 ; &#xff0c;但是使用end键脱离了我…

ARM 寄存器

文章目录 ARM 寄存器介绍一、未分组寄存器 R0~R7二、分组寄存器 R8~R14三、程序计数寄存器 R15&#xff08;PC&#xff09;四、当前程序状态寄存器 R16&#xff08;CPSR&#xff09;管理模式&#xff08;SVC&#xff09;用户模式&#xff08;USR&#xff09; 汇编里的寄存器名称…

Java复习_4

填空题 课程推荐的 jdk 下载网址为 jdk.java.net 使用命令行编译程序&#xff1a;javac -d bin stc*.java 使用命令行运行程序&#xff1a; java -cp bin 类名 java 语言标识符&#xff1a;字母、数字、下划线和美元符号&#xff0c;数字不能做首字母 java 语言中标识符区…

Android 实现集合去重的方法

方法一&#xff1a;使用HashSet 将集合转换为HashSet。 Set<String> set new HashSet<>(list);将HashSet转换回List。 List<String> uniqueList new ArrayList<>(set);方法二&#xff1a;使用Java 8的Stream API 将列表转换为Stream。 Stream&l…