postgresql 提供多种方式进行备份,适用于不同需求的场景。常用的备份方法如下:
1. 逻辑备份(pg_dump 和 pg_dumpall)
1.1 使用 pg_dump 备份单个数据库
pg_dump
是 postgresql 内置的逻辑备份工具,可以将数据库导出为 sql 脚本或二进制文件。
备份命令
备份为 sql 文件:
pg_dump -u username -d database_name -f p -f /path/to/backup.sql
参数说明:
-u
: 用户名。-d
: 数据库名称。-f p
: 输出为纯文本格式(plain text)。-f
: 指定备份文件路径。
备份为压缩文件:
pg_dump -u username -d database_name -f c -f /path/to/backup.dump
参数说明:
-f c
: 压缩格式(custom format)。- 压缩格式可以使用
pg_restore
还原。
还原命令
- 对于 sql 文件:
psql -u username -d new_database_name -f /path/to/backup.sql
- 对于压缩文件:
pg_restore -u username -d new_database_name /path/to/backup.dump
1.2 使用 pg_dumpall 备份所有数据库
pg_dumpall
用于备份整个 postgresql 实例(包括所有数据库和全局对象,如角色、权限等)。
备份命令
pg_dumpall -u username -f /path/to/backup_all.sql
还原命令
psql -u username -f /path/to/backup_all.sql
2. 物理备份(pg_basebackup)
2.1 使用 pg_basebackup
pg_basebackup
是 postgresql 提供的物理备份工具,适合对数据库进行完整二进制备份。
备份命令
pg_basebackup -u replication_user -d /path/to/backup_directory -fp -xs -p
参数说明:
-u
: 备份用户(需要配置replication
权限)。-d
: 目标备份目录。-fp
: 文件模式(plain format)。-xs
: 包含 wal 日志。-p
: 显示进度。
还原步骤
- 停止 postgresql 服务:
systemctl stop postgresql
- 将备份数据复制到 postgresql 数据目录:
cp -r /path/to/backup_directory/* /var/lib/pgsql/data/
- 启动 postgresql 服务:
systemctl start postgresql
3. 归档日志备份(wal 日志)
归档日志备份适用于需要时间点恢复 (point-in-time recovery, pitr) 的场景。
步骤
配置归档模式:
编辑postgresql.conf
:archive_mode = on archive_command = 'cp %p /path/to/archive/%f'
重启 postgresql:
systemctl restart postgresql
定期备份归档日志:
配置脚本定期复制/path/to/archive/
目录。使用日志和备份恢复:
在需要恢复时,结合初始物理备份和归档日志文件执行恢复。
4. 其他备份工具
4.1 barman
barman 是社区维护的 postgresql 专用备份工具,支持物理备份和时间点恢复。
备份命令
barman backup server_name
恢复命令
barman recover server_name backup_id /path/to/restore_directory
4.2 wal-g
wal-g 是 postgresql 的现代备份工具,支持增量备份和快速恢复,常用于云环境。
最佳实践
定期备份:
- 每天/每周使用
pg_dump
或pg_basebackup
。 - 实现自动化备份脚本。
- 每天/每周使用
启用归档日志:
- 保证 wal 日志可用于时间点恢复。
多地存储备份:
- 本地存储 + 云存储(如 s3、google cloud storage)。
测试还原流程:
- 定期验证备份文件的完整性。
- 演练灾难恢复。
监控备份:
- 结合监控工具(如 zabbix、prometheus)监控备份进度和状态。
按照这些方式定期备份 postgresql 数据库,可以最大程度地保障数据的安全和可恢复性。
总结
到此这篇关于postgresql常用备份方式总结的文章就介绍到这了,更多相关postgresql备份方式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论