【无标题】为什么 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精心打造的内网渗透辅助工具集,它为网络安全专家和渗透测试人员提供了一个功能强大的工作平台。在面对错综复杂的网络环境时ÿ…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
