一、要求概述
《JR/T 0205—2020分布式数据库技术金融应用规范灾难恢复要求》6级技术要求,完全数据备份至少每2天1次。 方案如下:
环境:CentOS7.9 + PostgreSQL17 Server
二、自动化全量数据备份
完全备份存储在本地数据中心的备份系统中,包括数据目录以及 WAL 日志,支持恢复到备份时刻。完全数据备份至少每2天1次,存档在异地数据中心进行灾备。
使用 pg_basebackup
1、设置时区
设置时区,确保你的系统时区设置正确
#查看当前时区:
timedatectl
#设置时区:
sudo timedatectl set-timezone Asia/Shanghai
#同步时钟
/usr/sbin/ntpdate -u time.pool.aliyun.com
#完成后,建议重启动操作系统复制
2、编写备份脚本
可放置在/usr/local/pgsql/bin/daily_backup.sh
#!/bin/bash
# 配置你的备份目录和数据库连接信息
BACKUP_DIR="/pgbackup"
PG_USER="postgres"
PG_HOST="127.0.0.1"
PG_DATABASE="testdb"
remote_ip="192.168.0.215"
remote_backupdir="/pgbackup"
# 创建备份目录
#su $PG_USER
sudo rm -rf "$BACKUP_DIR"
sudo mkdir -p "$BACKUP_DIR"
# 执行pg_basebackup
/usr/local/pgsql/bin/pg_basebackup -h "$PG_HOST" -U "$PG_USER" -D "$BACKUP_DIR" -Ft -z -P
scp -r "$BACKUP_DIR"/* root@"$remote_ip":"$remote_backupdir"复制
如果需要每次备份的内容都不同,可将上面的scp那一样换成以下两行
# 可压缩备份文件到上一级目录,并以时间命名
tar -czvf "$BACKUP_DIR"/data$(date +%Y%m%d_%H%M).tar.gz -P "$$BACKUP_DIR"
# 再将压缩的备份文件传到远程主机
scp "$BACKUP_DIR"/data*.tar.gz root@"$remote_ip":"$remote_backupdir"复制
3、更改权限
确保cron进程有执行脚本的权限
chmod +x daily_backup.sh复制
4、可信登录
编辑Pg_hba.conf
host all all 127.0.0.1/32 trust
host all all ::1/128 trust复制
5、远程复制免密
保障scp远程复制免登录
#在本地主机上生成SSH密钥对:
ssh-keygen -t rsa -b 4096
# 默认回车
#在本地主机上执行,将公钥添加到远程:
ssh-copy-id root@192.168.0.215复制
6、自动化备份
编辑定时任务,实现自动化完全备份。
sudo crontab -u root -e
#以下为文档内容
PATH=/usr/local/pgsql/bin:/usr/bin:/bin
0 0 */2 * * /usr/local/pgsql/bin/daily_backup.sh >> /var/log/daily_backup.log 2>&1复制
#查看cron任务是否执行?
cat /var/log/cron
#查看daily_backup执行是否有错?
cat /var/log/daily_backup.log复制
该方案可在不停机的情况,实现在每两天一次某个时点的数据库全量(完全)备份,备份时覆盖上次备份。
需要时可更改为压缩包的不覆盖式备份。
三、手动数据恢复
数据恢复到主机的步骤如下:
1、主机准备
#停止 PostgreSQL 服务
su postgres
/usr/local/pgsql/bin/pg_ctl stop -D /var/postgresql/data
#清理主机备份目录
su root
cd /
sudo rm -rf /pgbakcup
sudo mkdir /pgbakcup复制
2、将备机数据复制到主机
scp -r /pgbakcup/* root@192.128.0.172:/pgbackup
#192.128.0.216为主机IP复制
3、在主机上创建
mkdir pgcover
chmod 0700 /pgcover
chown -R postgres:postgres /pgcover复制
4、解压备份到恢复的目录
cd /pgbakcup/
tar -zxvf base.tar.gz -C /pgrecover/
tar -zxf pg_wal.tar.gz -C /pgrecover/pg_wal/复制
5、在主机上启动服务,查看恢复的数据
cd /usr/local/pgsql/bin
./pg_ctl start -D /pgrecover/
./psql
\c testdb;
select * from test_table;复制
确保在恢复前备份重要数据,以避免数据丢失。如果使用 WAL 归档,恢复的时间点可以灵活控制,确保数据恢复到预期的状态。
最后修改时间:2025-03-10 22:13:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
王炸!OGG 23ai 终于支持从PostgreSQL备库抽取数据了
曹海峰
418次阅读
2025-03-09 12:54:06
玩一玩系列——玩玩login_hook(一款即将停止维护的PostgreSQL登录插件)
小满未满、
381次阅读
2025-03-08 18:19:28
明明想执行的SQL是DELETE、UPDATE,但为什么看到的是SELECT(FDW的实现原理解析)
小满未满、
363次阅读
2025-03-19 23:11:26
PostgreSQL初/中/高级认证考试(3.15)通过考生公示
开源软件联盟PostgreSQL分会
316次阅读
2025-03-20 09:50:36
IvorySQL 4.4 发布 - 基于 PostgreSQL 17.4,增强平台支持
通讯员
207次阅读
2025-03-20 15:31:04
套壳论
梧桐
201次阅读
2025-03-09 10:58:17
命名不规范,事后泪两行
xiongcc
188次阅读
2025-03-13 14:26:08
PG vs MySQL 执行计划解读的异同点
进击的CJR
129次阅读
2025-03-21 10:50:08
版本发布| IvorySQL 4.4 发布
IvorySQL开源数据库社区
120次阅读
2025-03-13 09:52:33
宝藏PEV,助力你成为SQL优化高手
xiongcc
119次阅读
2025-03-09 23:34:23