总体上命令形式如下:
pg_dump-h数据库服务器IP -hpg端口-U用户名-W密码-F *备份文件的格式-f备份文件名 要备的数据库
pg_restore-h数据库服务器IP -hpg端口-U用户名-W密码-d数据库名 备份文件名
其中数据库服务器IP为本机可以省略,端口为默认端口可以省略
常用的对应逻辑备份恢复命令示例如下,这些命令我都试过,可以成功运行:
1
a 备份数据库 beigang
pg_dump -Ubeigang -f beigang_dump.pgdump beigang
b 恢复数据库beigang
恢复前先创建用户和数据库,然后执行恢复
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
pg_restore -U beigang -d beigang beigang_dump.pgdump
验证
beigang=# select * from test;
id | name
----+------
1 | 贝钢
(1 行记录)
2
a 以custom format备份数据库 beigang
pg_dump -Ubeigang -F c -f beigang_dump.pgdump beigang
b 恢复数据库beigang
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
pg_restore -U beigang -F c -d beigang beigang_dump.pgdump
3
a 以directory format备份数据库 beigang
pg_dump -Ubeigang -F d -f beigang_dump.pgdump beigang
b 恢复数据库beigang
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
pg_restore -U beigang -F d -d beigang beigang_dump.pgdump
4
a 以plain text format备份数据库 beigang
pg_dump -Ubeigang -F p -f beigang_dump.pgdump beigang
b 恢复数据库beigang
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
psql -Ubeigang < beigang_dump.pgdump
5
a 以plain text format备份数据库 beigang 的数据,不包括模式
pg_dump -Ubeigang -F p -a -f beigang_dump.pgdump beigang
b 恢复数据库beigang
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
create schema xxx
create table test (id numeric,name varchar(20));
psql -Ubeigang < beigang_dump
6
a 以plain text format备份数据库 beigang 的模式,不包括数据
pg_dump -Ubeigang -F p -s -f beigang_dump.pgdump beigang
b 恢复数据库beigang
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
psql -Ubeigang < beigang_dump
--只恢复了表定义
7
a 以plain text format备份数据库 beigang 的表test
pg_dump -Ubeigang -F p -t test -f beigang_dump.pgdump beigang
b 恢复数据库beigang
create user beigang with superuser createdb createrole password 'beigang';
create database beigang owner=beigang;
psql -Ubeigang < beigang_dump
--只恢复了备份的表
8
a 以plain text备份这个DBMS
pg_dumpall -Ubeigang -f pgdb.pgdump
b 恢复数据库系统
psql -Ubeigang < beigang_dump