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

PostgreSQL basebackup备份和恢复

一、概述

备份和恢复分为逻辑和物理,这里指物理备份和恢复。

PG的物理备份依赖basebackup,这差不多就是数据目录的拷贝,还依赖归档日志。

恢复分为完全恢复和PITR恢复,它们都需要归档日志,它们关键的差别是,PITR需要设置postgresql.conf中的参数recovery_target_time,还有PITR时,PG服务器恢复完后是只读状态,需要手动执行select pg_wal_replay_resume(),这样,其实是让管理员确认,恢复是否满足期望。

二、备份

PG的物理备份使用命令pg_basebackup,具体命令用法我就不写了,最终结果和对数据目录进行文件系统拷贝差不多,当然,还是有不同的,pg_basebackup时,PG服务器不需要停止服务,备份过程数据库可能会有增删改,不过没关系,这些修改都在WAL中,且开启了full_page_write。pg_basebackup出来的目录中会有backup_label这个文件,表示这是个备份。

备份:

pg_basebackup -D my_basebackup -U<username> -h<host> -p<port>

三、恢复

恢复分完全恢复和按时间点恢复(PITR),注意,这里有个前提,就是运行、备份、恢复时是开启归档日志的,且都放在一个目录下。

1)完全恢复

简单的讲,完全恢复需要basebackup + 归档日志,这里有个小细节,就是停库时,可能最新的WAL文件还没有存到归档目录,所以最好能把原数据目录下pg_wal的内容复制到basebackup目录下pg_wal,basebackup目录下pg_wal的内容其实可以删掉。

当然这个basebackup要做一些处理,里面要创建一个recovery.signal文件,告诉PG服务器,启动后要做恢复,还要设置restore_command,告诉PG服务器从哪里取归档日志。

对于完全恢复,不可以设置recovery_target_time等表示恢复终止点的参数,PG服务器会一直取归档日志并恢复,直到找不到文件为止。

# 停库

pg_ctl -D _data stop

# 复制数据目录(restore)

mv _data _data_bkp

cp -r my_basebackup _data

# 这里有一点,就是,如果是完全恢复到最新状态的话,

# restore后目录的pg_wal目录清空,

# 原来数据目录_data下的pg_wal里的WAL文件要拷贝到restore后目录的pg_wal下,

# 这样做是考虑到有可能最新的WAL文件还没有存到归档目录。

# 设置恢复参数

touch recovery.signal

vim _data/postgresql.conf

restore_command = 'cp /mnt/server/archivedir/%f %p'

# 启动

pg_ctl -D _data start

2)按时间点恢复

和完全恢复差不多,也是需要basebackup + 归档日志,创建recovery.signal,但与完全恢复不同的是:还要设置recovery_target_time,可能还有recovery_target_timeline,PG服务器恢复完后,并不是立即进入可用状态,而是需要管理员手动执行select pg_wal_replay_resume(),这样可以给管理员机会调整恢复的时间,而不需要完全重新做一次恢复。

# 停库

pg_ctl -D _data stop

# 复制数据目录(restore)

mv _data _data_bkp

cp -r my_basebackup _data

# 设置恢复参数

touch _data/recovery.signal

vim _data/postgresql.conf

recovery_target_time = '2021-02-05 14:00:37+08'

restore_command = 'cp /mnt/server/archivedir/%f %p'

# 启动

pg_ctl -D _data start

select pg_wal_replay_resume();

# psql登录查看一下数据库状态,是否是想要的状态,

# 如果是,就执行pg_wal_replay_resume();

# 如果不是,就停库,再修改recovery_target_time (时间上只能往后修改)

# 再启动,最后确定数据库达到想要的状态,就执行select pg_wal_replay_resume();

# 完成恢复。

相关文章:

PostgreSQL basebackup备份和恢复

