【无标题】为什么 pg_rewind 在 PostgreSQL 中很重要?
文章目录
- pg_rewind 的工作原理
- 使用 pg_rewind 的要求
- Basic Usage of `pg_rewind`
- 重要注意事项:
- 为什么 pg_rewind 需要干净关闭?
- 无法进行干净关闭的情况
- 处理不正常关机
- 结论
pg_rewind 是 PostgreSQL 中的一个实用程序,用于将一个数据库集群与另一个数据库集群同步,通常是在故障转移或主服务器和备用服务器角色切换之后。
当旧主服务器需要在故障转移后作为备用服务器重新加入新的主服务器时,它特别有用。
pg_rewind 的工作原理
发生故障转移时,新的主服务器可能会与旧的主服务器(现在成为备用服务器的候选服务器)产生分歧。
pg_rewind 通过仅复制差异(即更改的块)而不是重新同步整个数据库,有效地使旧主服务器的数据文件与新主服务器的数据文件保持同步。
与完全重新同步相比,此过程更快,占用的带宽更少。
使用 pg_rewind 的要求
- WAL archive或replication slot:旧主服务器必须具有足够的 WAL 日志可用来覆盖自分歧以来的时间段。这可以使用 WAL archive或replication slot来管理。
- 兼容版本:旧主服务器和新主服务器上的 PostgreSQL 版本必须相同或兼容,
pg_rewind才能工作。 - clean关闭:在运行
pg_rewind之前,应干净地关闭旧主服务器。
Basic Usage of pg_rewind
要使用“pg_rewind”,请遵循以下常规步骤:
- 停止旧主服务器:确保旧主服务器已clean stop。
- 运行“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 中正常运行,通常需要干净关闭旧的主服务器。以下是这很重要的原因:
干净关闭的重要性:
-
数据一致性:干净关闭可确保所有待处理事务都已完成,并且数据库处于一致状态。这意味着所有数据更改都已完全写入数据文件,并且 WAL(预写日志)已正确刷新。
-
检查点:在干净关闭期间,PostgreSQL 会执行检查点,这是一个将所有脏页(已修改的页面)从缓冲区缓存写入磁盘并记录特殊 WAL 记录以指示一致时间点的过程。
此检查点对于“pg_rewind”至关重要,因为它标记了可以跟踪更改并向前或向后滚动的状态
3. 避免数据损坏:如果服务器没有干净地关闭,可能会有未正确写入磁盘的不完整或损坏的数据。
在这种情况下,pg_rewind 可能无法准确确定旧主服务器和新主服务器之间的差异,从而导致潜在的数据损坏。
无法进行干净关闭的情况
在某些情况下,可能无法进行干净关闭,例如:
- 突然的硬件故障
- 系统崩溃
- 意外断电
注意:在这些情况下,失效主节点的数据目录可能包含未提交的事务或部分写入的数据,这使得其不能立即安全使用或与 pg_rewind 进行同步。
处理不正常关机
如果旧的主服务器没有干净地关闭,可能需要采取额外的步骤:
- 手动检查:检查日志和数据文件以评估数据库的状态。
- 数据恢复:您可能需要使用其他恢复工具或技术,例如从备份中恢复或谨慎使用
pg_resetwal工具来重置 WAL 并使数据目录再次可用。 - 风险增加:请注意,在非干净关闭后使用
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 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 public int[] intersection(int[] nums1, int[] nums2) {ArrayList<Integer> list new ArrayList<>();Has…...
Metasploit漏洞利用系列(八):MSF渗透测试 - PHPCGI漏洞利用实战
在本系列的第八篇文章中,我们将深入探索如何利用Metasploit Framework (MSF) 来针对PHPCGI (PHP Common Gateway Interface) 的漏洞进行渗透测试。PHPCGI作为一种将Web服务器与PHP脚本交互的方式,其不恰当的配置或老旧版本中可能存在的漏洞常被攻击者利用…...
基于python的主观题自动阅卷系统设计与实现
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
计算机毕业设计仪器设备管理系统-折旧-报废-转移-借出-归还
本文主要阐述如何采用利用网络数据库技术,在信息管理系统中合理的进行管理。在全面解析系统的设计理念以及设计手段,将系统进程中的所需的工具以及技术进行综合的设计,重点解析信息管理情况以及自动化管理进程,主要包括࿱…...
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)
文章目录 加速方法:Numba、CuPy、PyTorch、PyCUDA、Dask、Rapids一、Numba简介二、Numba类型:CPU GPU三、项目实战 —— 数组的每个元素加23.1、使用 python - range 循环计算 —— (时耗:137.37 秒)3.2、使用 python…...
electron 两个渲染进程之间通信
一、使用主进程作为中介 使用主进程作为中介相对较为灵活,但可能会增加主进程的负担 1. 从一个渲染进程向主进程发送消息 在发送消息的渲染进程中,可以使用 ipcRenderer 模块向主进程发送消息。例如: const { ipcRenderer } require(&qu…...
配置ROS环境
1.检测环境变量 运行printenv | grep ROS命令,有如下返回值则表示环境变量配置正确: 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. 最长连续序列
题目描述 我的思路 我的思路比较暴力,就是首先将数组从小到大进行排序,然后再依次遍历判断序列是否连续并时时更新连续序列的最长长度。比如示例1:nums [100, 4, 200, 1, 3, 2],第一步先将数组进行排序得到sort_nums [1, 2, 3,…...
Stable Diffusion AI绘画工具的安装与配置(MAC用户)
AI绘画的热潮席卷了整个创意行业,Stable Diffusion作为其中的翘楚,让艺术创作变得前所未有的简单。然而,对于使用Mac电脑用户来说,安装和配置Stable Diffusion可能显得有些棘手。别担心,这份详细的教程将手把手教你如何…...
flowable源码解读——并行多实例节点任务是否是顺序生成
最近在项目开发中需要在多实例开始监听里修改一个全局的计数变量,不太确定并行多实例任务在底层引擎是顺序生成还是并行生成的,如果是顺序生成的则不影响,如果是并行生成 则修改一个全局的计数变量就会出现数据错误问题,查阅了flo…...
【机器学习】AGI的基本概念、技术挑战和应用前景
引言 AGI是指机器能够完成人类能够完成的任何智力任务的能力 文章目录 引言一、什么是AGI1.1 AGI,Artificial General Intelligence(通用人工智能)1.2 AGI的定义和标准1.3 AGI的发展 二、AGI的技术挑战2.1 理解人类智能2.2 认知复杂性2.3 自主…...
flink 使用RocksDB作为状态后端
RocksDB flink在生产环境中常用RocksDB作为状态后端 1、subtask在taskmanager中作为一个线程运行,如果设置了RocksDB状态后端,RocksDB也会启动一个独立的线程,供subtask来使用。 2、RocksDB是一个kv数据库,因此只能存储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单片机设计的打地鼠游戏机 演示视频: 基于51单片机设计的打地鼠游戏机 功能描述:使用 51单片机为核心制作一个打地鼠游戏机。按下启动开关,8盏LED流水点亮并闪烁2次,随即开始播放游戏音乐,直到开始选择模式。选…...
iPhone设备使用技巧:忘记密码的情况下如何解除iOS 18/17屏幕时间
我们给了儿子一部新手机。在尝试擦除旧手机上的所有内容并恢复出厂设置时,它要求提供 4 位屏幕时间密码。我已经尝试了我们会使用的所有可能性,但无法弄清楚。我们如何绕过这个问题或将手机恢复出厂设置以便我们可以出售它? Apple 社区 对于…...
内网渗透的风行者—Yasso
Yasso : Yasso,让内网渗透变得简单而高效。- 精选真开源,释放新价值。 概览 Yasso是由sairson精心打造的内网渗透辅助工具集,它为网络安全专家和渗透测试人员提供了一个功能强大的工作平台。在面对错综复杂的网络环境时ÿ…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
