pgbackrest 备份工具使用 postgresql

为啥我会使用pgbackrest进行备份?因为postgresql没有自带的差异备份工具。。。而我们在生产环境上,一般都需要用到差异备份或者增量备份。我们的备份策略基本是,1天1次完整备份,1个小时1次差异备份。如果只需要完整备份,直接用pg_dump或者是pg_backbase加上linux的定时任务就可以了。

但是pgbackrest 也有不太好的地方,那就是pgbackrest 是针对整个数据库实例的备份,应对一个数据库实例多个数据库的不同备份策略时就一言难尽了。

1.安装pgbackrest

#添加pgBackRest的仓库:
curl -s https://raw.githubusercontent.com/pgbackrest/pgbackrest/master/src/bin/pgbackrest-repo-info | bash
#添加pgBackRest的APT仓库:
echo "deb [arch=$(dpkg --print-architecture)] http://apt.pgbackrest.org $(lsb_release -cs) $(lsb_release -cs)" | sudo tee /etc/apt/sources.list.d/pgbackrest.list
#导入仓库的GPG密钥:
wget -O - https://pgbackrest.org/pgbackrest.asc | sudo apt-key add -
#更新APT包索引:
sudo apt-get update
#安装pgBackRest:
sudo apt-get install pgbackrest

2.创建pgbackrest需要的文件目录

注意:命令中postgres:postgres,是为了授权给postgres用户权限,而且最好是用postgres用户,不然会遇到很多操作报无权限【因为postgresql在安装初始化的时候就自动创建了一个系统用户postgres,默认使用的也是postgres】

其实就2个文件夹,1个文件,其余的命令都是为了授权

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

3.修改postgresql.conf文件

需要开启wal日志归档

archive_mode = on
archive_command = 'pgbackrest --stanza=sportsdb archive-push %p'

4.编辑pgbackrest.conf文件

[sportsdb]是自定义的stanza实例名称,后面会用到

vim  /etc/pgbackrest/pgbackrest.conf

[sportsdb]
pg1-path= /var/lib/postgresql/16/main
pg1-user=postgres
pg1-port=5432

[global]
repo1-path=/var/lib/pgbackrest

5.创建pgbackrest存储库

--log-level-console=info 是为了在创建时在控制台打印日志,不写也行,就是不打印日志而已

pgbackrest --stanza=sportsdb --log-level-console=info create-stanza

6.检查存储库情况

pgbackrest --stanza=sportsdb --log-level-console=info check

 

7.备份

#全量备份

pgbackrest --stanza=sportsdb --log-level-console=info backup

#差异备份

 pgbackrest --stanza=sportsdb --log-level-console=info --type=diff backup

#增量备份

 pgbackrest --stanza=sportsdb --log-level-console=info --type=incr backup

8.查看备份情况

9.还原

还原之前要停止数据库服务,还原完毕后再重新启动服务

#这种还原备份需要先清理数据库集群目录,然后才能执行还原

pgbackrest --stanza=sportsdb --log-level-console=info restore

#加上 --delta ,pgBackRest 自动确定数据库集群目录中的哪些文件可以保留,哪些文件需要从备份中恢复 — 它还会删除备份清单中不存在的文件,以便处理不同的更改

pgbackrest --stanza=sportsdb --log-level-console=info --delta restore 

#基于时间线恢复,恢复到2024-05-08 16:55:46.230286+08之前的数据

pgbackrest --stanza=sportsdb --delta --type=time "--target=2024-05-08 16:55:46.230286+08" --log-level-console=info restore
 

注意:基于时间线恢复之后数据库会变成只读模式,需要执行select pg_wal_replay_resume(),参考http://www.postgres.cn/docs/10/recovery-target-settings.html

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

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

相关文章

「PHP系列」PHP DOM扩展库/SimpleXML 解析XML文档

文章目录 一、DOM介绍二、DOM扩展库解析XML1. 加载XML文档2. 访问DOM树3. 读取和修改节点数据4. 保存修改后的XML文档5. 注意事项: 三、SimpleXML解析XML1. 加载XML文档2. 访问XML数据3. 修改XML数据4. 保存修改后的XML文档5. 注意事项: 四、相关链接 一…

Linux setserial命令教程:如何配置与查询串口设备(附实例详解和注意事项)

Linux setserial命令介绍 setserial 是一个用于获取和设置Linux串口信息的程序。这些信息包括特定串口使用的I/O端口和IRQ,是否将中断键解释为安全注意键等。 Linux setserial命令适用的Linux版本 setserial命令在大多数Linux发行版中都可以使用,包括…

知识库文档系统源码部署/搭建/上线/运营/售后/更新

一款基于ThinkPHPFastAdmin开发的知识库文档系统,可用于企业工作流程的文档管理,结构化记录沉淀高价值信息,形成完整的知识体系,能够轻松提升知识的流转和传播效率,更好地成就组织和个人。为部门、团队或项目搭建知识库…

SVN 合并到 Git 时有文件大于 100 M 被限制 Push

如果有文件大小大于 100M,GitHub 是会被限制推送到仓库中的,大概率情况会显示下面的错误: remote: Resolving deltas: 100% (3601/3601), done. remote: error: Trace: aea1f450da6f2ef7bfce457c715d0fbb9b0f6d428fdca80233aff34b601ff59b re…

