PostgreSql熟悉系列_数据库备份

如何备份 PostgreSql 数据库

单数据库

PostgreSql提供了 pg_dump 实用程序,来简化程序备份单个数据库的过程。必须以对要备份的数据库具有读取权限的用户身份运行此命令。

以postgres用户身份登录

sudo su - postgres

运行一下命令将数据库的内容转储到文件中,dbname数据库名称。

pg_dump dbname > dbname.bak

生成的备份文件dbname.bak

使用psql恢复数据库

# 恢复数据库,需要创建一个空数据库
psql test < dbname.bak

备份格式有几种选择

  • *.bak:压缩二进制格式
  • *.sql:明文转储
  • *.tar:tarball

默认情况下,PostgreSql将忽略备份过程中发生的任何错误,这可能导致备份不完整。要防止这种情况,可以使用-1选项运行pg_dump命令,这会将整个备份过程视为单个事务,这将在发生错误时阻止部分备份。

所有数据库

由于pg_dump一次只创建一个数据库的备份,因此它不会存储有关数据库角色或其他集群范围配置的信息。要存储此信息并同时备份所有数据库,可以使用pg_dumpall

创建备份文件

pg_dumpall  > pgbackup.bak

从备份还原所有数据库

psql -f pg_backup.bak postgres

备份数据库

pg_dump -U postgres -f /tmp/postgres.sql postgres (导出postgres数据库保存为postgres.sql)
pg_dump -U postgres -f /tmp/postgres.sql -t test postgres (导出postgres数据库中表test的数据)
pg_dump -U postgres -F t -f /tmp/postgres.tar postgres (导出postgres数据库以tar形式压缩保存为postgres.tar)

恢复数据库

psql -U postgres -f /tmp/postgres.sql bk01 (恢复postgres.sql数据到bk01数据库)
# pg_restore -- 从pg_dmup创建的备份文件中恢复PostgreSql数据库,用于恢复由pg_dump转储的任何非纯文本格式中的PostgreSql数据库。
pg_restore -U postgres -d bk01 /tmp/postgres.tar  (恢复postgres.tar数据到bk01数据库)

你可能感兴趣的:(PostgreSql熟悉系列_数据库备份)