前言
数据备份是保护数据安全的重要手段之一,数据库的备份与恢复是数据库管理员维护数据安全性和完整性的重要操作。PanWeiDB 数据库支持二种备份恢复类型,以及多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。
备份与恢复类型
包括逻辑备份与恢复、物理备份与恢复、闪回恢复三种。
逻辑备份/恢复
逻辑备份是从数据库中导出数据并写入一个输出文件,该文件的格式与原数据库的文件格式不同,只是原数据库中数据内容的一个映像。逻辑备份时可以指定导出的对象,包括表定义、数据、模式等,也可以导出所有数据库相关信息。逻辑备份通过逻辑导出对数据进行备份,只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。
| 备份类型 | 应用场景 | 支持的介质 | 工具名称 | 恢复时间 | 优点 | 缺点 |
|---|---|---|---|---|---|---|
| 逻辑备份与恢复 | 适合于数据量小的场景。可以备份单表和多表,单database或所有database 。备份后的数据需要使用 gsql 或者pw_restore 工具恢复。数据量大时,恢复时间较长。 | 磁盘 SSD | pw_dump | 纯文本格式数据恢复时间长。归档格式数据恢复时间中等。自定义归档格式恢复时间比纯文本格式的恢复时间短。 | · 可灵活选择导出信息,支持用户自定义导出一个数据库或其中的对象(模式、表、视图等)。· 导出的数据库可以是默认数据库postgres,也可以是自定义数据库。· 支持多种导出格式。 | 备份格式指定为纯文本格式时,数据只能通过gsql 工具进行恢复,恢复时间较长。 |
| 逻辑备份与恢复 | 适合于数据量小的场景。可以备份单表和多表,单database或所有database 。备份后的数据需要使用 gsql 或者pw_restore 工具恢复。数据量大时,恢复时间较长。 | 磁盘 SSD | pw_dumpall | 数据恢复时间长。 | 可以导出PanWeiDB数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及PanWeiDB所有数据库公共的全局对象。 | 只能导出纯文本格式的数据,导出的数据只能通过 gsql进行恢复,恢复时间较长。 |
物理备份/恢复
物理备份是通过对数据库的物理文件(如数据、日志文件等)进行拷贝的方式对数据库进行备份。当数据库发生故障时,可以使用这些备份文件进行还原。通过备份的数据文件及归档日志等文件,可以对数据库进行完全恢复。
| 备份类型 | 应用场景 | 支持的介质 | 工具名称 | 恢复时间 | 优点 | 缺点 |
|---|---|---|---|---|---|---|
| 物理备份与恢复 | 适用于数据量大的场景,主要用于全量数据备份恢复,也可对整个数据库中的WAL 归档日志和运行日志进行备份。 | 磁盘 SSD | pw_basebackup | 恢复时可以直接拷贝替换原有的文件,或者直接在备份的库上启动数据库,恢复时间快。 | 备份原理是对服务器数据库文件的二进制进行全量拷贝,因此只能对数据库某一个时间点的时间作备份。 | 不支持增量备份。结合PITR 恢复,可以恢复到全量备份时间点后的某一时间点。 |
| 物理备份与恢复 | 适用于数据量大的场景,主要用于全量数据备份恢复,也可对整个数据库中的WAL 归档日志和运行日志进行备份。 | 磁盘 SSD | pw_probackup | 恢复时可以直接恢复到某个备份点,在备份的库上启动数据库,恢复时间快。 | · 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump 文件等。 · 支持增量备份、定期备份和远程备份。增量备份时间相对于全量备份时间比较短,只需要备份修改的文件。 · 当前默认备份是数据目录,如果表空间不在数据目录,需要手动指定备份的表空间目录进行备份。 |
· 若备份时发生错误,备份程序并不会完全结束并退出,导致无法继续执行备份操作。 · 严格依赖归档备份的有效性,如果其中一个备份集失效,则恢复失败。 |
闪回恢复
利用回收站的闪回恢复删除的表。回收站功能会将删除的表信息保存到回收站中。利用 MVCC 机制闪回恢复到指定时间点或者 CSN 点。
| 备份类型 | 应用场景 | 支持的介质 | 工具名称 | 恢复时间 | 优点 | 缺点 |
|---|---|---|---|---|---|---|
| 闪回恢复 | 1)误删除表的场景; 2)需要将表中的数据恢复到指定时间点或者CSN。 |
磁盘 SSD | flashback | 可以将表的状态恢复到指定时间点或者是表结构删除前的状态,恢复时间快。 | 闪回技术能够有选择性的高效撤销一个已提交事务的影响,从人为错误中恢复。在采用闪回技术之前,只能通过备份恢复、PITR 等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 | 基于 MVCC多版本的数据恢复和基于回收站的恢复都需要通过配置参数来控制数据保留时间,超出时间范围的数据无法使用闪回恢复。 |
备份与恢复工具的使用
逻辑备份/恢复
pw_dump
pw_dump可以创建四种不同的导出文件格式,通过-F或者–format=选项指定,
| 格式名称 | -F的参数值 | 说明 | 建议 | 对应导入工具 |
|---|---|---|---|---|
| 纯文本格式 | p | 纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。 | 小型数据库,一般推荐纯文本格式。 | 使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件 |
| 自定义归档格式 | c | 一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。 | 中型或大型数据库,推荐自定义归档格式。 | 使用pw_restore可以选择要从自定义归档/目录归档/tar归档导出文件中导入相应的数据库对象。 |
| 目录归档格式 | d | 该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 | - | 使用pw_restore可以选择要从自定义归档/目录归档/tar归档导出文件中导入相应的数据库对象。 |
| tar归档格式 | t | tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。 | - | 使用pw_restore可以选择要从自定义归档/目录归档/tar归档导出文件中导入相应的数据库对象。 |
说明:可以使用pw_dump工具将文件压缩为目录归档或自定义归档导出文件,减少导出文件的大小。生成目录归档或自定义归档导出文件时,默认进行中等级别的压缩。pw_dump程序无法压缩已归档导出文件。pw_dump在使用过程中有很多注意事项,具体参考官方手册。
pw_dumpall
pw_dumpall在导出PanWeiDB所有数据库时分为两部分:
- pw_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组、表空间以及属性(例如,适用于数据库整体的访问权限)信息。
- pw_dumpall通过调用pw_dump来完成PanWeiDB中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。
以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件即可恢复PanWeiDB数据库。
物理备份/恢复
pw_basebackup
只能做全量备份,配合pitr可以把数据库恢复到最新时间点。
pw_basebackup -D <backup-path> -h <ip地址> -p <port>
pw_probackup
全量备份
1、初始化备份实例。 pw_probackup init -B <backup-path> 2、添加一个新的备份实例。 pw_probackup add-instance -B <backup-path> -D <data_directory> --instance panweibak 3、进行全量备份。全量备份的内容包含测试表table_01的三条数据。 pw_probackup backup -B <backup-path> --instance panweibak -b full
增量备份
pw_probackup backup -B <backup-path> --instance panweibak -d panweidb -b PTRACK
恢复
pw_probackup show -B <backup-path> pw_ctl stop pw_probackup restore -B <backup-path> --instance panweibak -D <恢复目的地> -i <备份集id> pw_ctl start -D <恢复目的地>
关于作者:
网名:飞天,墨天轮2024年度优秀原创作者,拥有 Oracle 10g OCM 认证、PGCE认证以及OBCA、KCP、ACP、磐维等众多国产数据库认证证书,目前从事Oracle、Mysql、PostgresSQL、磐维数据库管理运维工作,喜欢结交更多志同道合的朋友,热衷于研究、分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同探讨~~~




