备份是指对Halo数据库或事务日志进行的复制,数据库备份记录了在进行备份操作时数据库中所有数据的状态,如果数据库因意外而损坏,这些备份文件将在数据库恢复时被用来恢复数据库。
逻辑备份与恢复
逻辑备份的原理是将数据库中的对象和数据转储成对应的SQL命令。通常我们使用pg_dump/pg_restore命令来完成逻辑备份和恢复。
假设我们要备份名为halotest的数据库,我们可以使用如下命令:
pg_dump -Fc -v -f halotest.dump halotest
假设我们需要对halotest进行恢复,我们可以使用如下命令:
pg_restore -v -C -d halo0root halotest.dump
物理备份与恢复
(一)完全备份
1.设置归档,修改postgresql.conf文件
archive_mode 设置为onarchive_command 归档命令。即复制 WAL 日志的命令。简单的命令可参考:test ! -f data/halo/pg_archive/%f && cp %p data/halo/pg_archive/%f

2.创建归档日志目录
mkdir data/halo/pg_archive
3.设置一个目录来存放备份文件,该目录需要进行初始化操作
mkdir -p /data/halo_backupchown halo:halo /data/halo_backup---配置环境变量vi /home/halo/.bash_profileexport BACKUP_PATH=/data/halo_backup---重载source /home/halo/.bash_profile
4.使用rman命令进行备份
rman initrman backup -b full -d halo0rootrman validaterman show detail --查看备份信息

(二)增量物理备份
增量备份即只备份变化的数据块和归档日志。
使用下面的命令即可完成增量备份
rman backup -b incremental -d halo0root
有效性检验
rman validate
查看备份信息
rman show detail
备份归档日志
顾名思义,即只备份归档日志文件。备份数据库需要消耗大量的I/O,因此我们不可能在业务时段进行数据库备份作业。通常会安排在业务低峰期,比如夜间进行数据库备份作业。但是如果只进行数据库备份,我们很可能会丢失较长一段时间内的数据,即RPO无法达到较好的值。通过合理备份归档,我们可以有效的降低RPO,这也是数据库备份很重要的一个环节。
rman backup -b archive -d halo0root --归档备份rman validate --有效性检验rman show detail --查看备份信息
备份恢复
(一)完全恢复
要进行数据库的完全恢复,前置条件是数据库已停止并且已完成备份。
1 将数据库停止运行
pg_ctl stop
2 使用rman命令将备份恢复
rman restore
3 启动数据库
pg_ctl start
(二)基于时间点的恢复
Halo的备份管理器也支持基于时间点的不完全恢复。前置条件需要已经做好完全备份及归档备份。例如,我们要将数据库恢复到2022-04-18 10:20:00,我们可以使用以下命令:
rman backup -b full -d halo0rootrman validaterman backup -b archive -d halo0rootrman validatepg_ctl stoprman restore --recovery-target-time '2022-04-01 11:26:00'pg_ctl start
文章转载自Halo Tech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




