ostgresql的常见备份方式:SQL转储 以下通过实例来讲解PostgreSQL的SQL转储

(一)pg_dump 1.创建数据库 createdb pg 2.连入数据库pg psql pg 3.创建测试表,插入数据 create table pg_test(a int); insert into pg_test(a) values(1); insert into pg_test(a) values(2); 4.查看数据 select * from tb; 5.备份 pg_dump pg > /usr/local/pgsql/backup/pg.dmp 6.删除数据库pg dropdb pg 7.创建新数据库(恢复之前需创建数据库) createdb pg 8.恢复数据 psql pb < /usr/local/pgsql/backup/pg.dmp 9.查看数据是否回复 select * from tb; 至此,数据已成功恢复! 注:pg_dump可以对针对单表或者多表进行备份 如:pg_dump databasename –t tablename1 –t tablename2 >filename

(二)pg_dumpall pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库。pg_dumpall可以备份所有数据库,并且备份角色、表空间。 1.创建数据库 createdb pg1 createdb pg2 2.pg1中创建表并插入数据 psql pg1 create table tb1(a int) insert into tb1(a) values(1); 3.pg2中创建表并插入数据 psql pg2 create table tb2(a int) insert into tb2(a) values(2); 4.备份数据库 pg_dumpall > /usr/local/pgsql/backup/pg_all.dmp 5.删除数据库 dropdb pg1 dropdb pg2 6.恢复数据库 psql –f /usr/local/pgsql/backup/pg_all.dmp postgres 可以指定任何数据库名,如果恢复到一个空的集群中,通常使用postgres数据库。 7.查看数据库pg1是否恢复 psql pg1 select * from tb1; 8.查看数据库pg2是否恢复 psql pg2 select * from tb2; 至此,数据已成功恢复!

(三)备份压缩与分割 压缩与分割的原理都是利用Linux的管线(PIPE)命令,不再进行试验。 1)压缩 备份: pg_dump dbname | gzip > filename.gz 恢复 gunzip -c filename.gz | psql dbname 2)分割 备份: pg_dump dbname | split -b 1m - filename 恢复 cat filename* | psql dbname