LeetCode 513.找树左下角的值

LeetCode 513.找树左下角的值 1、题目 题目链接:513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null…

服务端JavaScript(Node.js)与去IO编程:Node.js的事件驱动和非阻塞IO模型,它是如何使JavaScript走向后端的

在Node.js中,JavaScript代码运行在V8引擎上。由于JavaScript是单线程语言,一次只能处理一个事件。为了解决这个问题,Node.js引入了事件驱动模型。每个进行IO操作的函数都是异步的,当这个函数被调用的时候,它不会立即执…

基于单片机的医用辅助器械简析

摘 要:单片机在医用辅助器械中用途广泛,传感装置与单片机控制系统相结合可设计出满足更多需求的医用辅助器械。本文主要探究不同传感装置与单片机结合的优缺点,先从分析医用辅助器械的工作原理入手,说明传感装置的作用&#xff0…

用字符串初始化的指针

一. 简介 前一篇文章简单学习了数组与指针的区别,文章如下: C语言中数组与指针的区别-CSDN博客 本文学习一下 初始化为 字符串的 指针。防止使用过程中出现问题。 二. 初始化指针来指向字符串 初始化指针来指向字符串,例如如下代码就是…

SpringBoot 具体是做什么的?

Spring Boot是一个用于构建独立的、生产级别的、基于Spring框架的应用程序的开源框架。它的目标是简化Spring应用程序的开发和部署过程,通过提供一种快速、便捷的方式来创建Spring应用程序,同时保持Spring的灵活性和强大特性。 1. 简化Spring应用程序开…

信安标委发布16项网络安全国家标准:8项为旧标准替代,8项标准为新发布

1. 背景 根据2024年4月25日国家市场监督管理总局、国家标准化管理委员会发布的中华人民共和国国家标准公告(2024年第6号),全国网络安全标准化技术委员会归口的16项国家标准正式发布。 2. 标准清单 本次国家标准涵盖了信息技术安全评估准则、…

AScript纯本地离线文字识别插件

目的 AScript是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。但按键精灵是不包含图色功能,无法识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要讲解下…

苹果M4芯片:推动AI时代的革新力量

随着科技的飞速发展,苹果公司一直以其创新精神引领着行业潮流。其中,M4芯片的推出无疑是苹果在人工智能领域迈出的重要一步。这款专为机器学习和AI计算而设计的芯片,不仅在新款iPad Pro等消费电子产品上亮相,更是预示着苹果即将开…

C语言通过main函数的第三个参数取出所有的环境变量

概述 main函数实际上有三个参数&#xff0c;其中第三个参数存储的也是环境变量表的起始地址。 基础示例 示例代码&#xff1a;通过main函数的第三个参数查看环境变量表 #include <stdio.h>int main(int argc, char* argv[], char* envp[]){extern char** environ;pri…

数据库的使用基础-SQL语句

一、在MYSQL中&#xff0c;创建数据库&#xff0c;语法如下&#xff1a; CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];[ ]中的内容是可选的。语法说明如下&#xff1a; <数据库…

Mybatis入门之在基于Springboot的框架下拿到MySQL中数据

介绍 Java技术操作数据库 MyBatis是一款优秀的持久层框架 用于简化JDBC的开发 优秀的持久层框架 我们要基于Springboot整合Mybatis 实操 学习 基于Mybatis是如何操作数据库的 通过MyBatis书写SQL语句 SQL语句执行完毕后 会将查询结果返回给Java程序 表中数据会自动封装…

BroadcastChannel:跨标签页通信

目前浏览器跨标签页通信的方式有很多&#xff0c;比如&#xff1a;websocket、针对LocalStorage使用window.onstorage、window.postmessage。 本文将用BroadcastChannel实现同一域名下两个标签页间消息的收和发 一、全局创建通信通道 const channel new BroadcastChannel(cha…

​​​【收录 Hello 算法】5.1 栈

目录 5.1 栈 5.1.1 栈的常用操作 5.1.2 栈的实现 1. 基于链表的实现 2. 基于数组的实现 5.1.3 两种实现对比 5.1.4 栈的典型应用 5.1 栈 栈&#xff08;stack&#xff09;是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子…

Java面试——MyBatis

优质博文&#xff1a;IT-BLOG-CN 一、MyBatis 与 JDBC 的区别 【1】JDBC 是 Java 提供操作数据库的 API&#xff1b;MyBatis 是一个持久层 ORM 框架&#xff0c;底层是对 JDBC 的封装。 【2】使用 JDBC 需要连接数据库&#xff0c;注册驱动和数据库信息工作量大&#xff0c;每…

HTTP协议介绍

文章目录 http协议http协议格式GET请求POST请求http客户端实现 http协议 http协议是应用层协议&#xff0c;一般建立在tcp协议的基础之上&#xff08;当然你的实现非要基于udp也是可以的&#xff09;&#xff0c;也就是说http协议的数据收发是通过tcp协议的。 http协议也分为h…

Kivy UI界面

一、版本介绍 Ubuntu&#xff1a;18.04.6 LTS Conda&#xff1a;4.5.12 Python&#xff1a;3.6.15 Kivy&#xff1a;2.0.0 二、安装Kivy # 更新系统包列表 sudo apt-get update# 安装Kivy的依赖项 sudo apt-get install -y python-pip libsdl2-dev libsdl2-image-dev li…