【PostgreSQL备份恢复】逻辑备份与恢复
文章目录
前言
本文主要介绍PostgreSQL的逻辑备份与恢复
一 备份工具
备份工具 | 备份缺点 |
---|---|
pg_dumpall | 生成psql脚本,pg_dumpall 只支持文本格式,pg_dumpall需要多次连接到postgresql 服务器,每个数据库一次。如果你使用口令认证,可能每次都会要求口令。这种情况下使用一个~/.pgpass会比较方便 |
pg_dump | 只能备份单个数据库,无法恢复到故障发生的时刻. |
pg_dump支持指定所要备份的对象:可以单独备份表、schema或者database;
pg_dumpall 仅支持导出全库数据。
pg_dump可以将数据备份为SQL文本文件格式,
也支持备份为用户自定义的压缩格式或者TAR包格式。
PostgreSQL 支持以下两种数据恢复方法:
1、使用psql恢复pg_dump或pg_dumpall工具生成的SQL文本格式的数据备份。
2、使用pg_restore工具来恢复由pg_dump工具生成的自定义压缩格式(-Fc)、
TAR 包格式(-Ft)或者目录格式(-Fd)备份。
二 pg_dump
2.1 pg_dump 备份
[root@localhost ~]# mkdir /pgback
[root@localhost ~]# chown postgres:postgres /pgback
[root@localhost ~]# su - postgres
postgres=# \c webdb
You are now connected to database "webdb" as user "postgres".
webdb=# create table w_big (id int,info text);
CREATE TABLE
webdb=# insert into w_big select n,'w_big' from generate_series(1,100) as n;
INSERT 0 100
webdb=# select count(*) from w_big;
count
-------
100
(1 row)
---备份
pg_dump webdb --file=/pgback/webdb.sql
2.2 pg_dump 恢复
---恢复 要先建一个库,然后恢复数据到库中
postgres=# drop database webdb;
postgres=# create database webdb;
psql --dbname=webdb --file=/pgback/webdb.sql
三 pg_dumpall
3.1 pg_dumpall 备份(导出)
# 导出所有数据库
[postgres@localhost ~]$ pg_dumpall >/pgback/pg_all.sql
# 导出所有Role 和Tablespace
[postgres@localhost ~]$ pg_dumpall -g >/pgback/pg_golbal.sql
# 只导出 Role
[postgres@localhost ~]$ pg_dumpall -r >/pgback/pg_role.sql
#只导出 Tablespace
[postgres@localhost ~]$ pg_dumpall -t >/pgback/pg_tables.sql
3.2 pg_dumpall 恢复 (导入)
恢复过程会创建或覆盖其他数据库
-U: 指定连接数据库的用户名
-d: 指定连接的数据库(默认postgres)
-f: 指定恢复的文件
psql -f /pgback/pg_golbal.sql