首页 > 数据库 >PGSQL-备份和恢复-增量备份-开启wal归档、并设置定时清理备份之后的wal文件

PGSQL-备份和恢复-增量备份-开启wal归档、并设置定时清理备份之后的wal文件

时间:2024-09-23 08:51:01浏览次数:1  
标签:pgsql 13 wal 备份 PGSQL pg var archive

 

 一、增量备份

定期对数据库做基础备份,再配合WAL的归档日志,可实现再较短时间将数据库恢复

 开启WAL 归档

创建归档目录

[root@s101 /var/lib/pgsql/13]#ls

archive_wals

backups

scripts

wal归档 记录  touch  pg_archive_logs

[root@s101 /var/lib/pgsql/13/archive_wals]#cat  pg_archive_logs
the old backup file not exists!

 

开启WAL 归档

 

方法1)按天一个文件wal归档

1.配置文件参数设置

[root@s101 /var/lib/pgsql/13/data]#nano postgresql.conf

wal_level = replica

# minimal, replica, or logical


archive_mode = on             

# enables archiving; off, on, or always


archive_command = '/bin/bash /var/lib/pgsql/13/scripts/pg_archive.sh %p %f'

  # command to use to archive a logfile segment
  # placeholders: %p = path of file to archive
  # %f = file name only
  # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'

2.归档执行脚本 

pg_archive.sh

[root@s101 /var/lib/pgsql/13/scripts]#cat pg_archive.sh

#!/bin/bash
source /var/lib/pgsql/.bash_profile

DATE=`date +%Y%m%d`
DIR="/var/lib/pgsql/13/archive_wals/$DATE"
BACK="/var/lib/pgsql/13/archive_wals/"`date -d '-20 day' +%Y%m%d`
if [ -d "$BACK" ]; then
                rm -rf $BACK
                echo "success rm $BACK" > /var/lib/pgsql/13/archive_wals/pg_archive_logs
        else
                echo "the old backup file not exists!" > /var/lib/pgsql/13/archive_wals/pg_archive_logs
fi

(test -d $DIR || mkdir -p $DIR) && cp $1 $DIR/$2

 

方法二)归档文件放在一个文件中(目前使用的方法)

1.配置文件参数设置

[root@s101 /var/lib/pgsql/13/data]#nano postgresql.conf


wal_level = replica # minimal, replica, or logical

archive_mode = on               # enables archiving; off, on, or always

#读取命令方式
archive_command ='test ! -f /var/lib/pgsql/13/archive_wals/%f && cp %p /var/lib/pgsql/13/archive_wals/%f'

 

#重新启动数据库
sudo systemctl restart postgresql-13

 

说明:配置参数

wal_level 、 archive_mode 需要重启数据库
archive_command  不需要重启数据库,只需要再次加载就可以

 

reload配置文件

select pg_reload_conf();

 

查看 archive_command 

show archive_command

 

 开启定时清理 -pg_archivecleanup — 清理PostgreSQL WAL 归档文件

修改配置文件 postgresql.conf

archive_cleanup_command = '/bin/bash /var/lib/pgsql/13/scripts/pg_archivecleanup.sh %r 2>>/var/lib/pgsql/13/scripts/cleanup.log'

执行脚本

[root@s101 /var/lib/pgsql/13/scripts]#nano pg_archivecleanup.sh

#!/bin/bash

ARCHIVEDIR='/var/lib/pgsql/13/archive_wals/'
CHKPOINT=$(find $ARCHIVEDIR -type f -mtime +3 -name '*backup' -printf '%f\n' | sort -r | head -1)
cd $ARCHIVEDIR
/usr/pgsql-13/bin/pg_archivecleanup  -x .00000028.backup  $ARCHIVEDIR $CHKPOINT

find $ARCHIVEDIR -type f -mtime +1 -a -name '*backup' -a ! -newer $CHKPOINT -delete

 

常用命令 

 查看数据目录 show data_directory;

 是否开启归档 show archive_mode; 

 

--查看日志目录所有文件select * from pg_ls_logdir();

--查看/data目录下的文件select pg_ls_dir('/data');

 

输出数据库WAL目录的所有文件

--输出文件总大小,单位是byte   select sum(size) from pg_ls_waldir();    select sum(size)/1024/1024   as  "文件大小(M)"   from pg_ls_waldir(); 

--查看WAL文件数量,单个wal日志文件大小默认为16MB。 select count(*) from pg_ls_waldir();     select count(*)*16  as "文件大小(M)"    from pg_ls_waldir();

 

查看运行日志的相关配置

show logging_collector;--启动日志收集

show log_directory;--日志输出路径

show log_filename;--日志文件名

show log_truncate_on_rotation;--当生成新的文件时如果文件名已存在,是否覆盖同名旧文件名

show log_statement;--设置日志记录内容

show log_min_duration_statement;--运行XX毫秒的语句会被记录到日志中,-1表示禁用这个功能,0表示记录所有语句,类似mysql的慢查询配置

 

