阿里云数据库PostgreSQL版支持通过逻辑备份文件将云上数据迁移到本地数据库。
前提条件
本地已安装PostgreSQL,且数据库大版本与RDS PostgreSQL相同。
说明本文所使用的备份工具pg_dump是PostgreSQL的自带工具,在本地安装PostgreSQL的同时会自动安装。
本地数据库中已创建数据库且数据库中无数据,用于恢复数据。
本地数据库已创建superuser用户。
操作步骤
在本地命令行窗口执行如下命令,备份数据。
pg_dump -U <username> -h <hostname> -p <port> <databasename> -f <filename> --exclude-table=public.ha_health_check
参数说明如下:
参数
说明
username
云数据库高权限账号名。如何创建高权限账号,请参见创建账号。
hostname
云数据库主机名。
port
云数据库端口号。
databasename
要备份的数据库名。
filename
要生成的备份文件名称。
--exclude-table=public.ha_health_check
用于跳过高可用检查表。
示例
pg_dump -U testuser -h xxxx.pg.rds.aliyuncs.com -p 5432 testdb -f bkfile.sql --exclude-table=public.ha_health_check
执行如下命令将数据恢复到本地数据库。
psql -U <username> -h <hostname> -d <databasename> -p <port> -f <filename.sql>
参数说明如下:
参数
说明
username
本地数据库superuser用户名。
hostname
本地数据库地址,配置为localhost。
port
本地数据库端口号。
databasename
目的数据库名。
filename
备份文件名称。
示例
psql -U testuser -h localhost -d testdb -p 5432 -f bkfile.sql
由于 RDS 数据库的权限设置和本地数据库不一致,在数据导入过程当中可能会出现一些与权限相关的 WARNING 或 ERROR,可以忽略,例如:
WARNING: no privileges could be revoked for "xxxxx"
ERROR: role "xxxxx" does not exist