postgres 数据库备份

来源:互联网 发布:书生电子图书数据库 编辑:程序博客网 时间:2024/06/05 14:14

postgres数据提供了pg_dump备份数据库工具

su postgres在此用户下面会有一个命令工具如ceatedb,dropdb,pgsql,pg_dump等工具   备份数据库使用pg_dump

备份数据库

备份数据库有多种的format

  • SQL转储
  • 文件系统级别备份(冷备份)
  • 在线热备份(归档)

SQL转储

  • pg_dump -h localhost -U postgres databasename > /opt/databasename.bak
  • psql gpscloud < /opt/databasename.ba

另一种备份方式(推荐)

  • 备份 : pg_dump –host 127.0.0.1 –port 5432 –username “username” –no-password –format custom –blobs –verbose –file “/opt/bak.custom” “bak”
  • 恢复 : pg_restore –host 127.0.0.1 –port 5432 –username “postgres” –dbname “postgres” –no-password –verbose “path”

如果出现认证失败
需要将pg_hap.conf的本地认证设置成trust

pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库。pg_dumpall可以备份所有数据库,并且备份角色、表空间。

1,创建数据库
createdb pg1
createdb pg2
2, pg1中创建表并插入数据
psql pg1
pg=# create table tb1(a int)
pg=# insert into tb1(a) values(1);
3, pg2中创建表并插入数据
psql pg2
pg=# create table tb2(a int)
pg=# 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
pg= select * from tb1;
8,查看数据库pg2是否恢复
psql pg2
pg= select * from tb2;

0 0