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,一经查实,立即删除!

相关文章

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

一款基于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…

用字符串初始化的指针

一. 简介 前一篇文章简单学习了数组与指针的区别,文章如下: 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等消费电子产品上亮相,更是预示着苹果即将开…

数据库的使用基础-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程序 表中数据会自动封装…

​​​【收录 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…

定时任务执行 报错command not found 解决方案

目录 写在前面所需知识 问题复现解决方式方法1. 使用绝对路径的命令&#xff1a;方法2. 重新加载环境变量&#xff1a;成功解决截图 原理 写在前面 定时任务脚本出现command not found报错&#xff0c;解决方案。 所需知识 定时任务shell脚本环境变量 问题复现 编写了一个…

Neo4j 之安装和 CQL 基本命令学习

正常使用结构化的查询语言 SQL&#xff08;Structured Query Language&#xff09;较多一些&#xff0c;但是像 Neo4j 这种非结构化的图形数据库来说&#xff0c;就不得不学习下 CQL&#xff08;Cypher Query Language&#xff09;语言了。如果你之前学过 《离散数学》或《图论…

开源高性能的分布式时序数据库:Lindb

Lindb&#xff1a;为大数据时代量身打造的高性能时序数据库&#xff0c;让海量数据存储与实时分析触手可及。- 精选真开源&#xff0c;释放新价值。 概览 Lindb 是一款开源的分布式时序数据库&#xff0c;它以其高性能和可伸缩性在海量数据存储及快速查询计算方面展现出独特的…

Vue 中动态与静态处理 Element UI/Element Plus 组件禁用状态样式

目录 一、静态样式修改 - 使用 ::v-deep 穿透组件样式二、选择器的优先级和匹配顺序三、动态添加样式 - 使用 Vue 实例属性&#xff08;非推荐&#xff09;四、区别总结五、应用场景总结 本文主要探讨在 Vue.js 项目中&#xff0c;特别是搭配 Element UI 或 Element Plus 组件库…

将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 4

第十三章 车联网 数字化设备正变得越来越普遍并且相互联系。这些设备向数字生态系统智能部分的演进创造了迄今为止尚未解决安全问题的新颖应用。一个特定的例子是车辆&#xff0c;随着车辆从简单的交通方式发展到具有新的感知和通讯功能的智能实体&#xff0c;就成为智能城市的…

Leecode438:找到字符串中所有字母异位词

做这道题的过程中遇到了很多问题&#xff0c;但其实都是自己不够仔细导致的。这道题的思想归根结底就是维护一个滑动窗口&#xff0c;然后在滑动的过程中不断维护不断判断&#xff0c;直到移到最后端然后返回一个维护好的list列表。