一、概述 备份和恢复分为逻辑和物理&#xff0c;这里指物理备份和恢复。 PG的物理备份依赖basebackup&#xff0c;这差不多就是数据目录的拷贝&#xff0c;还依赖归档日志。 恢复分为完全恢复和PITR恢复&#xff0c;它们都需要归档日志&#xff0c;它们关键的差别是&#xf…...

XTU-OJ 1248-Alice and Bob

Alice和Bob在玩骰子游戏&#xff0c;他们用三颗六面的骰子&#xff0c;游戏规则如下&#xff1a; 点数的优先级是1点最大&#xff0c;其次是6,5,4,3,2。三个骰子点数相同&#xff0c;称为"豹子"&#xff0c;豹子之间按点数优先级比较大小。如果只有两个骰子点数相同&…...

第四章 文件管理 十、文件系统的全局结构

目录 一、文件系统的建立 1、原始磁盘 2、物理格式化后 3、逻辑格式化后 二、文件系统在内存中的结构 三、系统调用背后的过程 一、文件系统的建立 1、原始磁盘 2、物理格式化后 物理格式化&#xff0c;即低级格式化――划分扇区&#xff0c;检测坏扇区&#xff0c;并用…...

【PythonGIS】基于高德Api实现批量地址查询经纬度

之前因为同事需要几千个小区的经纬度信息&#xff0c;所以就帮同事写了一段Python代码&#xff0c;通过调取高德地图的api实现地址查询经纬度这个功能。对于如何使用经纬度查询地址的方法&#xff0c;我之前分享过博文&#xff1a;【Python入门教程】获取图片可视化精准定位&am…...

vue数组中的变更方法和替换方法

变更方法&#xff1a; Vue 能够侦听响应式数组的变更方法&#xff0c;并在它们被调用时触发相关的更新。这些变更方法包括: push&#xff08;&#xff09;:在数组末尾添加一个或者多个元素&#xff0c;返回新的长度。 var arr [1, 2, 3, 4, 5]; // 定义一个数组 arr.push(6…...

Java - 工具类参数初始化

在做第三方接口调用时&#xff0c;经常需要根据不同的环境指定初始化的参数。以下做一个简单的记录。 一、使用static初始化 使用static初始化&#xff0c;仅会初始化一次&#xff0c;但无法从配置文件中获取参数。并且如果写了多个初始化工具类&#xff0c;会互相覆盖。 /**…...

一文搞懂 MineCraft 服务器启动操作和常见问题 2023年10月

文章目录 前言1. 新建文件夹2. 创建 bat 文件3. 编辑 bat 文件4. 启动服务器5. 恭喜完成 文章持续更新中&#xff0c;如果你有问题可以通过 qq 1317699264 获取免费协助&#xff0c;解决的问题将会被更新到本文章中 前言 无论你是使用服务端整合包&#xff0c;还是从上一篇我的…...

第2篇 机器学习基础 —(2)分类和回归

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。机器学习中的分类和回归都是监督学习的问题。分类问题的目标是将输入数据分为不同的类别&#xff0c;而回归问题的目标是预测一个连续的数值。分类问题输出的是物体所属的类别&#xff0c;而回归问题输出的是数值。本节课就…...

Java游戏修炼手册:2023 最新学习线路图

前言 有没有一种令人兴奋的学习方法&#xff1f;当然有&#xff01;绝对有&#xff01;而且我要告诉你&#xff0c;学习的快乐可以媲美游戏的刺激。 小学时代&#xff0c;我曾深陷于一款名为"八百万勇士的梦"的游戏。每当放学&#xff0c;我总是迫不及待地打开电脑&a…...

前端访问geoserver服务发生跨域的解决办法,以及利用html2canvas下载绘制的地图

我的业务场景: 需要利用html2canvas下载Openlayers绘制的地图。 预期:可以下载成图片甚至其他格式(svg)文件。 结果:下载下来是个空白图片。 排查错误:请求数据正常回显到页面上,利用html2canvas截取的时候会发生跨域,导致无法绘制。 首先处理tomcat跨域问题 第一步…...

