环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7,UOS(海光),UOS (飞腾),UOS(鲲鹏),银河麒麟svs(X86_64),银河麒麟 (X86_64),银河麒麟(龙芯)svs,银河麒麟(飞腾)svs,银河麒麟 (飞腾),银河麒麟 (海光),银河麒麟 (鲲鹏),中科方德 (海光),中科方德 (X86_64)
版本:9.0.5,9.0.4,9.0.3,6.0.4.1,6.0.4,9.0,9.0.1,6.0,4.5.10,4.5.11,4.5.8.9,4.5.8.5,4.5.8,4.5.7

文档用途

瀚高数据库基于 PostgreSQL 内核,pg_basebackup 是进行在线物理备份的核心工具,能够在不影响数据库正常运行的情况下创建完整的数据库基础备份。瀚高数据库部署时会根据现场要求部署自动备份,本文主要介绍如何检查当前备份状态与备份策略查看。

详细信息

一、查找备份脚本所在位置

不同环境下备份脚本的存放位置可能不同,首先需要确认当前环境使用的备份脚本路径。

1.1 通过 crontab 定时任务查找
备份脚本通常通过 crontab 定时执行,查看 crontab 是定位脚本路径的最直接方式:

# 查看当前用户的定时任务
crontab -l | grep -i backup

输出示例:

30 00 * * * /opt/highgo/hgdb_backup.sh 

从中可获取脚本绝对路径(如 /opt/highgo/hgdb_backup.sh)。

若定时任务配置在 highgo 用户下:

su - highgo -c "crontab -l | grep -i backup"

二、查看备份策略

找到备份脚本后,通过脚本内容和 crontab 配置了解当前备份策略。

2.1 查看脚本中的备份路径和策略参数

脚本顶部包含所有可配置参数,查看方式:

head -40 /path/to/hgdb_backup.sh | grep -E "^[a-z_]+="

关键参数说明:

参数含义示例值
backup_db_cluster全量备份存放根目录/data/highgo/hgdbbak
archdir归档 WAL 存放路径/data/highgo/hgdbbak/archive
num备份保留份数3
hguser备份使用的数据库用户sysdba
PORT数据库端口5866
PGHOME数据库安装目录/opt/highgo/hgdb-see-4.5.8
master_db_cluster数据文件路径/data/highgo/data
istar是否打包为 tar 包no
iscompressed是否压缩备份no
re_bak是否启用冗余备份no
rebak_num冗余备份保留份数4

通过 backup_db_cluster 参数可确认备份文件的存放路径。

2.2 查看定时任务确认执行频率

crontab -l | grep -i backup

输出示例:

30 00 * * * /opt/highgo/hgdb_backup.sh 

从中可获取:

  • 执行时间策略:如每天 00:30 执行

2.3 查看数据库归档配置(辅助确认)

grep -E "archive_mode|archive_command" $PGDATA/postgresql.auto.conf

或

psql -U sysdba -d highgo -c "show archive_mode;" -c "show archive_command;"
  • archive_mode = on:归档开启(备份必需)
  • archive_command:应与脚本中 archdir 路径一致

三、备份状态检查方法

备份脚本每次执行会生成两个文件:

  • 备份数据目录:hgdbbak_YYYYMMDD_份数(例:hgdbbak_20260625_1)
  • 备份日志文件:hgdbbak_YYYYMMDD_份数.log(例:hgdbbak_20260625_1.log)

说明:命名格式中最后一位代表当天的第几次备份。例如 6 月 25 日第一次备份为 hgdbbak_20260625_1,6 月 25 日第二次备份为 hgdbbak_20260626_2。

备份目录结构示例:

/data/highgo/hgdbbak/
├── hgdbbak_20260623_1/
├── hgdbbak_20260624_1/
├── hgdbbak_20260625_1/
├── hgdbbak_20260623_1.log
├── hgdbbak_20260624_1.log
├── hgdbbak_20260625_1.log
└── archive/

3.1 检查备份日志文件(首选方式,信息最完整)

# 查看当天备份日志(以 6 月 25 日为例)
cat /data/highgo/hgdbbak/hgdbbak_20260625_1.log

正常备份日志关键内容示例:

2026-06-25 00:30:06     Database is not recovering and can be connected , so can be backup now.
2026-06-25 00:30:06 pg_basebackup will go now
pg_basebackup: 开始基础备份,等待检查点完成
pg_basebackup: 已完成检查点
pg_basebackup: 预写日志起始于时间点: 0/48000028, 基于时间轴1
pg_basebackup: 启动后台 WAL 接收进程
pg_basebackup: 已创建临时复制槽"pg_basebackup_1349846"
    0/29670 kB (0%), 0/1 表空间
29679/29679 kB (100%), 0/1 表空间
29679/29679 kB (100%), 1/1 表空间
pg_basebackup: 预写日志结束点: 0/48000100
pg_basebackup: 等待后台进程结束流操作...
pg_basebackup: 同步数据到磁盘...
pg_basebackup: 基础备份已完成
2026-06-25 00:30:07 The name of the backup file is :hgdbbak_20260625_25,the name of the archive is:000000010000000000000048.00000028.backup
2026-06-25 00:30:07 Archiving before 000000010000000000000048 is being deleted.
2026-06-25 00:30:07 Deleting archive file /app/highgo/hgdbbak/archive/000000010000000000000048.00000028.backup
2026-06-25 00:30:07 Deleting backup file /app/highgo/hgdbbak/hgdbbak_20260624_24
2026-06-25 00:30:07 Deleting backup log /app/highgo/hgdbbak/hgdbbak_20260624_24.log

判断备份成功的标志:

✅ 出现 pg_basebackup: 基础备份已完成
✅ 进度达到 100%
✅ 显示备份文件名称和归档文件名称
✅ 无 ERROR 或 FATAL 关键字

3.2 检查归档目录是否有新 WAL 文件

ls -lt /data/highgo/hgdbbak/archive/ | head -10

正常情况:最近几分钟内或当天有新的 WAL 文件生成,且存在与日志中对应的 .backup 文件。

3.4 检查备份保留数量是否符合策略
脚本中 num 参数控制备份保留份数,日志中的 Deleting backup file 表明旧备份正在被清理。

# 统计当前备份目录数量(不含日志文件)
ls -d /data/highgo/hgdbbak/hgdbbak_20* 2>/dev/null | grep -v ".log" | wc -l

该数量应与 num 参数值一致。

相关文档

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