首页 > 数据库 >PostgreSQL pgBackRest 是最好的PG备份工具 ? (深入一些疑难问题 2)

PostgreSQL pgBackRest 是最好的PG备份工具 ? (深入一些疑难问题 2)

时间:2023-10-30 17:01:59浏览次数:29  
标签:10 PostgreSQL postgres -- pg1 PG 2023 pgbackrest pgBackRest


PostgreSQL  pgBackRest 是最好的PG备份工具 ? (深入一些疑难问题 2)_hive


每天感悟

突然想愤怒的时候,或别人认为你应该愤怒的时候,你不在愤怒,而是能理智的或冰冷的分析出为什么,原因是什么,并且尝试把自己放到他的位置去看明白原理或根本,恭喜你又升级了

上次在安装和简单的实现了备份后,产生了很多的问题,基于这些问题我们持续的开始针对pgbackrest进行研究和发现里面的一些问题。

本期提出一些问题

1  执行文件,日志文件等是否可以在编译的时候进行改变文件存储的目录位置

2  配置文件中的配置通过TCP/IP的方式来访问数据库是否可以

3  配置文件中的global 的一些配置信息的细节和参数的解释

4   增量备份恢复是否能进行制定增量备份恢复的时间点

基于以上的问题,我们来开始,逐个解决这些问题

1 第一个问题关于三个位置,1 执行文件的位置, 2 日志文件的位置  3 配置文件的位置,在编译中需要指定执行文件所在的目录

./configure --prefix=/usr/local/pgbackrest

[root@postgresql13 src]# make install
install -d /usr/local/pgbackrest/bin
install -m 755 pgbackrest /usr/local/pgbackrest/bin

日志的位置需要在配置文件中指定,配置文件需要在执行命令进行标注如下,下面验证了相关的可以实现的部分和方案

PostgreSQL  pgBackRest 是最好的PG备份工具 ? (深入一些疑难问题 2)_oracle_02

pgbackrest --config=/etc/pgbackrest/pgbackrest.conf --stanza=test --type=full backup
[test]
pg1-path=/pgdata/data
pg1-port=5432
pg1-socket-path=/tmp

[global]
repo1-path=/pgbackrest/backup
repo1-retention-full=2
log-path=/pgbackrest
log-level-console=info
log-level-file=debug


[global:archive-push]
compress-level=3

问题1 已经解决,下面问题2 ,关于配置文件中的一些global的信息的问题,下面我们来进行解决

1  连接数据库选项

--pg-host 

2  设置pgbackrest 命令执行的位置

--pg1-host-cmd 

3  设置配置文件的位置

--pg1-host-config

4  设置数据库的访问端口

--pg1-port

5  数据目录位置

--pg1-path

6  本地数据库socket端口

--pg-socket-path

7  数据库用户

--pg-user

这里开始回答问题2 ,实际上问题2 中的一个部分困扰了我2天的时间,一直不得期间,我一直尝试解决这个问题,但一直在备份中报错,后来发现是不是我的配置出现问题,而是我的概念出现问题。

我先把错误粘出来

2023-10-19 11:30:05.475 P00   INFO: check command begin 2.48: --exec-id=58063-f272e790 --log-level-console=info --pg1-database=postgres --pg1-host=192.168.198.100 --pg1-host-config=/etc/pgbackrest/pgbackrest.conf --pg1-host-config-path=/etc/pgbackrest --pg1-path=/pgdata/data --pg1-port=5432 --pg1-socket-path=/tmp --pg1-user=pgbackrest_user --repo1-path=/pgbackrest --stanza=test
2023-10-19 11:30:07.241 P00   INFO: check repo1 configuration (primary)
2023-10-19 11:30:07.648 P00   INFO: check repo1 archive for WAL (primary)
ERROR: [082]: WAL segment 000000010000000100000027 was not archived before the 60000ms timeout
       HINT: check the archive_command to ensure that all options are correct (especially --stanza).
       HINT: check the PostgreSQL server log for errors.
       HINT: run the 'start' command if the stanza was previously stopped.
2023-10-19 11:31:07.652 P00   INFO: check command end: aborted with exception [082]
ERROR: [072]: archive-push command must be run on the PostgreSQL host
2023-10-19 19:42:33.858 CST [57618] LOG:  archive command failed with exit code 72
2023-10-19 19:42:33.858 CST [57618] DETAIL:  The failed archive command was: pgbackrest --stanza=test archive-push pg_wal/000000010000000100000026
ERROR: [072]: archive-push command must be run on the PostgreSQL host
2023-10-19 19:42:34.883 CST [57618] LOG:  archive command failed with exit code 72
2023-10-19 19:42:34.883 CST [57618] DETAIL:  The failed archive command was: pgbackrest --stanza=test archive-push pg_wal/000000010000000100000026
2023-10-19 19:42:34.883 CST [57618] WARNING:  archiving write-ahead log file "000000010000000100000026" failed too many times, will try again later

