您可以使用PostgreSQL自带的工具pg_dump将实例的数据进行逻辑备份,后续导出到本地保存。
背景信息
pg_dump是备份PostgreSQL数据库的工具,可用于备份单个数据库。更多详情,请参见pg_dump。
前提条件
RDS PostgreSQL实例已设置白名单,允许ECS实例或本地主机的IP访问。
ECS实例或本地主机已安装和RDS PostgreSQL实例相同版本的PostgreSQL数据库。
说明本文使用CentOS 7操作系统和PostgreSQL 15版本为例进行演示。
注意事项
建议使用高权限账号进行备份,避免出现权限不足的问题。
备份单个数据库
登录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 zht -p 5432 -Fc zht01 > /tmp/testdb.dump
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。您可执行
ll /tmp/testdb.dump
命令确认备份文件是否已成功生成。
备份指定表
登录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 zht -p 5432 -t zhttest0808 -Fc zht01 > /tmp/testdb2.dump
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。您可执行
ll /tmp/testdb2.dump
命令确认备份文件是否已成功生成。
备份数据库时排除指定表
登录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 zht -p 5432 -T zhttest0808 -Fc zht01 > /tmp/testdb3.dump
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。您可执行
ll /tmp/testdb3.dump
命令确认备份文件是否已成功生成。
备份数据库模式(不备份数据)
登录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-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -s -Fc zht01 > /tmp/testdb4.dump
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。您可执行
ll /tmp/testdb4.dump
命令确认备份文件是否已成功生成。
相关文档
如果数据库出现异常需要恢复数据,请参见使用pg_restore恢复逻辑备份文件数据。