当前位置: 首页 > news >正文

【无标题】为什么 pg_rewind 在 PostgreSQL 中很重要?

文章目录

  • pg_rewind 的工作原理
  • 使用 pg_rewind 的要求
  • Basic Usage of `pg_rewind`
  • 重要注意事项:
  • 为什么 pg_rewind 需要干净关闭?
  • 无法进行干净关闭的情况
  • 处理不正常关机
  • 结论

pg_rewind 是 PostgreSQL 中的一个实用程序,用于将一个数据库集群与另一个数据库集群同步,通常是在故障转移或主服务器和备用服务器角色切换之后。
当旧主服务器需要在故障转移后作为备用服务器重新加入新的主服务器时,它特别有用。

pg_rewind 的工作原理

发生故障转移时,新的主服务器可能会与旧的主服务器(现在成为备用服务器的候选服务器)产生分歧。

pg_rewind 通过仅复制差异(即更改的块)而不是重新同步整个数据库,有效地使旧主服务器的数据文件与新主服务器的数据文件保持同步。

与完全重新同步相比,此过程更快,占用的带宽更少。

使用 pg_rewind 的要求

  1. WAL archive或replication slot:旧主服务器必须具有足够的 WAL 日志可用来覆盖自分歧以来的时间段。这可以使用 WAL archive或replication slot来管理。
  2. 兼容版本:旧主服务器和新主服务器上的 PostgreSQL 版本必须相同或兼容,pg_rewind 才能工作。
  3. clean关闭:在运行pg_rewind之前,应干净地关闭旧主服务器。

Basic Usage of pg_rewind

要使用“pg_rewind”,请遵循以下常规步骤:

  1. 停止旧主服务器:确保旧主服务器已clean stop。
  2. 运行“pg_rewind”:执行“pg_rewind”命令,指定旧主服务器的数据目录和新主服务器的连接详细信息。
pg_rewind -D data_directory - source-server="connection_string"
  • -D data_directory: 旧主服务器的数据目录(现在正准备作为备用服务器)。
  • — source-server=”connection_string”:到新的主服务器的连接字符串,它提供同步所需的数据。
  • example:
pg_rewind -D /var/lib/postgresql/14/main — source-server=”host=new_primary_host port=5432 user=replication_user dbname=mydb”