Word docx转html和markdown

Pypandoc使用pandoc来进行各种文本格式的转换。 安装 # 不带pandoc执行库 pip install pypandoc# 自带pandoc pip install pypandoc_binary使用 import pypandoc# convert all markdown files in a chapters/ subdirectory. pypandoc.convert_file(chapters/*.md, docx, out…...

API商品数据接口调用爬虫实战

随着互联网的发展&#xff0c;越来越多的商家开始将自己的商品数据通过API接口对外开放&#xff0c;以供其他开发者使用。这些API接口可以提供丰富的商品数据&#xff0c;包括商品名称、价格、库存、图片等信息。对于爬虫开发者来说&#xff0c;通过调用这些API接口&#xff0c…...

【Python机器学习】零基础掌握GaussianProcessClassifier高斯过程

如何准确预测股票走势,从而在股市中获取更高的收益? 股市波动无常,预测股票走势对于投资者来说总是一个巨大的挑战。通常,人们会使用各种各样的方法和工具,但准确性始终是个问题。那么,有没有一种算法可以帮助解决这个问题呢? “高斯过程分类器(Gaussian Process Cla…...

SQL-正则表达式和约束

文章目录 主要内容一.正则表达式1.操作1代码如下&#xff08;示例&#xff09;: 2.操作2代码如下&#xff08;示例&#xff09;: 3.操作3代码如下&#xff08;示例&#xff09;: 4.操作4代码如下&#xff08;示例&#xff09;: 二.约束1.主键约束 2.自增长约束3.非空约束4.唯一…...

“人类高质量数据”如何训练计算机视觉模型?

人类的视觉系统可以复制吗&#xff1f; 答案是肯定的。 计算机视觉 (Computer Vision) 技术的不断普及&#xff0c;让机器识别和处理图像就像人的大脑一样&#xff0c;且速度更快、更准确。 机器像人类一样去“思考” 计算机视觉 (Computer Vision) 是近年来人工智能增长最快…...

ListenableFuture和countdownlatch使用example

ListenableFuture可以允许你注册回调方法(callbacks)&#xff0c;在运算&#xff08;多线程执行&#xff09;完成的时候进行调用, 或者在运算&#xff08;多线程执行&#xff09;完成后立即执行 import com.google.common.util.concurrent.*;import java.util.concurrent.Call…...

C- strtok() strtok_r()

strtok() strtok 是 C 语言库中的一个函数&#xff0c;用于在字符串上执行分词操作。这意味着它可以用于将字符串分解成多个标记或段&#xff0c;这些标记之间由指定的分隔符分隔。 以下是 strtok 函数的原型&#xff1a; char *strtok(char *str, const char *delim);参数&…...

order by数据过多引起的cpu飙升

测试环境 1.目前数据库类型为pg数据库2.目前数据库业务为共享数据库,为减少其他业务对本次测试的影响,故选在业务空闲时间执行3.服务器性能为8C 32GB 500GB硬盘 原程序测试结果 优化后程序结果 出现原因 当数据量大时&#xff0c;order by排序操作会消耗大量的CPU资源&#…...

namespace命名空间

namespace命名空间 什么是命名空间? namespace命名空间 同一个名称在不同的命名空间中所指向的对象是不同的 为什么要使用命名空间? 防止标识符的命名发生冲突 你写的代码中定义了个fun()函数 所使用的类库中也包含了一个fun()函数 当你的代码中调用fun()函数时 程序:?…...

golang中如何配置 sql.DB 以获得更好的性能

有很多很好的教程讨论 Go 的sql.DB类型以及如何使用它来执行 SQL 数据库查询和语句。但它们中的大多数都掩盖了SetMaxOpenConns()、SetMaxIdleConns()和SetConnMaxLifetime()方法——您可以使用它们来配置 的行为sql.DB并改变其性能。 在这篇文章中&#xff0c;我想准确解释这…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...