WAL-G存储工具使用指南:危险操作详解
概述
WAL-G作为PostgreSQL的备份恢复工具,提供了一系列强大的存储操作命令。这些命令位于wal-g st
子命令下,能够直接与配置的存储后端进行交互。需要特别注意的是,这些命令具有潜在危险性,不当使用可能导致数据丢失,因此在使用前务必确认操作意图。
基本存储操作命令
列出存储内容(ls)
ls
命令用于查看存储中的文件和目录列表,类似于Linux系统中的ls
命令。
- 基本用法:
wal-g st ls
- 显示配置存储中的所有对象和文件夹 - 递归查看:
wal-g st ls -r
- 递归显示所有子目录内容 - 指定路径:
wal-g st ls some_folder/some_subfolder
- 查看特定路径下的内容
使用场景:在备份恢复前检查存储中的备份文件,或确认WAL日志是否已正确归档。
下载文件(get)
get
命令用于从存储中下载文件到本地。
特性:
- 默认会自动解压和解密(如果配置了相关选项)
- 可通过标志禁用自动处理
常用标志:
--no-decompress
- 禁用自动解压--no-decrypt
- 禁用自动解密
示例:
- 基本下载:
wal-g st get remote_path local_path
- 仅下载不解密:
wal-g st get remote_path local_path --no-decrypt
查看文件内容(cat)
cat
命令将存储中的文件内容输出到标准输出,类似于Linux的cat
命令。
特性:
- 默认不会自动解压或解密
- 适用于查看元数据文件(如sentinel文件)
常用标志:
--decompress
- 启用解压--decrypt
- 启用解密
示例: wal-g st cat path/to/backup_sentinel.json
删除文件(rm)
rm
命令用于删除存储中的文件或目录,操作不可逆,需谨慎使用。
特性:
- 可以删除单个文件或整个目录
- 删除目录时包含所有子内容
示例:
- 删除文件:
wal-g st rm path/to/file
- 删除目录:
wal-g st rm path/to/directory/
注意事项:删除操作前建议先用ls
命令确认要删除的内容。
上传文件(put)
put
命令用于将本地文件上传到存储。
特性:
- 默认会进行压缩和加密(如果配置)
- 可通过标志禁用自动处理
常用标志:
--no-compress
- 禁用压缩--no-encrypt
- 禁用加密
示例: wal-g st put local_path remote_path
高级存储操作:文件传输(transfer)
transfer
命令用于在不同存储之间迁移文件,特别适用于故障转移场景。
子命令类型
-
普通文件传输:
transfer files prefix
- 迁移任意类型的文件
- 会处理指定前缀下的所有子目录
-
WAL文件传输:
transfer pg-wals
- 专用于PostgreSQL WAL文件迁移
- 相当于
transfer files "wal_005/"
的快捷方式
-
备份传输:
transfer backups
- 专门处理备份文件
- 确保备份迁移的原子性
- 支持
--max-backups=N
限制迁移数量
通用标志参数
-s/--source
:指定源存储名称(必须)-t/--target
:指定目标存储名称(默认主存储)-o/--overwrite
:覆盖已存在文件--fail-fast
:遇到错误立即停止-c/--concurrency
:设置并发工作数-m/--max-files
:单次运行最大迁移文件数--appearance-checks
:目标存储一致性检查次数--appearance-checks-interval
:检查间隔时间--preserve
:保留源文件(相当于复制而非移动)
使用场景示例
-
从故障转移存储恢复WAL文件:
wal-g st transfer pg-wals --source='my_failover_ssh'
-
迁移特定备份文件:
wal-g st transfer backups --source='my_failover_s3' --target='default' --max-backups=5
-
大规模文件迁移:
wal-g st transfer files basebackups_005/ \ --source='my_failover_s3' \ --target='default' \ --fail-fast \ -c=50 \ -m=10000 \ --appearance-checks=5 \ --appearance-checks-interval=1s
安全注意事项
- 操作前验证:执行任何删除或修改操作前,先用
ls
命令确认目标 - 备份重要数据:执行危险操作前确保有备份
- 使用--preserve标志:不确定时先复制而非移动文件
- 监控传输过程:大规模传输时建议在屏幕会话中运行
最佳实践
- 定期检查存储:使用
ls
命令定期检查备份完整性 - 分层存储策略:将旧备份转移到低成本存储
- 故障转移测试:定期测试存储迁移流程
- 资源限制:大规模传输时适当限制并发数
通过合理使用这些存储工具,可以高效管理PostgreSQL的备份和WAL归档,构建可靠的灾备方案。但切记这些命令的强大功能也伴随着风险,操作时务必谨慎。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考