备份数据库

建议在卸载数据库之前备份数据库数据,以防止数据丢失。请根据实际需要备份数据库。

基本命令

pg_dump是一个用于备份PostgreSQL数据库的工具。它甚至可以在数据库正在并发使用时进行完整一致的备份,而不会阻塞其它用户对数据库的访问。

该工具生成的转储格式可以分为以下两种格式:

基本命令的使用方式如下:

1
2
pg_dump [option...] [dbname]
pg_dump -h <主机> -p <端口> -U<用户名> -W<密码>-d <数据库> -f /路径/文件名.sql

命令参数

说明

-h

指定PostgreSQL连接数据库服务器IP地址。

-p

指定连接数据端口。

-U

指定数据库用户。

-W

输入数据库密码。

-d

指定数据库名称。如果没有提供数据库名字,那么使用PGDATABASE环境变量的数值。

-f

指定输入到文件名。

-F

指定转储格式,默认为脚本格式。

备份数据完成后,可以通过psql恢复数据。

举例

  • 路径根据数据库软件安装实际路径为准,本章以路径“/usr/local/pgsql”为例。
  • 数据库名,以实际要备份的数据库名字为准,本章以postgres为例。
  1. 只导出postgres数据库的数据(-s表示不包括数据模式 )。该命令在root用户下执行。
    1
    /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql -s postgres
    
  2. 导出postgres数据库(包括数据)。该命令在root用户下执行。
    1
    /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql postgres
    
  3. 导出postgres数据库中表table01的数据。

    创建表table01。该命令在登录数据库后执行:

    1
    postgres=create table "table01" ("Name" varchar(255));
    

    以下命令在root用户下执行:

    /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql -t table01 postgres
  4. 导出postgres数据库中表table01的数据,以insert语句形式保存。
    1
    /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql -t table01 --column-inserts postgres
    
  5. 恢复数据到bk01数据库。其中bk01为已创建完毕的数据库。
    1
    /usr/local/pgsql/bin/psql -U postgres -f /postgres.sql bk01