1.pg_dump介绍
pg_dump是一个逻辑备份PostgreSQL数据库的工具,目的是将一个PostgreSQL
数据库转储到一个脚本文件或者其他归档文件中,可以在数据库正在使用的时候
进行完整一致的备份,并不阻塞其他用户对数据库的访问(读或者写)
2.pg_dump特性
pg_dump只能备份单个数据库,不会导出角色和表空间相关的信息。
pg_dump是一个客户端,因此可以远程访问数据库进行备份,但备份存放在客户端。
pg_dump需要有备份表的读权限,建议使用数据库超级用户来备份。
pg_dump可以支持跨版本跨平台数据库导入。
pg_dump转储的是数据库快照,在pg_dump运行过程中发生的更新将不会被转储
pg_dump自定义文件格式必须与pg_restore配合使用来重建数据。
pg_dump工作的时候并不阻塞其他的对数据库的操作,但是会阻塞那些需要排他所的操作,
比如alter table;
pg_dump脚本转储是包含SQL命令的纯文本文件,可以用来重构数据库到它被转储时
的状态。
3.备份
--不包含:create database 语句
pg_dump -h 192.168.1.10 -U sspu sspudb > sspudb1.sql
--包含create database语句。
pg_dump -h 192.168.1.10 -U sspu -C sspudb > sspudb2.sql
--仅导出结果,不包含 create database语句。
pg_dump -h 192.168.1.10 -U sspu -s sspudb > sspudb3.sql
--导出指定数据库的结果并包含创建语句。
pg_dump -h 192.168.1.10 -U sspu -C -s sspudb > sspudb4.sql
4.恢复
drop database sspudb;
--需要使用管理员账号导入
[pgsql@oracle1:/postgresql/backup]$psql postgres -U postgres < sspudb2.sql
Password for user postgres:
sspudb=> \dt
List of relations
Schema | Name | Type | Owner
--------+---------------------+-------------------+-------
public | my_tab1 | table | sspu
public | sspudb_h1_p1 | table | sspu
public | sspudb_h1_p2 | table | sspu
public | sspudb_h1_p3 | table | sspu
public | sspudb_h1_p4 | table | sspu
public | sspudb_hash1 | partitioned table | sspu
public | sspudb_list1 | partitioned table | sspu
public | sspudb_list1_pit1 | table | sspu
public | sspudb_list1_pit2 | table | sspu
public | sspudb_list1_pother | table | sspu
public | sspudb_r1 | partitioned table | sspu
public | sspudb_r1_p2010 | table | sspu
public | sspudb_r1_p2011 | table | sspu
public | sspudb_r1_p2012 | table | sspu
public | sspudb_r1_p2013 | table | sspu
public | sspudb_r1_p2014 | table | sspu
public | sspudb_r1_p2015 | table | sspu
public | sspudb_r1_p2016 | table | sspu
public | sspudb_r1_p2017 | table | sspu
public | sspudb_r1_p2018 | table | sspu
public | sspudb_r1_p2019 | table | sspu
public | sspudb_r1_p2020 | table | sspu
public | sspudb_r1_phis | table | sspu
(23 rows)