在这个范本中:
/var/lib/postgresql/14/main 是旧主服务器的数据目录
new_primary_host new_primary_host是新主服务器的主机名。 —5432是PostgreSQL server的端口号 —replication_user` 是具有适当复制权限的用户。

3.启动回滚后的服务器:在 pg_rewind 完成后,你可以将回滚后的服务器以备用模式启动,并进入复制模式。

重要注意事项:

数据丢失:故障转移前未同步的旧主服务器上的任何未复制数据都可能丢失。

  • 权限:确保运行“pg_rewind”的用户具有访问旧主服务器和新主服务器所需的权限。
  • 备份:在运行“pg_rewind”之前备份关键数据是一种很好的做法,因为如果管理不当,此操作可能会导致数据丢失。

为什么 pg_rewind 需要干净关闭?

为了使 pg_rewind 在 PostgreSQL 中正常运行,通常需要干净关闭旧的主服务器。以下是这很重要的原因:
干净关闭的重要性:

  1. 数据一致性:干净关闭可确保所有待处理事务都已完成,并且数据库处于一致状态。这意味着所有数据更改都已完全写入数据文件,并且 WAL(预写日志)已正确刷新。

  2. 检查点:在干净关闭期间,PostgreSQL 会执行检查点,这是一个将所有脏页(已修改的页面)从缓冲区缓存写入磁盘并记录特殊 WAL 记录以指示一致时间点的过程。

此检查点对于“pg_rewind”至关重要,因为它标记了可以跟踪更改并向前或向后滚动的状态
3. 避免数据损坏:如果服务器没有干净地关闭,可能会有未正确写入磁盘的不完整或损坏的数据。

在这种情况下,pg_rewind 可能无法准确确定旧主服务器和新主服务器之间的差异,从而导致潜在的数据损坏。

无法进行干净关闭的情况

在某些情况下,可能无法进行干净关闭,例如:

  • 突然的硬件故障
  • 系统崩溃
  • 意外断电

注意:在这些情况下,失效主节点的数据目录可能包含未提交的事务或部分写入的数据,这使得其不能立即安全使用或与 pg_rewind 进行同步。

处理不正常关机

如果旧的主服务器没有干净地关闭,可能需要采取额外的步骤:

  1. 手动检查:检查日志和数据文件以评估数据库的状态。
  2. 数据恢复:您可能需要使用其他恢复工具或技术,例如从备份中恢复或谨慎使用 pg_resetwal 工具来重置 WAL 并使数据目录再次可用。
  3. 风险增加:请注意,在非干净关闭后使用 pg_rewind 可能会带来数据丢失或不一致的风险。

结论

干净关闭可确保 pg_rewind 有一个安全且一致的起点来执行其操作,这使其成为准备将发生故障的主服务器与新的主服务器重新同步时的最佳实践。

如果没有干净关闭,则数据不一致的风险更高,并且该过程可能需要额外的手动干预以确保数据完整性。

相关文章:

【无标题】为什么 pg_rewind 在 PostgreSQL 中很重要?

文章目录 pg_rewind 的工作原理使用 pg_rewind 的要求Basic Usage of pg_rewind重要注意事项:为什么 pg_rewind 需要干净关闭?无法进行干净关闭的情况处理不正常关机结论 pg_rewind 是 PostgreSQL 中的一个实用程序,用于将一个数据库集群与另一个数据库集…...

hostapd生成beacon_ie

配置文件 /data/vendor/wifi/hostapd/hostapd_wlan0.conf 配置参数 AP启动过程:1.上层配置一些参数并根据参数生成配置文件 2.init的时候设置默认参数并加载配置文件上的参数(如果重复,以配置文件上的设置优先) 相关函数及结构…...

leetcode349:两个数组的交集

两个数组的交集 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 public int[] intersection(int[] nums1, int[] nums2) {ArrayList<Integer> list new ArrayList<>();Has…...

Metasploit漏洞利用系列(八):MSF渗透测试 - PHPCGI漏洞利用实战

在本系列的第八篇文章中&#xff0c;我们将深入探索如何利用Metasploit Framework (MSF) 来针对PHPCGI (PHP Common Gateway Interface) 的漏洞进行渗透测试。PHPCGI作为一种将Web服务器与PHP脚本交互的方式&#xff0c;其不恰当的配置或老旧版本中可能存在的漏洞常被攻击者利用…...

基于python的主观题自动阅卷系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

计算机毕业设计仪器设备管理系统-折旧-报废-转移-借出-归还

本文主要阐述如何采用利用网络数据库技术&#xff0c;在信息管理系统中合理的进行管理。在全面解析系统的设计理念以及设计手段&#xff0c;将系统进程中的所需的工具以及技术进行综合的设计&#xff0c;重点解析信息管理情况以及自动化管理进程&#xff0c;主要包括&#xff1…...

DAY37

零钱兑换 II public int change(int amount, int[] coins) {int []dpnew int[amount1];dp[0]1;for(int i0;i<coins.length;i){for(int jcoins[i];j<amount;j){dp[j]dp[j-coins[i]];}}return dp[amount];}组合总和 Ⅳ public int combinationSum4(int[] nums, int target)…...

将iso格式的镜像文件转化成云平台能安装的镜像格式(raw/vhd/QCOW2/VMDK )亲测--图文详解

1.首先,你将你的iso的文件按照正常的流程和需求安装到你的虚拟机中,我这里使用的是vmware,安装完成之后,关机。再次点开你安装好的那台虚拟机的窗口,如下图 选中要导出的镜像,镜像需要关机 2.点击工具栏的文件------选择 导出 整个工程到 ovf 格式—这里你可以选择你要导…...

Numba加速计算(CPU + GPU + prange)

文章目录 加速方法&#xff1a;Numba、CuPy、PyTorch、PyCUDA、Dask、Rapids一、Numba简介二、Numba类型&#xff1a;CPU GPU三、项目实战 —— 数组的每个元素加23.1、使用 python - range 循环计算 —— &#xff08;时耗&#xff1a;137.37 秒&#xff09;3.2、使用 python…...

electron 两个渲染进程之间通信

一、使用主进程作为中介 使用主进程作为中介相对较为灵活&#xff0c;但可能会增加主进程的负担 1. 从一个渲染进程向主进程发送消息 在发送消息的渲染进程中&#xff0c;可以使用 ipcRenderer 模块向主进程发送消息。例如&#xff1a; const { ipcRenderer } require(&qu…...

配置ROS环境

1.检测环境变量 运行printenv | grep ROS命令&#xff0c;有如下返回值则表示环境变量配置正确&#xff1a; ROS_ROOT/opt/ros/kinetic/share/ros ROS_PACKAGE_PATH/opt/ros/kinetic/share ROS_MASTER_URIhttp://localhost:11311 ROSLISP_PACKAGE_DIRECTORIES ROS_DIST…...

力扣 128. 最长连续序列

题目描述 我的思路 我的思路比较暴力&#xff0c;就是首先将数组从小到大进行排序&#xff0c;然后再依次遍历判断序列是否连续并时时更新连续序列的最长长度。比如示例1&#xff1a;nums [100, 4, 200, 1, 3, 2]&#xff0c;第一步先将数组进行排序得到sort_nums [1, 2, 3,…...

Stable Diffusion AI绘画工具的安装与配置(MAC用户)

AI绘画的热潮席卷了整个创意行业&#xff0c;Stable Diffusion作为其中的翘楚&#xff0c;让艺术创作变得前所未有的简单。然而&#xff0c;对于使用Mac电脑用户来说&#xff0c;安装和配置Stable Diffusion可能显得有些棘手。别担心&#xff0c;这份详细的教程将手把手教你如何…...

flowable源码解读——并行多实例节点任务是否是顺序生成

最近在项目开发中需要在多实例开始监听里修改一个全局的计数变量&#xff0c;不太确定并行多实例任务在底层引擎是顺序生成还是并行生成的&#xff0c;如果是顺序生成的则不影响&#xff0c;如果是并行生成 则修改一个全局的计数变量就会出现数据错误问题&#xff0c;查阅了flo…...

【机器学习】AGI的基本概念、技术挑战和应用前景

引言 AGI是指机器能够完成人类能够完成的任何智力任务的能力 文章目录 引言一、什么是AGI1.1 AGI&#xff0c;Artificial General Intelligence&#xff08;通用人工智能&#xff09;1.2 AGI的定义和标准1.3 AGI的发展 二、AGI的技术挑战2.1 理解人类智能2.2 认知复杂性2.3 自主…...

flink 使用RocksDB作为状态后端

RocksDB flink在生产环境中常用RocksDB作为状态后端 1、subtask在taskmanager中作为一个线程运行&#xff0c;如果设置了RocksDB状态后端&#xff0c;RocksDB也会启动一个独立的线程&#xff0c;供subtask来使用。 2、RocksDB是一个kv数据库&#xff0c;因此只能存储flink的键…...

【运维高级内容--MySQL】

目录 一、mysql安装 二、MySQL主从复制 一、mysql安装 yum install cmake gcc-c openssl-devel ncurses-devel.x86_64 rpcgen.x86_64 #安装依赖性 #在root路径下下载mysql-boost-5.7.44、libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm安装包 yum install libtirpc-devel…...

【仿真与实物设计】基于51单片机设计的打地鼠游戏机——程序源码原理图proteus仿真图PCB设计文档演示视频元件清单等(文末工程资料下载)

基于51单片机设计的打地鼠游戏机 演示视频&#xff1a; 基于51单片机设计的打地鼠游戏机 功能描述&#xff1a;使用 51单片机为核心制作一个打地鼠游戏机。按下启动开关&#xff0c;8盏LED流水点亮并闪烁2次&#xff0c;随即开始播放游戏音乐&#xff0c;直到开始选择模式。选…...

iPhone设备使用技巧:忘记密码的情况下如何解除iOS 18/17屏幕时间

我们给了儿子一部新手机。在尝试擦除旧手机上的所有内容并恢复出厂设置时&#xff0c;它要求提供 4 位屏幕时间密码。我已经尝试了我们会使用的所有可能性&#xff0c;但无法弄清楚。我们如何绕过这个问题或将手机恢复出厂设置以便我们可以出售它&#xff1f; Apple 社区 对于…...

内网渗透的风行者—Yasso

Yasso &#xff1a; Yasso&#xff0c;让内网渗透变得简单而高效。- 精选真开源&#xff0c;释放新价值。 概览 Yasso是由sairson精心打造的内网渗透辅助工具集&#xff0c;它为网络安全专家和渗透测试人员提供了一个功能强大的工作平台。在面对错综复杂的网络环境时&#xff…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...