实际上的原因是我误会pgbackrest的功能了,其中配置参数中有-pg-host在备份中有些配置并不是在本地PG数据库上部署的,而是进行集中化备份实现而设置的,所以配置也分管理节点和本地数据库节点。

1  本地数据库节点,不能带有pg-host 这是为远程控制节点而设置的,不是本地的配置

2  本地配置了错误的远程控制的配置后,就会出现上面的错误。

3  本地备份的账号尽力单独设置,在pg_hba.conf 对这个账号访问数据库尽力trust 。

所以,第二个问题可以直接回答,远程必须通过TCP/IP访问,而如果是本地则是NO。

问题 3 关于global 里面的部分配置信息

[global]

buffer-size=16MiB

这部分值不能进行随意的设置值在最大不能超过16MB

最小在16kb,默认这部分主要使用在文件的copy 压缩,加密,以及其他的操作中使用的缓冲

Allowed values are 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB, and 16MiB

repo1-path=/pgbackrest/backup

这部分是备份文件的存储位置,这里我们统一认为是本地的文件位置

compress-type=gz

备份文件的压缩中份不同的等级,其中支持的压缩 bz2 9 个等级  gz 6个等级 LZ4 默认等级  zst 3个等级,这里我们选择常用的gz 并且选择了3这个等级

config-path=/etc/pgbackrestpgbackrest.conf

配置文件位置

delta=y 

备份和恢复文件采用checksums

--dry-run 是否打开命令行中运行--dry-run的开关

io-timeout=120 

这里由于pgbackrest里面的备份存储设备可以是S3 或其他设备,则这里需要针对IO读取设置超时的部分范围在 0.1 - 3600 秒

process-max=4

是否采用更多的线程来对数据库的工作进行操作,这里默认是1 ,不要设置太大,太大会在备份是影响数据库的运行。

repo1-retention-full=2

这个repo1-retention-full=2是必须要进行设置的,不设置的情况下会软件会给出警告,在设置后相关的repo1-retention-full 中的与之相关的其他的增量和差异备份,也会在过期后被清理出去。

log-path=/pgbackrest

log-level-console=info

log-level-file=debug

[global:archive-push]

compress-level=3

下面我们来到了问题4 ,在使用pgbackrest后,做了全备后我们删除了某个数据逻辑库或表是否可以通过备份进行恢复,回答是可以的,但必须保证pgbackrest 的归档是是正常的,否则就会出现无法进行的情况。在进行操作中也发现了一些其他的问题。

pgbackrest 的值得研究部分还很多,例如如何设置集中管理,通过软件进行多套postgresql的备份工作,这才是这个软件的对比pgrman的优点所在。

postgres=# create database test1;
CREATE DATABASE
postgres=# create table test1 (id int);
CREATE TABLE
postgres=# 
postgres=# insert into test1 (id) values (1);
INSERT 0 1
postgres=# checkpoint;
CHECKPOINT
postgres=# select now();
              now              
-------------------------------
 2023-10-22 04:14:34.741778+00
(1 row)

postgres=# delete from test1;
DELETE 1
postgres=# select now();
             now              
------------------------------
 2023-10-22 04:14:55.79462+00
postgres@pg15:/pgdata/data$ pgbackrest --config=/etc/pgbackrest/pgbackrest.conf --log-level-console=info --stanza=test   --type=time "--target=2023-10-22 04:14:35" restore
2023-10-22 04:17:16.784 P00   INFO: restore command begin 2.48: --config=/etc/pgbackrest/pgbackrest.conf --exec-id=74643-c32bcb6e --log-level-console=info --pg1-path=/pgdata/data --repo1-path=/pgbackrest --stanza=test --target="2023-10-22 04:14:35" --type=time
2023-10-22 04:17:16.804 P00   INFO: repo1: restore backup set 20231022-040310F, recovery will start at 2023-10-22 04:03:10
2023-10-22 04:17:19.124 P00   INFO: write updated /pgdata/data/postgresql.auto.conf
2023-10-22 04:17:19.131 P00   INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started)
2023-10-22 04:17:19.132 P00   INFO: restore size = 42.2MB, file total = 1641
2023-10-22 04:17:19.133 P00   INFO: restore command end: completed successfully (2354ms)
Name    |  Owner   | Encoding | Collate | Ctype | ICU Locale | Locale Provider |
   Access privileges   
-----------+----------+----------+---------+-------+------------+-----------------+
-----------------------
 dvdrental | pgadmin  | UTF8     | C       | C     |            | libc            |
 
 postgres  | postgres | UTF8     | C       | C     |            | libc            |
 
 template0 | postgres | UTF8     | C       | C     |            | libc            |
 =c/postgres          +
           |          |          |         |       |            |                 |
 postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     |            | libc            |
 =c/postgres          +
           |          |          |         |       |            |                 |
 postgres=CTc/postgres
 test      | postgres | UTF8     | C       | C     |            | libc            |
 
 test1     | postgres | UTF8     | C       | C     |            | libc            |
 
