postgresql13定时备份,增量备份 liunx/windows10

postgresql定时备份,增量备份

**

注:
1. 以下命令大都是root用户登录输入,有问题请查看是否是权限问题
2.中文为方便理解,实际操作不要在里面写中文
3.路径请根据对应数据库安装位置修改

**

一: 开启日志归档

1: 配置文件修改
vim /home/postgresql/bin/postgresql.conf
#开启日志归档
wal_level = replica
archive_mode = on
#归档日志压缩存入 /home/postgresql/db/back/ %f是文件名,不需要改
archive_command = ‘bzip2 < %p > /home/postgresql/db/back/%f.bz2’
max_wal_senders = 10
hot_standby = on

可直接加入恢复时所需的配置,data文件夹下没有recovery.signal文件就不会启动恢复模式
#恢复时配置,从/home/postgresql/db/back/下读取日志
restore_command = ‘bunzip2 < /home/postgresql/db/back/%f.bz2 > %p’
#恢复到几点
recovery_target_time = ‘2021-7-08 11:17:00’
#最新
recovery_target_timeline = ‘latest’

备份
2: 防止备份失败,可先授予postgres用户权限
chown -R postgres:postgres /home/postgresql
chmod -R 700 /home/postgresql

3: 输入以下命令
#登录postgres用户
su postgres
#切换到数据库目录
cd /home/postgresql
#备份到 /home/postgresql/db/7-8 下,这个文件夹只能为空!
rm -rf /home/postgresql/db/7-8/*
#备分到 /home/postgresql/db/7-8
pg_basebackup -D /home/postgresql/db/7-8 -v -P

**

热备份脚本,每日定时执行备份

注 : 定时备份为每日备份数据库,实际上增量备份只需要备份一次数据库,之后会自动将日志归档到指定文件夹中,data下pg_wal下每条日志写满16.8MB会自动归档,也可手动触发归档 : psql postgres -c “select pg_switch_wal()” , 恢复时会自动从归档目录读取文件

1.编写定时脚本
vim /home/backup/pgsql/bin/backup.sh

#!/bin/bash  
DATE=$(date '+%Y%m%d');
PG_HOME=/home/postgresql
PG_BACK=/home/postgresql/db/back
PG_BACKDATA=/home/postgresql/db/backdata

#START BACKUP
echo "chown -R postgres:postgres /home/postgresql chmod -R 700 /home/postgresql------------------------"
chown -R postgres:postgres $PG_HOME
chmod -R 700 $PG_HOME

echo "rm -rf /home/postgresql/db/backdata/* rm -rf /home/postgresql/db/back/*--------------------------"
rm -rf $PG_BACKDATA/*
rm -rf $PG_BACK/*

echo "START BACKUP...............pg_basebackup -D /home/postgresql/db/backdata-------------------------" 
cd $PG_HOME
su postgres <<!
echo "back -------------------------"
pg_basebackup -D /home/postgresql/db/backdata
exit $?
!
echo "BACKUP  END"

2.加入定时任务(多长时间执行一次,例子是每天8:00执行一次)
crontab -e
00 08 * * * /home/backup/pgsql/bin/backup.sh

查看定时任务
crontab -l

二: 恢复数据

留存当前数据库内容
mv /home/postgresql/data /home/postgresql/old_data_$(date ‘+%Y%m%d’)
1.将基本备份的数据copy并改名到data
mkdir /home/postgresql/data
cp /home/postgresql/db/7-8 /home/postgresql/data
2.有这个文件才会启动恢复模式,文件内不必有内容,归档完成会改名为recovery.signa
touch “/home/postgresql/data/recovery.signal”

4. 配置文件修改
vim /home/postgresql/data/postgresql.conf
#恢复时配置,从/home/postgresql/db/back/下读取日志
restore_command = ‘bunzip2 < /home/postgresql/db/back/%f.bz2 > %p’
#恢复到几点
recovery_target_time = ‘2021-7-08 11:17:00’
#最新
recovery_target_timeline = ‘latest’

5.防止启动失败,可先授予postgres用户权限

chown -R postgres:postgres /home/postgresql
chmod -R 700 /home/postgresql

6.启动数据库会以恢复模式启动
#备份文件生成是什么时间,恢复的时间只能比备份文件晚而不能比备份文件早!
/usr/pgsql-13/bin/pg_ctl -D /home/postgresql/data -l logfile start

恢复脚本(确定配置文件不需要更改再用)
以上为基本原理,如果配置文件不需要更改,可使用以下脚本
vim /home/backup/pgsql/bin/wal.sh

cd /home/postgresql

echo "mv data old_data--------------------------------------------------------------------------------"
mv /home/postgresql/data /home/postgresql/old_data_$(date '+%Y%m%d')

echo "mkdir /home/postgresql/data---------------------------------------------------------------------"
mkdir /home/postgresql/data

echo "cp -r /home/postgresql/db/backdata/*  /home/postgresql/data-------------------------------------"
cp -r /home/postgresql/db/backdata/*  /home/postgresql/data

echo "touch /home/postgresql/data/recovery.signal---------------------------------------------------"
touch "/home/postgresql/data/recovery.signal"

echo "chown -R postgres:postgres /home/postgresql chmod -R 700 /home/postgresql-----------------------"
chown -R postgres:postgres /home/postgresql
chmod -R 700 /home/postgresql

echo "/usr/pgsql-13/bin/pg_ctl -D /home/postgresql/data -l logfile start------------------------------"
su postgres <<!
/usr/pgsql-13/bin/pg_ctl -D /home/postgresql/data -l logfile start
exit $?
!

Windows10版备份恢复

流程和liunx一样,只是操作略微不同

备份

配置文件修改(其它同上面) :
备份归档:
archive_command = ‘copy “%p” “C:\java\postgresql\back\pg_wal\%f”’
恢复:
restore_command = ‘copy “C:\java\postgresql\back\pg_wal\%f” “%p”’

命令(不需要登录postgres用户,直接指定即可) :
开始备份(需要手动输入密码):
pg_basebackup -U postgres -D C:\java\postgresql\back\data -v -P
在这里插入图片描述
流程和liunx一样
备份就是修改配置文件,然后直接输入命令

恢复

1.修改data文件夹名保存原数据,也可能不是data,以实际为准
2.将备份数据复制过来,文件名为数据库名(data)
3.在data下创建recovery.signal
4.恢复时需要设置用户权限,默认启动并不是以管理员启动服务,所以先设置权限
在这里插入图片描述

5.启动服务,手动或者在管理-服务中点击启动都行

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL 13增量备份是一种备份策略,可以通过备份数据库中变化的数据,以节省备份存储空间和备份时间。它与全量备份相对应,全量备份备份整个数据库,而增量备份备份发生变化的部分。 在进行增量备份之前,首先需要进行一次全量备份。全量备份备份整个数据库的数据和表结构,并创建一个基准备份点。之后的增量备份会以这个基准备份点为起点,只备份最近一次全量备份后发生的变化。 增量备份的原理是通过WAL(Write-Ahead Log)来实现的。WAL是一种记录数据库中所有修改操作的日志文件。当进行增量备份时,系统会检查WAL文件中从上次备份到现在的所有修改,并将这些修改记录转化为相应的数据文件,从而实现增量备份增量备份的优点是可以显著减少备份的时间和存储空间。由于只备份发生变化的部分,相比全量备份增量备份的数据量通常要小得多。此外,恢复时也更加高效,只需要先恢复最新的全量备份,然后应用增量备份中的变化即可。 然而,增量备份也有一些限制和注意事项。首先,增量备份需要依赖WAL日志,因此确保WAL日志的可靠性非常重要。其次,增量备份的恢复过程较为复杂,需要按照备份的顺序依次应用增量备份中的变化,同时保证备份的完整性和正确性。 总的来说,PostgreSQL 13增量备份是一种高效的备份策略,可以减少备份的时间和存储空间,但在使用时需要注意相关的限制和注意事项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值