逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故一般不采取逻辑备份方式进行数据库备份,但逻辑适用于跨平台跨版本的数据迁移;
逻辑备份恢复主要以下三种:
pg_dump
pg_dumpall
copy
本小节主要讲解pg_dump
pg_dump备份
只能备份单个数据库,不会导出角色和表空间相关的信息
-F c 备份为二进制格式,压缩存储.并且可被pg_restore用于精细还原
-F p 备份为文本,大库不推荐
pg_dump恢复
psql dbname -U username < bakfile
或
pg_restore
– pg_restore [option] ... [filename]
– pg_restore -d dbname bakfile
二进制格式的备份只能使用pg_restore来还原,可以指定还原的表,编辑TOC文件,定制还原的顺序,表, 索引等。
文本格式的备份还原, 直接使用用户连接到对应的数据库执行备份文本即可,例如psql dbname -f bak.sql
pg_dump备份恢复示例
1)创建数据库
createdb testdb
2)连入数据库testdb
psql testdb
3)创建测试表,插入数据
testdb=# create table tt(a int) tablespace tbls_t;
testdb=# insert into tt(a) values(1);
testdb=# insert into tt(a) values(2);