您可以使用PostgreSQL自带的工具pg_dump将实例的数据进行逻辑备份,并导出到本地保存。

背景信息

pg_dump是备份PostgreSQL数据库的工具,可用于备份单个数据库。更多详情请参见pg_dump

本文使用Linux7操作系统和PostgreSQL 10版本为例进行演示。

前提条件

  • RDS PostgreSQL实例已设置白名单放通ECS实例或本地主机的IP。
  • ECS实例或本地主机已安装和RDS PostgreSQL实例相同版本的PostgreSQL。

注意事项

建议使用高权限账号进行备份,避免出现权限不足的问题。

备份单个数据库

  1. 登录ECS实例或本地主机,使用如下命令备份目标数据库。
    pg_dump -h '<hostname>' -U <username> -p <port> -Fc <dbname> > <dumpdir>
    参数 说明
    hostname RDS PostgreSQL实例连接地址。
    说明
    username RDS PostgreSQL实例高权限账号名称。
    port RDS PostgreSQL实例端口。
    -Fc 输出格式。-Fc表示输出自定义格式的存档,这个格式适合通过pg_restore进行导入还原。更多选项的详细说明请参见pg_dump
    dbname 目标数据库名称。
    dumpdir 导出的备份文件路径及名称。

    示例

    pg_dump -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U test123 -p 3433 -Fc testdb > /tmp/testdb.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
    逻辑备份PostgreSQL数据_备份_RDS PostgreSQL 数据库_云数据库 RDS 版 阿里云技术文档 第1张

备份指定表

  1. 登录ECS实例或本地主机,使用如下命令备份目标数据库的指定表。
    pg_dump -h '<hostname>' -U <username> -p <port> -t <table> -Fc <dbname> > <dumpdir>
    参数 说明
    hostname RDS PostgreSQL实例连接地址。
    说明
    username RDS PostgreSQL实例高权限账号名称。
    port RDS PostgreSQL实例端口。
    table 需要备份的表。可以用多个-t <table>选择多个表。
    -Fc 输出格式。-Fc表示输出自定义格式的存档,这个格式适合通过pg_restore进行导入还原。更多选项的详细说明请参见pg_dump
    dbname 目标数据库名称。
    dumpdir 导出的备份文件路径及名称。

    示例

    pg_dump -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U test123 -p 3433 -t products1 -Fc testdb2 > /tmp/testdb2.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
    逻辑备份PostgreSQL数据_备份_RDS PostgreSQL 数据库_云数据库 RDS 版 阿里云技术文档 第2张

备份数据库时排除指定表

  1. 登录ECS实例或本地主机,使用如下命令备份目标数据库并排除指定表。
    pg_dump -h '<hostname>' -U <username> -p <port> -T <table> -Fc <dbname> > <dumpdir>
    参数 说明
    hostname RDS PostgreSQL实例连接地址。
    说明
    username RDS PostgreSQL实例高权限账号名称。
    port RDS PostgreSQL实例端口。
    table 需要排除的表。可以用多个-T <table>排除多个表。
    -Fc 输出格式。-Fc表示输出自定义格式的存档,这个格式适合通过pg_restore进行导入还原。更多选项的详细说明请参见pg_dump
    dbname 目标数据库名称。
    dumpdir 导出的备份文件路径及名称。

    示例

    pg_dump -h 'pgm-bpxxxxx.pg.rds.aliyuncs.com' -U test123 -p 3433 -T products1 -Fc testdb2 > /tmp/testdb2.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
    逻辑备份PostgreSQL数据_备份_RDS PostgreSQL 数据库_云数据库 RDS 版 阿里云技术文档 第3张

备份数据库模式(不备份数据)

  1. 登录ECS实例或本地主机,使用如下命令备份目标数据库模式。
    pg_dump -h '<hostname>' -U <username> -p <port> -s -Fc <dbname> > <dumpdir>
    参数 说明
    hostname RDS PostgreSQL实例连接地址。
    说明
    username RDS PostgreSQL实例高权限账号名称。
    port RDS PostgreSQL实例端口。
    -s 仅备份数据库模式,不备份数据。更多选项的详细说明请参见pg_dump
    -Fc 输出格式。-Fc表示输出自定义格式的存档,这个格式适合通过pg_restore进行导入还原。更多选项的详细说明请参见pg_dump
    dbname 目标数据库名称。
    dumpdir 导出的备份文件路径及名称。

    示例

    pg_dump -h 'pgm-bpxxxxx.pg.rds.aliyuncs.com' -U test123 -p 3433 -s -Fc testdb2 > /tmp/testdb2.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
    逻辑备份PostgreSQL数据_备份_RDS PostgreSQL 数据库_云数据库 RDS 版 阿里云技术文档 第4张

后续步骤

如果数据库出现异常需要恢复数据,请参见使用逻辑备份文件恢复数据