备份数据库:

pg_dump -h 127.0.0.1 -p 15432 -U postgres oumumes> /home/temp/oumumes_file

恢复数据库:

psql -U postgresql -h 127.0.0.1 -p 15432 -d oumumes< /home/pgdata/oumumes_file 

2.1 单库备份

  • -U : Specify the PostgreSQL username.
  • -W : Force pg_dump command to ask for a password.
  • -F : Specify the format of the output file.
  • -f : Specify the output file.
  • p : Plain text SQL script.
  • c : Specify the custom formate.
  • d : Specify the directory format.
  • t : Specify tar format archive file.

(1) 备份一个tar 格式的文件

 pg_dump -h 127.0.0.1 -p 15432 -U postgres oumumes> /home/temp/oumumes.tar

(2)备份一个压缩文件,当存储量比较大的时候可以节省空间

 pg_dump -h 127.0.0.1 -p 15432 -U postgres oumumes|gzip> /home/temp/oumumes.gz

(3)产生一个备份格式为目录的备份

   pg_dump -U test_user -F d -j 5 test_db -f  testdb

   pg_dump -h 127.0.0.1 -p 15432 -U postgres oumumes|gzip> /home/temp/oumumes.gz

note:以上都可以进行备份缩短备份时间,但是对系统io负载产生一定影响

pg_dumpall -U postgres -W -f   test_db.sql

上面备份明亮可能会遇到连续输入密码的问题,可以采用下面的方式来避免


export PGUSER=pg_user export PGPASSWORD='pg_password' 
export PGHOST=localhost


比如下面要备份192.168.0.100这台机器上的remote_db1 数据库

pg_dump -h 192.168.0.100 -U postgres -F c remote_db1 > remote_db1.tar

定时自动备份 crontab 下面是定时每天晚上20:30 开始备份yourdb 到/root/backup_db文件


30 20 * * * pg_dump -U postgres your_db > /root/backup_db.sql

恢复单库

pg_restore -U [option] [db_name] [db_backup]

(1)备份的格式

(2)备份的库是否已经存在

如果备份的库已经存在,可以采用下面的恢复方式:

pg_restore -U test_user -Ft -d test_db < testdb.tar

如果备份的库不存在则采用下面的方式:

pg_restore -U postgres -Ft -C -d test_db < testdb.tar

恢复所有的库

psql -f test_db.sql