查询当前lsn  (log sequence number)

--1、用到哪些方法select proname from pg_proc where proname like 'pg_%_lsn';proname--------------------------------- pg_current_wal_flush_lsn pg_current_wal_insert_lsn pg_current_wal_lsn pg_last_wal_receive_lsn pg_last_wal_replay_lsn

--2、查询当前的lsn值select pg_current_wal_lsn();

--3、查询当前lsn对应的日志文件select pg_walfile_name('2/81872298');

--4、查询当前lsn在日志文件中的偏移量SELECT * FROM pg_walfile_name_offset(pg_current_wal_lsn());

标签:pgsql,13,wal,备份,PGSQL,pg,var,archive
From: https://www.cnblogs.com/ataoxz/p/18426265

相关文章

  • pgsql 查看日志文件大小、数据目录、运行日志相关配置、当前lsn
    常用命令  查看数据目录 showdata_directory; 是否开启归档 showarchive_mode;  --查看日志目录所有文件select*frompg_ls_logdir();--查看/data目录下的文件selectpg_ls_dir('/data'); 输出数据库WAL目录的所有文件--输出文件总大小,单位是byte  select......
  • MySQL数据库备份和恢复
    一、MySQL数据库备份使用mysqldump命令(逻辑备份)语法备份单个数据库:mysqldump-uusername-pdatabase_name>backup_file.sql例如,如果要备份名为mydb的数据库,用户名为root,执行命令mysqldump-uroot-pmydb>mydb_backup.sql。然后系统会提示输入密码,输入正确密码......
  • 帝国备份王安装 /diguo 返回http500错误原因及解决方法
    当你在使用帝国备份王进行数据恢复时遇到/diguo路径返回HTTP500错误,这通常表示服务器端发生了某种错误。根据已有的信息,HTTP500错误的原因可能与PHP的配置有关,特别是short_open_tag的设置。HTTP500错误原因HTTP500错误通常表明服务器遇到了意料之外的情况,阻止了它完成请求......
  • 通过组合使用这些工具,您可以实现灵活的 WIM 备份和恢复方案。每个工具都有其特定功能,
    使用Windows的WIM(WindowsImagingFormat)备份和恢复可以通过命令行工具DISM(DeploymentImagingServiceandManagementTool)来实现。以下是一些常用的WIM备份和恢复命令参数示例:1. 备份(Capture)使用dism命令将系统映像备份为WIM文件:bashCopyCodedism/Cap......
  • 帝国cms数据库备份,导出的数据库 导入的时候各种错误
    在导入帝国CMS备份的数据库时遇到错误,这可能是由于多种原因造成的,比如数据库版本不兼容、SQL语法错误、权限问题等。以下是一些常见的错误及其解决办法:SQL语法错误如果遇到类似YouhaveanerrorinyourSQLsyntax这样的错误,可能是由于SQL语句不符合当前MySQL版本的规范。......
  • MySQL 数据库备份与恢复详解
    随着企业对数据依赖性的日益增加,确保数据库的安全与稳定至关重要。MySQL数据库作为开源数据库系统的代表,其备份与恢复能力直接关系到数据的安全性与业务的连续性。本文将结合最新的技术和工具,详细介绍MySQL的备份与恢复策略,帮助用户构建高效可靠的数据库管理方案。一、为什......
  • SkyWalking 环境搭建部署
    架构简介skywalkingagent:和业务系统绑定在一起,负责收集各种监控数据skywalkingoapservice:是负责处理监控数据的,比如接受skywalkingagent的监控数据,并存储在数据库中;接受skywalkingwebapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalkingoapservice通常......
  • RemoveCookieWall,Firefox 扩展
    您是否厌倦了网站上流行的横幅,以便您接受第三方cookie或结账?在这篇文章中,我解释了如何制作(并发布)一个firefox扩展以避免大多数网站出现这种情况信息此扩展的代码发布于https://github.com/jagedn/removecookiewall-addon您可以从https://addons.mozilla.org/es/firefox/addo......
  • 帝国cms备份和恢复 帝国cms恢复数据
    帝国CMS的备份和恢复功能可以帮助你在数据丢失或需要迁移网站时快速恢复数据。以下是详细的步骤,介绍如何进行帝国CMS的备份和恢复操作:帝国CMS备份数据通过帝国CMS后台备份登录帝国CMS后台:使用管理员账号登录帝国CMS后台。进入备份与恢复模块:在后台管理界面中找到“系统”菜......
  • 帝国CMS搬家以及帝国cms备份数据库方法
    利用帝国CMS后台的备份功能进行搬家是一种更为稳妥的方法,可以避免由于数据库版本不一致导致的乱码问题。这种方法不仅能够确保数据的完整迁移,还能保证数据库结构的一致性。下面是详细的步骤:方法/步骤1.备份现有数据库登录帝国CMS后台:使用管理员账号登录帝国CMS后台。进入系......