原文链接:https://www.gbase.cn/community/post/4363
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
在当今信息化社会,数据的重要性不言而喻。对于企业来说,保护数据的完整性和可用性至关重要。数据库作为数据存储的核心组件,其备份与恢复策略的制定和实施是保障数据安全的关键一环。本文将详细介绍南大通用GBase 8c数据库的增量备份实践操作,帮助读者掌握如何高效、可靠地进行数据备份,确保数据的安全性和业务的连续性。
一、备份策略概述
在进行GBase 8c数据库的备份之前,首先需要确定合适的备份策略。根据业务需求和数据重要性,可以选择完全备份或增量备份。
- 完全备份指备份所有数据。
- 增量备份仅备份自上次备份以来发生变更的数据。
完全备份具有更高的容灾可用性,而增量备份能够节省时间和存储空间,特别适合于数据量大且更改频繁的环境。
二、准备工作
在执行增量备份之前,应确保数据库运行正常,并关闭不必要的应用程序以减少备份过程中的干扰。同时,检查备份存储设备的容量是否充足,以及网络连接是否稳定。
三、配置增量备份
1. 打开参数enable_cbm_tracking,跟踪数据页的变化
登录数据库查看并设置该参数为on:
show enable_cbm_tracking;
alter system set enable_cbm_tracking=on;
2. 初始化备份目录
创建备份路径,以 /home/gbase/backup为例
gs_probackup init -B /home/gbase/backup
查看备份路径:
tree -L 3 /home/gbase/backup
3.添加备份实例
语法:
gs_probackup add-instance -B backup-path ## 备份路径
-D pgdata-path ## 数据目录路径
--instance=instance_name ## 实例名(自定义)
[-E external-directories-paths] ## 需要备份的其他目录
[--remote-proto=protocol] ## 远程操作的协议(仅支持SSH)
[--remote-host=destination] ## 远程主机IP或主机名
[--remote-path=path] ## 远程主机的gs_probackup安装目录
[--remote-user=username] ## 远程主机SSH连接的用户
[--remote-port=port] ## 远程主机SSH连接的端口(默认22)
[--ssh-options=ssh_options] ## SSH命令行参数
[--help] ## 显示帮助信息
执行添加实例命令,例如:
gs_probackup add-instance -B /home/gbase/backup -D /opt/database/install/data/dn --instance gs_bak2023_inst
查看备份文件:
gs_probackup show -B /home/gbase/backup
4.执行全备和增量备
全量和增量备份语法格式均参考如下参数:
gs_probackup backup -B backup-path --instance=instance_name [-D pgdata-path]
-b backup-mode ## 备份模式:FULL(全量备份)/PTRACK(增量备份)
[-C] ## -C指定检查点模式为spread(周期调度),默认为fast快速完成
[-S slot-name] [--temp-slot] ## -S指定物理复制slot名称(默认pg_probackup_slot) ,--temp-slot为WAL流处理创建临时物理复制slot,确保备份过程中所需的WAL段仍然可用
[--backup-pg-log] ## 备份日志目录(默认不备份)
[-j threads_num] ## 并行线程数
[--progress] ## 显示进度
[--no-validate] ## 完成备份后跳过自动验证
[--skip-block-validation] ## 关闭块级校验,加快备份速度
[-E external-directories-paths] ## 需要备份的其他目录
[--no-sync] ## 不将备份文件同步写入磁盘,提升写入性能
[--note=text] ## 备份的注释
[--archive-timeout=timeout] ## 以秒为单位设置流式处理的超时时间(默认300)
[--log-level-console=log-level-console] ## 设置要发送到控制台的日志级别,默认为info,设置off可以关闭
[--log-level-file=log-level-file] ## 设置要发送到日志文件的日志级别,默认off
[--log-filename=log-filename] ## 指定要创建的日志文件的文件名(strftime模式示例:pg_probackup-%u.log),默认pg_probackup.log
[--error-log-filename=error-log-filename] ## error日志的日志文件名
[--log-directory=log-directory] ## gs_probackup的日志目录
[--log-rotation-size=log-rotation-size] ## gs_probackup的日志大小(默认单位KB,支持KB、MB、GB、TB),超过阈值后进行循环,默认0(禁用)
[--log-rotation-age=log-rotation-age] ## 单个日志文件的最大生命周期(默认单位min,支持ms, s, min, h, d),默认0表示禁用基于时间的循环
[--delete-expired] ## 删除不符合pg_probackup.conf配置文件中定义的留存策略的备份
[--delete-wal] ## 删除不需要的WAL文件
[--merge-expired] ## 将满足留存策略要求的最旧的增量备份与其已过期的父备份合并
[--retention-redundancy=retention-redundancy] ## 留存的完整备份数(默认0,禁用此设置)
[--retention-window=retention-window] ## 留存的天数(默认0,禁用此设置)
[--wal-depth=wal-depth] ## 每个时间轴上必须留存的执行PITR能力的最新有效备份数(默认0,禁用此设置)
[--dry-run] ## 显示所有可用备份的当前状态,不删除或合并过期备份
[--ttl=interval] ## 从恢复时间开始计算,备份要固定的时间量(支持单位:ms, s, min, h, d(默认为s))
[--expire-time=time] ## 备份固定失效的时间戳(例如:--expire-time='2020-01-01 00:00:00+03')
[--compress-algorithm=compress-algorithm][--compress-level=compress-level][--compress] ## 压缩参数:压缩算法(zlib/pglz/none)/压缩级别(0~9,默认1)/压缩(相当于zlib算法+1压缩级别)
[-d dbname] [-h host] [-p port] [-U username] [-w] [-W password] ## 连接信息:数据库名/主机名/端口/用户/密码
[--remote-proto=protocol] [--remote-host=destination]
[--remote-path=path] [--remote-user=username]
[--remote-port=port] [--ssh-options=ssh_options]
[--help]
(1) 例如执行全量备份:
gs_probackup backup -B /home/gbase/gs_bak2021 --instance gs_bak2021_inst -b full -D /gauss/data/db1 -d mydb -p 26000 --progress \
例如返回如下信息:
> --log-directory=/home/gbase/gs_bak2021/log --log-rotation-size=10GB --log-rotation-age=30d --log-level-file=info --log-filename=full_20210111.log \
> --retention-redundancy=2 \
> --compress \
> --note='This is full backup set.'
(2) 执行增量备份,例如执行:
gs_probackup backup -B /home/gbase/gs_bak2021 --instance gs_bak2021_inst -b PTRACK -D /gauss/data/db1 -d mydb -p 26000 --progress \
例如返回如下信息:
> --log-directory=/home/gbase/gs_bak2021/log --log-rotation-size=10GB --log-rotation-age=30d --log-level-file=info --log-filename=incr2_20210111.log \
> --delete-expired --delete-wal \
> --retention-redundancy=2 \
> --compress \
> --note='This is the second incremental backup set.'
5.全量恢复,例如执行:
gs_probackup restore -B /home/gbase/backup/backup2023/ --instance=pg_test -D /opt/database/install/data/dn -i S6S7HT --progress -j 4
其中,-i指定备份文件ID,S6S7HT即为全备的ID。
四、备份数据的管理与维护
1. 定期检查备份数据的有效性,通过恢复测试来验证备份文件的可靠性。
2. 对备份数据进行加密处理,提高数据安全性。
3. 实施备份数据的异地存储策略,以防灾难发生时本地数据全部丢失。
增量备份减少了备份所需的时间和资源,提高了备份效率。但是,在恢复数据时,需要先恢复最近的完全备份,再依次恢复之后的每个增量备份,这可能会延长恢复时间。通过对南大通用GBase 8c数据库进行增量备份的实践操作,可以有效地保证数据的安全,同时提升备份的效率。然而,任何备份策略都需要结合具体的业务场景和数据特点来定制,以确保数据保护方案的最优化。
原文链接:https://www.gbase.cn/community/post/4363
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。