PostgreSQL 备份恢复与流式复制 - 精简版
第一部分:备份与恢复
一、备份方案对比
| 备份类型 | 工具 | 特点 |
|---|---|---|
| 逻辑备份 | pg_dump、pg_dumpall | 可跨版本、可选单表、速度较慢 |
| 物理备份 | pg_basebackup | 速度快、恢复快、必须整库恢复 |
二、逻辑备份
2.1 pg_dump 常用命令
# 切换用户
su - postgres
# 备份单表(COPY 格式,推荐)
pg_dump itheima -t users > /tmp/users.sql
# 备份单表(INSERT 格式,兼容性好)
pg_dump itheima -t users --inserts > /tmp/users.sql
# 备份多个表
pg_dump itheima -t users -t projects > /tmp/users_projects.sql
# 备份单库
pg_dump itheima > /tmp/itheima.sql
# 备份为二进制格式(推荐,只能用 pg_restore 恢复)
pg_dump -Fc itheima -f /tmp/itheima.dump
# 备份时压缩
pg_dump itheima | gzip > /tmp/itheima.gz
# 备份全部库
pg_dumpall > /tmp/all.sql
# 排除指定库
pg_dumpall --exclude-database='db1' -f /tmp/all.sql
# 远程备份
pg_dump -h 192.168.50.213 -U postgres itheima -t users > /data/user.sql2.2 pg_dump 常用选项
| 选项 | 说明 |
|---|---|
-h | 主机名或 IP |
-p | 端口号 |
-U | 用户名 |
-W | 提示输入密码 |
-Fc | 二进制压缩格式(推荐) |
-Fp | 纯文本 SQL |
-t | 指定表名 |
--inserts | 使用 INSERT 导出 |
2.3 逻辑恢复
# 恢复纯文本 SQL(必须先创建数据库)
psql -c 'create database itheima;'
psql -X itheima < /data/pgdata/itheima.sql
# 恢复压缩文件
cat /data/pgdata/itheima.sql.gz | gunzip | psql itheima
# 恢复二进制格式(推荐)
psql -c 'drop database itheima;'
psql -c 'create database itheima;'
pg_restore -d itheima /data/pgdata/itheima.dump命令作用:
- 使用
psql客户端连接数据库并执行 SQL 或客户端命令。
- 读取并输出
/data/pgdata/itheima.sql.gz、|、gunzip、|、psql、itheima的内容;使用>重定向时,输出会写入目标文件。
执行结果:
- 成功后客户端会连接目标服务并执行指定操作;失败时检查地址、端口、用户、密码和数据库名称。
- 成功后会输出指定文件内容;文件不存在或权限不足时会报错。
关键参数:
注意事项:
**关键参数:**
**注意事项:**
**主库写入:**
);从库验证:
---------+--------------+------------ 1 | 研发A项目 | 2026-03-01 2 | 市场B项目 | 2026-03-01 3 | 财务系统升级 | 2026-03-15
**主库查看:**---------+----------------+------------+-----------从库查看:
----------+----------------+-----------------
**判断标准:** 主库 `state=streaming` + 从库 `status=streaming` = 主从正常