(6 rows)

postgres=# \c test1
You are now connected to database "test1" as user "postgres".
test1=# select * from test1;
 id 
----
  1
(1 row)

PostgreSQL  pgBackRest 是最好的PG备份工具 ? (深入一些疑难问题 2)_数据库_03

PostgreSQL  pgBackRest 是最好的PG备份工具 ? (深入一些疑难问题 2)_配置文件_04

标签:10,PostgreSQL,postgres,--,pg1,PG,2023,pgbackrest,pgBackRest
From: https://blog.51cto.com/u_14150796/8095478

相关文章

  • PostgreSQL pgBackRest 是最好的PG备份工具 ? (小试牛刀 1)
    之前备份的工具一直在使用PGRMAN,潮流变化了,现在最新最推崇的PG备份软件是pgBackRest,今天来探究一下到底为什么他是目前最推崇的备份软件。根据GITHUB的介绍,pgbackrest目标是一个可信赖的容易使用的备份和恢复工具和一体化的解决方案,针对大型的数据库和多负载的情况下的选择,目前写......
  • 卡普空计划明年3月前发布大型新作,引发PG-SOFT 电子游戏玩家猜测
    卡普空发布的财报在上周,其中提到了一项备受关注的消息,即他们计划在下半财政年度(截止到2024年3月)推出一款大型新作。这一消息在PG-SOFT电子游戏界引发了猜测,宝石侠游戏试玩家们纷纷猜测这个新作是庆祝《怪物猎人》20年的力作,尤其是在《怪物猎人世界》之后,还是《生化危机8》之后的新......
  • PostgreSQL(kingbaseES) 中,可以使用 unnest 函数将一个包含多个值的字符串分割成多行
    在PostgreSQL中,您可以使用unnest函数将一个包含多个值的字符串分割成多行。unnest函数将一个数组(或者像我们的情况下是由STRING_TO_ARRAY函数生成的数组)展开为多行数据。假设您有一个表my_table,其中包含一个名为my_column的字符串列,其内容如下:my_column-----------......
  • 微软Xbox主机将推出韧体更新,为PG用户供便捷的电子游戏设置功能
    微软即将发布一次重要的韧体更新,特别面向Xbox主机,其中的主要功能包括控.制器键盘配置、Clipchamp集成以及用户偏好的诊断数据共享。首先,这次更新将引入新的键盘配置功能,允许玩家将XboxElite无线控.制器Series2和Xbox自适应控.制器的按键映射至键盘上。在XboxAccessories应用程序......
  • PostgreSQL数据库toast表数据损坏处理
    一、pg_statistic的toast表数据损坏问题现象在安装插件的时候使用\dx元命令的时候,突然发现报了一个错误:postgres=#\dxERROR:missingchunknumber0fortoastvalue32789inpg_toast_2619根据提示来看,主表字段还留存着ToastPointer,但Toast表中已经没有对应的Chunk条目,怀疑t......
  • postgresql数据库经纬度转geometry
    postgresql数据库经纬度转geometry1、在postgresql数据库中,如果字段类型是geometry,更新该字段为经纬度(坐标),可以尝试采取以下脚本:注意:108.658463代表经度34.1437代表纬度中间没有逗号updatetablesetgeom=ST_GeomFromText('POINT(108.65846334.1437)',4490)wh......
  • Git 提交时提示 GPG 签名错误
    本来应该一切都是正常的,但今天提交的时候提示GPG签名错误。错误的信息就是GPG签名失败。 gpg:skipped"942395299055675C":Nosecretkeygpg:signingfailed:Nosecretkeyerror:gpgfailedtosignthedatafatal:failedtowritecommitobject  解决方案开始认......
  • [ME]Backup, upgrade & installation
    Backup,upgrade&installationServiceDeskPlus>Support>FAQ>Backup,upgrade&installationSeeforCloudGeneralModuleHowdoImanuallybackupdatainServiceDeskPlus?HowdoIbackuponlythedatabasewithoutthefileattachmentsinServ......
  • szfpga 详细:高云1N1开发板高云gowin软件使用教程
     1.概述  国产FPGA是最近几年起来的产品,具有性价比高特点。高云FPGA,大多用在LED,电机控制,PLC设备上。 高云1N1开发板采用GW1N-LV1QN48C6/I5FPGA器件。具有低功耗,瞬时启动,高安全性,低成本,方便扩展等特点。价格便宜,易扩张,帮助用户快速进入国产FPGA学习。开发板集成多......
  • PostgreSQL内存管理-内存上下文
    PostgreSQL8.4.1内存管理共享内存中存储着所有进程的公共数据,例如锁变量、进程通信状态、缓冲区等。而本地内存为每个后台进程所专有,是它们的工作区域,存储了该进程的Cache(高速缓存)、事务管理信息、进程信息等。为了防止多个进程并发访问共享内存中数据时产生冲突,PostgreSOL......