前言
- 逻辑备份
即 SQL 转储方式,使用 pg_dump 和 pg_dumpall 进行备份。逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,所以逻辑备份适用于留存某个时间点的备份或进行跨平台跨版本的数据迁移。 - 文件系统级备份
即拷贝数据文件的完整目录,备份时需要关闭数据库。恢复数据库时,只需将数据目录复制到原来的位置。该方式实际工作中很少使用。 - 连续归档
该方式是把一个文件系统级别的全量备份和 WAL(预写式日志)级别的增量备份结合起来。当需要恢复时,我们先恢复文件系统级别的备份,然后重放备份的 WAL 文件,把系统恢复到之前的某个状态。
本文主要介绍逻辑备份和连续归档方式的备份及还原,文件系统级备份由于比较简单,这里不在赘述。
以下操作使用的数据库版本为 PostgreSQL 12.5,不同的数据库版本在进行连续归档操作时会有细微差异。
一、逻辑备份
1.pg_dump 工具
以下为 pg_dump 工具的常用参数选项(更多参数可使用 pg_dump –help 查看)
|
常用示例:
|
2.pg_dumpall 工具
相对于 pg_dump 只能备份单个库,pg_dumpall 可以备份整个PostgreSql实例中所有的数据,包括角色和表空间定义。
使用示例:
|
二、逻辑备份还原
逻辑备份的还原命令为 psql 和 pg_restore:
如果使用 pg_dump 未指定 format(即未使用-F 参数),则导出的是 SQL 脚本,导入时需用 psql 命令,否则用 pg_restore 还原。因这 2 个还原工具大部分参数与 pg_dump 含义相近,可使用命令后加–help 查看详细参数。
常用示例:
|
三、连续归档备份
连续归档是通过基础备份和 wal 日志相结合的方式进行备份,恢复的时候可以选择恢复到指定的时间点、指定事务点、或者完全恢复到 wal 日志的最新位置。
操作步骤如下:
1、创建备份目录
|
注意新建备份文件夹的权限及所有者,否则会备份失败
|
2、修改配置文件
打开 postgresql.conf 配置文件,修改以下 3 个参数:
|
3、重启 pg 数据库
命令为:pg_ctl restart
4、创建表
该步骤为测试备份及恢复效果使用
|
5、做基础备份
|
为了测试备份和恢复效果,再插入 10 条数据,并进行手动切换 wal 日志,执行如下 sql:
|
四、连续归档恢复
1、创建 data 文件夹
|
2、解压基础备份至新建的 data 文件夹
|
3、修改配置文件
|
4、新建 recovery.signal 文件
|
5、赋权并启动数据库
|
- 本文作者: luckyship
- 本文链接: https://luckyship.github.io/2025/01/11/2025-01-11-postgresql-backup/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!