您可以使用PostgreSQL自带的工具pg_dump将实例的数据进行逻辑备份,并导出到本地保存。
背景信息
本文使用CentOS 7操作系统和PostgreSQL 10版本为例进行演示。
前提条件
- RDS PostgreSQL实例已设置白名单放通ECS实例或本地主机的IP。
- ECS实例或本地主机已安装和RDS PostgreSQL实例相同版本的PostgreSQL。
注意事项
建议使用高权限账号进行备份,避免出现权限不足的问题。
备份单个数据库
- 登录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
- 命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
备份指定表
- 登录ECS实例或本地主机,使用如下命令备份目标数据库的指定表。
pg_dump -h '<hostname>' -U <username> -p <port> -t <Schema>.<table> -Fc <dbname> > <dumpdir>
参数 说明 hostname RDS PostgreSQL实例连接地址。 username RDS PostgreSQL实例高权限账号名称。 port RDS PostgreSQL实例端口。 Schema 备份表所在的Schema,默认为Public,如果表所在的Schema为Public,可省略。 table 需要备份的表。可以用多个 -t <Schema>.<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
- 命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
备份数据库时排除指定表
- 登录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
- 命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
备份数据库模式(不备份数据)
- 登录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
- 命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
相关文档
如果数据库出现异常需要恢复数据,请参见使用pg_restore恢复逻辑备份文件数据。