逻辑备份与恢复
常用示例
|
|
逻辑备份恢复
错误处理
默认如果中途错误, psql 会继续执行,从而导致数据库只部分恢复
-
方法一: 错误退出
请设置 ON_ERROR_STOP 变量,使 psql 在发生 SQL 错误时退出,且有一个为 3 的退出状态码:
psql –set ON_ERROR_STOP=on dbname < dumpfile -
方法二: 增加事务
指定整个转储作为一个事务来恢复,以便要么全部完成,要么全部取消
psql -1
pg_restore -e
恢复事项
-
createdb newDBname
-
确保所有拥有对象的用户或对转储数据库中的对象赋予了权限的用户都已存在;
如果这样的用户不存在, 恢复将无法重新创建具有原始所有权和权限的对象
pg_dump
转储单个数据库, 不会产生阻塞
备份目标对象: 文本, sql文件, 二进制文件
主要参数
|
|
示例
|
|
pg_dumpall
转储给定集群中的每个数据库, 并保留集群范围的数据, 如角色和表空间定义
pg_dump 是不保留集群角色和表空间信息的
|
|
文本备份和恢复
即导出为 csv
|
|
实例
|
|
pg_basebackup
特点
- 使用的使用复制协议
- v17+ 支持增量备份
前提: 因为是复制协议, 所以需要权限
|
|
实例
|
|
参数解析
|
|
pg_restore
适合来并行恢复备份, 需要是支持并行恢复的二进制格式的备份
在恢复大量数据前,将 maintenance_work_mem 和 work_mem 设置为更高的值,能提高索引和约束的创建速度
|
|
pg_waldump
|
|
归档备份与恢复
备份方式
- 定期全量备份
- 配置归档策略 - 保存归档日志
恢复方式
- 从数据库的全量备份目录启动, 检测到以恢复模式启动
- 读取和应用 pg_wal 目录下的 wal 文件
- 如果缺失 wal 文件, 就执行 restore_command 命令拷贝 wal 文件
备份配置
|
|
管理命令
|
|
创建基础全量备份
|
|
恢复数据流程
- stop db
- 将完整备份替换到现在的数据库位置
- 创建 recovery.signal 文件, 告知 PostgreSQL 启动时进入恢复模式
- 启动数据库, 会进入恢复模式(只读)
- 恢复模式中会自动读取 wal 文件并应用; restore_command
- 确认数据恢复完全后, 结束恢复模式, 允许数据写入
示例
|
|