备份恢复工具命令参考
本附录列出 Halo 备份与恢复相关工具的全部命令与选项,包括逻辑备份恢复工具(pg_dump、pg_dumpall、pg_restore)与物理备份恢复管理器(RMAN2)。
- B.1 pg_dump:单个数据库的逻辑备份。
- B.2 pg_dumpall:整个数据库集群(含全局对象)的逻辑备份。
- B.3 pg_restore:逻辑恢复(恢复
pg_dump生成的备份)。 - B.4 RMAN2:物理备份与恢复管理器。
说明: B.1 ~ B.3 的完整参数表尚在核对整理中(以 Halo 自带工具的实际
--help输出为准,含 Halo 专属参数),将在后续版本补全。当前请参阅各工具的--help输出或备份与恢复中的常用示例。
pg_dump(逻辑备份)
pg_dump 将一个数据库转储为纯文本文件或其他格式,用于单个数据库的逻辑备份。
本节基于 Halo 1.0.16 所附带的 pg_dump 1.0.16.11 版本编写。不同版本间命令行参数可能略有差异,可用 pg_dump --version 查看实际版本。
使用格式:
pg_dump [选项]... [数据库名字]
一般选项:
| 选项 | 说明 |
|---|---|
-f, --file=FILENAME | 输出文件或目录名 |
-F, --format=c|d|t|p | 输出文件格式:定制(c)、目录(d)、tar(t)、明文(p,默认) |
-j, --jobs=NUM | 执行多个并行任务进行备份转储工作 |
-v, --verbose | 详细模式 |
-V, --version | 输出版本信息,然后退出 |
-Z, --compress=METHOD[:DETAIL] | 按指定方式进行压缩 |
--lock-wait-timeout=TIMEOUT | 在等待表锁超时后操作失败 |
--no-sync | 不用等待变化安全写入磁盘 |
-?, --help | 显示此帮助,然后退出 |
控制输出内容选项:
| 选项 | 说明 |
|---|---|
-a, --data-only | 只转储数据,不包括模式 |
-b, --large-objects | 在转储中包含大对象 |
-B, --no-large-objects | 在转储中排除大对象 |
-c, --clean | 在重新创建之前,先清除(删除)数据库对象 |
-C, --create | 在转储中包括命令,以便创建数据库 |
-e, --extension=PATTERN | 仅转储指定的扩展名 |
-E, --encoding=ENCODING | 转储以 ENCODING 形式编码的数据 |
-n, --schema=PATTERN | 只转储指定的模式 |
-N, --exclude-schema=PATTERN | 不转储指定的模式 |
-O, --no-owner | 在明文格式中,忽略恢复对象所属者 |
-s, --schema-only | 只转储模式,不包括数据 |
-S, --superuser=NAME | 在明文格式中使用指定的超级用户名 |
-t, --table=PATTERN | 仅转储指定的表 |
-T, --exclude-table=PATTERN | 不转储指定的表 |
-x, --no-privileges | 不要转储权限(grant/revoke) |
--package=PATTERN | 仅转储指定的 PACKAGE |
--typebody=PATTERN | 仅转储指定的 TYPE BODY |
--dblink=PATTERN | 仅转储指定的数据库链接(DATABASE LINK) |
--synonym=PATTERN | 仅转储指定的同义词(SYNONYM) |
--column-inserts | 以带有列名的 INSERT 命令形式转储数据 |
--disable-dollar-quoting | 取消美元(符号)引号,使用 SQL 标准引号 |
--disable-triggers | 在只恢复数据的过程中禁用触发器 |
--enable-row-security | 启用行安全性(只转储用户能够访问的内容) |
--exclude-table-and-children=PATTERN | 不转储指定的表(含子表和分区表) |
--exclude-table-data=PATTERN | 不转储指定的表中的数据 |
--exclude-table-data-and-children=PATTERN | 不转储指定的表的数据(含子表和分区表) |
--extra-float-digits=NUM | 覆盖 extra_float_digits 的默认设置 |
--if-exists | 当删除对象时使用 IF EXISTS |
--include-foreign-data=PATTERN | 包含外部服务器上与模式匹配的外部表的数据 |
--inserts | 以 INSERT 命令(而不是 COPY 命令)的形式转储数据 |
--load-via-partition-root | 通过根表加载分区 |
--no-comments | 不转储注释 |
--no-publications | 不转储发布 |
--no-security-labels | 不转储安全标签的分配 |
--no-subscriptions | 不转储订阅 |
--no-table-access-method | 不转储表访问方法 |
--no-tablespaces | 不转储表空间分配信息 |
--no-toast-compression | 不转储 TOAST 压缩方法 |
--no-unlogged-table-data | 不转储没有日志的表数据 |
--on-conflict-do-nothing | 将 ON CONFLICT DO NOTHING 添加到 INSERT 命令 |
--quote-all-identifiers | 所有标识符加引号,即使不是关键字 |
--rows-per-insert=NROWS | 每个插入的行数;意味着 --inserts |
--section=SECTION | 备份命名的节(数据前、数据及数据后) |
--serializable-deferrable | 等到备份可以无异常运行 |
--snapshot=SNAPSHOT | 为转储使用给定的快照 |
--strict-names | 要求每个表和(或)schema(包括模式)以匹配至少一个实体 |
--table-and-children=PATTERN | 仅转储指定的表(含子表和分区表) |
--use-set-session-authorization | 使用 SESSION AUTHORIZATION 命令代替 ALTER OWNER 命令来设置所有权 |
联接选项:
| 选项 | 说明 |
|---|---|
-d, --dbname=DBNAME | 对数据库 DBNAME 备份 |
-h, --host=主机名 | 数据库服务器的主机名或套接字目录 |
-p, --port=端口号 | 数据库服务器的端口号 |
-U, --username=名字 | 以指定的数据库用户联接 |
-w, --no-password | 永远不提示输入口令 |
-W, --password | 强制口令提示(自动) |
--role=ROLENAME | 在转储前运行 SET ROLE |
如果没有提供数据库名字,那么使用 PGDATABASE 环境变量的数值。
pg_dumpall(全集群逻辑备份)
pg_dumpall 将整个 Halo 数据库集群转储为一个 SQL 脚本文件,用于备份所有数据库以及角色、表空间等全局对象。
本节基于 Halo 1.0.16 所附带的 pg_dumpall 1.0.16.11 版本编写。不同版本间命令行参数可能略有差异,可用 pg_dumpall --version 查看实际版本。
使用格式:
pg_dumpall [选项]...
一般选项:
| 选项 | 说明 |
|---|---|
-f, --file=FILENAME | 输出文件名 |
-v, --verbose | 详细模式 |
-V, --version | 输出版本信息,然后退出 |
--lock-wait-timeout=TIMEOUT | 在等待表锁超时后操作失败 |
-?, --help | 显示此帮助,然后退出 |
控制输出内容选项:
| 选项 | 说明 |
|---|---|
-a, --data-only | 只转储数据,不包括模式 |
-c, --clean | 在重新创建数据库前先清除(删除)数据库 |
-E, --encoding=ENCODING | 转储以 ENCODING 形式编码的数据 |
-g, --globals-only | 只转储全局对象,不包括数据库 |
-O, --no-owner | 不恢复对象所属者 |
-r, --roles-only | 只转储角色,不包括数据库或表空间 |
-s, --schema-only | 只转储模式,不包括数据 |
-S, --superuser=NAME | 在转储中,指定的超级用户名 |
-t, --tablespaces-only | 只转储表空间,而不转储数据库或角色 |
-x, --no-privileges | 不要转储权限(grant/revoke) |
--column-inserts | 以带有列名的 INSERT 命令形式转储数据 |
--disable-dollar-quoting | 取消美元(符号)引号,使用 SQL 标准引号 |
--disable-triggers | 在只恢复数据的过程中禁用触发器 |
--exclude-database=PATTERN | 排除名称与 PATTERN 匹配的数据库 |
--extra-float-digits=NUM | 覆盖 extra_float_digits 的默认设置 |
--if-exists | 当删除对象时使用 IF EXISTS |
--inserts | 以 INSERT 命令(而不是 COPY 命令)的形式转储数据 |
--load-via-partition-root | 通过根表加载分区 |
--no-comments | 不转储注释 |
--no-publications | 不转储发布 |
--no-role-passwords | 不转储角色的密码 |
--no-security-labels | 不转储安全标签的分配 |
--no-subscriptions | 不转储订阅 |
--no-sync | 不用等待变化安全写入磁盘 |
--no-table-access-method | 不转储表访问方法 |
--no-tablespaces | 不转储表空间分配信息 |
--no-toast-compression | 不转储 TOAST 压缩方法 |
--no-unlogged-table-data | 不转储没有日志的表数据 |
--on-conflict-do-nothing | 将 ON CONFLICT DO NOTHING 添加到 INSERT 命令 |
--quote-all-identifiers | 所有标识符加引号,即使不是关键字 |
--rows-per-insert=NROWS | 每个插入的行数;意味着 --inserts |
--use-set-session-authorization | 使用 SESSION AUTHORIZATION 命令代替 ALTER OWNER 命令来设置所有权 |
联接选项:
| 选项 | 说明 |
|---|---|
-d, --dbname=CONNSTR | 连接数据库使用的连接串 |
-h, --host=主机名 | 数据库服务器的主机名或套接字目录 |
-l, --database=DBNAME | 另一个缺省数据库 |
-p, --port=端口号 | 数据库服务器的端口号 |
-U, --username=名字 | 以指定的数据库用户联接 |
-w, --no-password | 永远不提示输入口令 |
-W, --password | 强制口令提示(自动) |
--role=ROLENAME | 在转储前运行 SET ROLE |
如果没有使用 -f/--file,那么将把 SQL 脚本写到标准输出。
pg_restore(逻辑恢复)
pg_restore 从 pg_dump 创建的归档文件中恢复 Halo 数据库。
本节基于 Halo 1.0.16 所附带的 pg_restore 1.0.16.11 版本编写。不同版本间命令行参数可能略有差异,可用 pg_restore --version 查看实际版本。
使用格式:
pg_restore [选项]... [文件名]
一般选项:
| 选项 | 说明 |
|---|---|
-d, --dbname=名字 | 连接数据库名字 |
-f, --file=文件名 | 输出文件名(- 表示 stdout) |
-F, --format=c|d|t | 备份文件格式(应该自动进行) |
-l, --list | 打印归档文件的 TOC 概述 |
-v, --verbose | 详细模式 |
-V, --version | 输出版本信息,然后退出 |
-?, --help | 显示此帮助,然后退出 |
恢复控制选项:
| 选项 | 说明 |
|---|---|
-a, --data-only | 只恢复数据,不包括模式 |
-c, --clean | 在重新创建之前,先清除(删除)数据库对象 |
-C, --create | 创建目标数据库 |
-e, --exit-on-error | 发生错误退出,默认为继续 |
-I, --index=NAME | 恢复指定名称的索引 |
-j, --jobs=NUM | 执行多个并行任务进行恢复工作 |
-L, --use-list=FILENAME | 从这个文件中使用指定的内容表排序输出 |
-n, --schema=NAME | 在这个模式中只恢复对象 |
-N, --exclude-schema=NAME | 不恢复此模式中的对象 |
-O, --no-owner | 不恢复对象所属者 |
-P, --function=NAME(args) | 恢复指定名字的函数 |
-s, --schema-only | 只恢复模式,不包括数据 |
-S, --superuser=NAME | 使用指定的超级用户来禁用触发器 |
-t, --table=NAME | 恢复命名关系(表、视图等) |
-T, --trigger=NAME | 恢复指定名字的触发器 |
-x, --no-privileges | 跳过处理权限的恢复(grant/revoke) |
-1, --single-transaction | 作为单个事务恢复 |
--disable-triggers | 在只恢复数据的过程中禁用触发器 |
--enable-row-security | 启用行安全性 |
--if-exists | 当删除对象时使用 IF EXISTS |
--no-comments | 不恢复注释 |
--no-data-for-failed-tables | 对那些无法创建的表不进行数据恢复 |
--no-publications | 不恢复发布 |
--no-security-labels | 不恢复安全标签信息 |
--no-subscriptions | 不恢复订阅 |
--no-table-access-method | 不恢复表访问方法 |
--no-tablespaces | 不恢复表空间的分配信息 |
--section=SECTION | 恢复命名节(数据前、数据及数据后) |
--strict-names | 要求每个表和(或)schema(包括模式)以匹配至少一个实体 |
--use-set-session-authorization | 使用 SESSION AUTHORIZATION 命令代替 ALTER OWNER 命令来设置所有权 |
联接选项:
| 选项 | 说明 |
|---|---|
-h, --host=主机名 | 数据库服务器的主机名或套接字目录 |
-p, --port=端口号 | 数据库服务器的端口号 |
-U, --username=名字 | 以指定的数据库用户联接 |
-w, --no-password | 永远不提示输入口令 |
-W, --password | 强制口令提示(自动) |
--role=ROLENAME | 在恢复前执行 SET ROLE 操作 |
选项 -I、-n、-N、-P、-t、-T 以及 --section 可以组合使用和指定多次,用于选择多个对象。如果没有提供输入文件名,则使用标准输入。
RMAN2(物理备份与恢复)
本节列出 Halo RMAN2(备份恢复管理器)支持的全部命令与选项。
本节示例基于 Halo 1.0.16 所附带的 rman2 2.5.15 版本编写。不同版本间命令行参数可能略有差异,可用 rman2 version 查看实际版本。
使用格式:
rman2 <命令> [选项]
管理命令
init — 初始化备份目录
创建并初始化一个用于存放备份文件的目录。
rman2 init -B /data/backup
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径(必选) |
add-instance — 添加备份实例
向备份目录中添加一个需要备份的数据库实例。
rman2 add-instance -B /data/backup -D /data/halo --instance=node1d1
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
-D, --pgdata | 数据库数据目录的路径 |
--instance | 实例名称(必选) |
-E, --external-dirs | 需一并备份的 PGDATA 之外目录 |
--remote-proto | 远程协议(仅支持 ssh) |
--remote-host | 远程主机地址(远程模式) |
--remote-port | 远程主机 SSH 端口(默认 22) |
--remote-user | 远程主机 SSH 用户 |
--remote-path | 远程主机上 rman2 安装路径 |
--ssh-options | SSH 连接选项 |
del-instance — 删除备份实例
rman2 del-instance -B /data/backup --instance=node1d1
show — 查看备份信息
显示备份历史记录及详细信息。
rman2 show -B /data/backup
rman2 show -B /data/backup --instance=node1d1 -i BACKUP_ID
rman2 show -B /data/backup --archive # 查看 WAL 归档信息
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-i, --backup-id | 备份 ID |
--format | 输出格式:PLAIN(默认)或 JSON |
--archive | 查看 WAL 归档信息 |
--no-color | 禁用控制台彩色输出 |
show-config — 查看实例配置
rman2 show-config -B /data/backup --instance=node1d1
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
--format | 输出格式:PLAIN(默认)或 JSON |
--no-scale-units | 内存与时间值以默认单位显示(不自动换算) |
set-config — 修改实例配置
rman2 set-config -B /data/backup --instance=node1d1 \
--retention-redundancy=2 \
--compress-algorithm=zlib \
--compress-level=1
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-D, --pgdata | 数据目录路径 |
-E, --external-dirs | 需一并备份的 PGDATA 之外目录 |
--retention-redundancy | 保留的完整备份副本数 |
--retention-window | 可恢复天数 |
--wal-depth | 保留 PITR 能力的最新备份数 |
--compress | 启用压缩(zlib + 级别 1 的快捷方式) |
--compress-algorithm | 压缩算法:none / zlib / pglz |
--compress-level | 压缩级别(0~9) |
--log-level-console | 控制台日志级别 |
--log-level-file | 文件日志级别 |
--restore-command | 恢复时使用的 restore_command(设为 none 则禁用) |
--remote-proto / --remote-host / --remote-port / --remote-user / --remote-path | 远程模式配置 |
--archive-host / --archive-port / --archive-user | 归档主机的 SSH 连接配置 |
--archive-timeout | 归档超时时间 |
set-backup — 设置备份属性
设置指定备份的标签、保留期限等属性。
rman2 set-backup -B /data/backup --instance=node1d1 -i BACKUP_ID \
--ttl=30d \
--note='应用升级前备份'
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-i, --backup-id | 备份 ID |
--ttl | 备份保留时长(如 30d 表示 30 天) |
--expire-time | 备份过期时间戳 |
--note | 备份备注 |
备份命令
backup — 创建备份
rman2 backup -B /data/backup -b FULL --instance=node1d1 --stream --backup-pg-log
rman2 backup -B /data/backup -b DELTA --instance=node1d1 --stream --compress -j 4
rman2 backup -B /data/backup -b PAGE --instance=node1d1 --stream --compress --progress
备份模式(-b):
| 模式 | 说明 |
|---|---|
FULL | 全量备份:备份所有数据文件 |
DELTA | 差异备份:读取所有数据文件,复制自上次备份以来更改的页面 |
PAGE | 页级备份:通过 WAL 归档追踪变化页面(需配置归档命令) |
PTRACK | 页级跟踪备份:通过 PTRACK 位图追踪页面变化 |
常用选项:
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
-b, --backup-mode | 备份模式:FULL / DELTA / PAGE / PTRACK |
--instance | 实例名称 |
-D, --pgdata | 数据目录路径 |
-C, --smooth-checkpoint | 备份前执行平滑检查点 |
--stream | 启用流式备份,通过复制协议实时获取 WAL |
-S, --slot | 复制槽名称 |
--temp-slot | 使用临时复制槽 |
--backup-pg-log | 同时备份日志目录 |
-j, --threads | 并行线程数 |
--progress | 显示备份进度 |
--no-validate | 备份完成后跳过自动校验 |
--skip-block-validation | 仅校验文件级校验和 |
--compress | 启用压缩(zlib + 级别 1) |
--compress-algorithm | 压缩算法:none / zlib / pglz |
--compress-level | 压缩级别(0~9) |
-E, --external-dirs | 备份 PGDATA 之外的目录 |
--no-sync | 不同步备份文件到磁盘 |
--dry-run | 试运行,不实际产生变更 |
-d, --database | 连接的数据库名(默认 halo0root) |
-h, --host | 数据库服务器主机 |
-p, --port | 数据库服务器端口(默认 9001) |
-U, --user | 连接的用户名 |
保留策略选项(与 backup 联用):
| 选项 | 说明 |
|---|---|
--delete-expired | 备份完成后删除过期备份 |
--delete-wal | 删除不再需要的 WAL 文件 |
--merge-expired | 合并过期增量备份到父备份 |
--retention-redundancy | 保留的完整备份副本数 |
--retention-window | 可恢复天数 |
--wal-depth | 保留 PITR 能力的最新备份数 |
--ttl | 当前备份保留时长 |
--expire-time | 当前备份过期时间 |
--note | 当前备份备注 |
恢复命令
restore — 恢复数据库
# 全量恢复到指定目录
rman2 restore -B /data/backup --instance=node1d1 -D /home/halo/data --progress
# 基于时间点恢复(PITR)
rman2 restore -B /data/backup --instance=node1d1 \
-D /home/halo/data \
--recovery-target-time="2025-08-08 10:00:16"
# 恢复到指定 LSN
rman2 restore -B /data/backup --instance=node1d1 \
--recovery-target-lsn="0/800BBD0"
# 增量恢复
rman2 restore -B /data/backup --instance=node1d1 \
--incremental-mode=checksum
恢复目标选项(多选一):
| 选项 | 说明 |
|---|---|
--recovery-target-time | 恢复到指定时间戳 |
--recovery-target-xid | 恢复到指定事务 ID |
--recovery-target-lsn | 恢复到指定 LSN |
--recovery-target-name | 恢复到指定的保存点名称 |
--recovery-target | 恢复到 immediate 或 latest |
--recovery-target-timeline | 恢复到指定时间线 |
--recovery-target-inclusive | 是否在恢复目标之后停止(true / false) |
--recovery-target-action | 恢复后动作:pause / promote / shutdown |
其他选项:
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-D, --pgdata | 恢复目标目录 |
-i, --backup-id | 要恢复的备份 ID |
-j, --threads | 并行线程数 |
--progress | 显示恢复进度 |
--no-validate | 恢复前跳过备份校验 |
--skip-block-validation | 仅校验文件级校验和 |
--no-sync | 不同步恢复文件到磁盘 |
--force | 强制覆盖非空目录 |
-R, --restore-as-replica | 恢复为备库 |
--primary-conninfo | 主库连接信息(恢复为备库时) |
-S, --primary-slot-name | 主库复制槽名称 |
--restore-command | 恢复时使用的 restore_command(设为 none 则禁用) |
-T, --tablespace-mapping | 表空间映射(格式 OLDDIR=NEWDIR) |
--external-mapping | 外部目录映射(格式 OLDDIR=NEWDIR) |
--skip-external-dirs | 不恢复外部目录 |
-I, --incremental-mode | 增量恢复模式:none / checksum / lsn |
--db-include | 仅恢复指定数据库 |
--db-exclude | 排除指定数据库 |
--destroy-all-other-dbs | 恢复时删除目标目录中不在备份内的其他数据库 |
-X, --waldir | WAL 文件目录 |
校验与维护命令
validate — 校验备份
检查备份集完整性,确认数据是否完好。
rman2 validate -B /data/backup --instance=node1d1 -i BACKUP_ID --progress -j 4
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-i, --backup-id | 备份 ID(不指定则校验全部) |
-j, --threads | 并行线程数 |
--progress | 显示校验进度 |
--skip-block-validation | 跳过块级校验 |
--recovery-target-time / --recovery-target-xid / --recovery-target-lsn | 校验到指定时间点/事务 ID/LSN 为止的数据 |
--recovery-target-timeline | 校验到指定时间线 |
--recovery-target-name | 校验到指定保存点 |
--recovery-target-inclusive | 是否包含恢复目标点(true / false) |
checkdb — 检查数据库
检查数据库实例的数据文件一致性。
rman2 checkdb -B /data/backup --instance=node1d1 -D /data/halo --progress
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-D, --pgdata | 数据目录路径 |
-j, --threads | 并行线程数 |
--progress | 显示检查进度 |
--amcheck | 使用 amcheck 进行索引一致性检查 |
--heapallindexed | 检查索引是否覆盖所有堆元组 |
--checkunique | 检查唯一约束一致性 |
delete — 删除备份
根据保留策略删除过期备份,或按 ID 删除指定备份。
# 按保留策略删除过期备份
rman2 delete -B /data/backup --instance=node1d1 --delete-expired --dry-run
# 按保留策略删除过期备份(实际执行)
rman2 delete -B /data/backup --instance=node1d1 --delete-expired
# 删除指定备份
rman2 delete -B /data/backup --instance=node1d1 -i BACKUP_ID
# 合并过期增量备份
rman2 delete -B /data/backup --instance=node1d1 --merge-expired
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-i, --backup-id | 要删除的备份 ID |
--status | 删除所有处于指定状态的备份(如 ERROR、CORRUPT、ORPHAN 等) |
--delete-expired | 删除过期备份 |
--delete-wal | 删除不再需要的 WAL 文件 |
--merge-expired | 合并过期增量备份 |
--retention-redundancy / --retention-window / --wal-depth | 本次删除临时采用的保留策略(覆盖实例配置) |
--dry-run | 预览模式(不实际删除) |
-j, --threads | 并行线程数 |
--progress | 显示进度 |
merge — 合并备份
将增量备份合并到其父备份中。
rman2 merge -B /data/backup --instance=node1d1 -i BACKUP_ID --progress
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
-i, --backup-id | 要合并的备份 ID |
-j, --threads | 并行线程数 |
--progress | 显示进度 |
WAL 归档命令
archive-push — 推送 WAL 归档
在 archive_command 中使用的命令,用于将 WAL 日志推送到备份目录。
archive_command = '/u01/app/halo/product/dbms/16/bin/rman2 archive-push \
-B /data/backup --instance=node1d1 \
--wal-file-name=%f --wal-file-path=%p'
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
--wal-file-name | WAL 文件名(使用 %f 变量) |
--wal-file-path | WAL 文件路径(使用 %p 变量) |
-j, --threads | 并行线程数 |
--batch-size | 批量处理最大文件数 |
--no-ready-rename | 不重命名 archive_status 目录中的 .ready 文件 |
--no-sync | 不同步 WAL 文件到磁盘 |
--overwrite | 覆盖已存在的 WAL 文件 |
--compress | 启用压缩 |
--archive-timeout | 归档超时时间 |
archive-get — 获取 WAL 归档
在 restore_command 中使用的命令,用于从备份目录获取 WAL 日志。
restore_command = '/u01/app/halo/product/dbms/16/bin/rman2 archive-get \
-B /data/backup --instance=node1d1 \
--wal-file-name=%f --wal-file-path=%p'
| 选项 | 说明 |
|---|---|
-B, --backup-path | 备份存储目录的路径 |
--instance | 实例名称 |
--wal-file-name | WAL 文件名(使用 %f 变量) |
--wal-file-path | WAL 文件路径(使用 %p 变量) |
-j, --threads | 并行线程数 |
--batch-size | 批量预取的最大文件数 |
--prefetch-dir | 预取 WAL 文件的暂存目录 |
--no-validate-wal | 不校验预取 WAL 文件 |
其他命令
catchup — 追赶复制
用于追赶落后主库的备库,通过全量同步使备库快速跟上主库。
rman2 catchup -b FULL \
--source-pgdata=/data/halo \
--destination-pgdata=/data/halo_replica \
--stream -j 4
| 选项 | 说明 |
|---|---|
-b, --backup-mode | 追赶模式:FULL / DELTA / PTRACK(不支持 PAGE,与 backup 命令不同) |
--source-pgdata | 源端数据目录路径 |
--destination-pgdata | 目标端数据目录路径 |
--stream | 使用流式复制(catchup 仅支持流式模式) |
-S, --slot | 复制槽名称 |
--temp-slot | 使用临时复制槽 |
-P, --perm-slot | 创建永久复制槽 |
-j, --threads | 并行线程数 |
-T, --tablespace-mapping | 表空间映射(格式 OLDDIR=NEWDIR) |
-x, --exclude-path | 排除指定路径前缀(相对 PGDATA)的文件 |
--dry-run | 试运行,不实际产生变更 |
version — 查看版本
rman2 version
help — 查看帮助
rman2 help # 显示所有命令
rman2 help backup # 显示 backup 命令的详细帮助
rman2 help restore # 显示 restore 命令的详细帮助
通用选项
以下选项适用于大多数命令。
日志选项:
| 选项 | 说明 |
|---|---|
--log-level-console | 控制台日志级别:off / error / warning / info / log / verbose |
--log-level-file | 文件日志级别(同上) |
--log-format-console | 控制台日志格式:plain / json |
--log-format-file | 文件日志格式:plain / json |
--log-filename | 日志文件名模板 |
--log-directory | 日志目录 |
--log-rotation-size | 单个日志文件最大大小 |
--log-rotation-age | 日志文件最长保留时间 |
--no-color | 禁用控制台彩色输出 |
连接选项:
| 选项 | 说明 |
|---|---|
-d, --database | 数据库名称(默认 halo0root) |
-h, --host | 数据库服务器主机(默认本地套接字) |
-p, --port | 数据库服务器端口(默认 9001) |
-U, --user | 连接用户(默认当前系统用户) |
-w, --no-password | 不提示密码 |
-W, --password | 强制提示密码 |
远程模式选项:
| 选项 | 说明 |
|---|---|
--remote-proto | 远程协议(仅支持 ssh) |
--remote-host | 远程主机地址 |
--remote-port | 远程主机 SSH 端口(默认 22) |
--remote-user | 远程主机 SSH 用户 |
--remote-path | 远程主机上 rman2 路径 |
--ssh-options | SSH 额外选项 |