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;