从RDS PostgreSQL迁移至PolarDB PostgreSQL版

本文介绍通过pg_dumppg_restore命令将RDS PostgreSQL数据库迁移至PolarDB PostgreSQL版中。

迁移的源库为自建PostgreSQL数据库时,请参考从自建PostgreSQL迁移至PolarDB PostgreSQL版

前提条件

PolarDB PostgreSQL版集群的存储空间应大于RDS PostgreSQL数据库的存储空间。

注意事项

该操作为全量数据迁移。为避免迁移前后数据不一致,迁移操作开始前请停止RDS PostgreSQL数据库的相关业务,并停止数据写入。

准备工作

  1. 创建一个Linux操作系统的ECS实例,本案例使用的ECS为Ubuntu 16.04 64位操作系统。详情请参考创建ECS实例

    说明
    • 要求ECS实例和源RDS PostgreSQL数据库、目标PolarDB PostgreSQL版集群网络互通。

    • 可创建一个按量付费的ECS实例,迁移完成后释放实例。

  2. 在ECS实例中安装PostgreSQL客户端,以便执行数据恢复的命令。详情请参考PostgreSQL官方文档

    说明

    请确保安装的PostgreSQL客户端版本与连接的RDS PostgreSQL数据库和PolarDB PostgreSQL版集群版本兼容。

操作步骤一:备份RDS PostgreSQL数据库

该操作为全量数据迁移。为避免迁移前后数据不一致,迁移操作开始前请停止RDS PostgreSQL数据库的相关业务,并停止数据写入。

  1. 在ECS上执行以下命令,备份数据库中的数据。

    pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>

    参数说明:

    • <username>:登录RDS PostgreSQL数据库的账号。

    • <hostname>:RDS PostgreSQL数据库的连接地址,查看数据库连接地址请参考查看或修改连接地址和端口

    • <port>:数据库服务的端口号。

    • <dbname>:指定要连接的数据库的名称,默认为postgres

    • <njobs>:同时执行备份作业的并发数。

      说明
      • 参数<njobs>可减少转储的时间,但也会增加数据库服务器的负载。

      • 如果您的RDS PostgreSQL数据库是9.2以前的版本,您还需要指定--no-synchronized-snapshots参数。

    • <dumpdir>:生成的备份文件所属目录。

    示例:

    pg_dump -U postgres -h pgm-xxxxxxxxx.pg.rds.aliyuncs.com -p 5432 postgres -Fd -j 5 -f postgresdump
  2. 命令行提示Password:时,输入数据库账号对应的密码,数据库开始备份。

  3. 等待备份完成,RDS PostgreSQL数据库数据将备份至指定的目录中,本案例为postgresdump

操作步骤二:数据迁移至PolarDB PostgreSQL版

  1. 在目标PolarDB PostgreSQL版集群中创建账号,详情请参考创建数据库账号账号权限

  2. 在目标PolarDB PostgreSQL版集群中创建用于数据恢复的数据库,指定数据库Owner为上一步创建的账号。详情请参考创建数据库

  3. 在ECS上执行以下命令,将RDS PostgreSQL数据库数据迁移至PolarDB PostgreSQL版集群中。

    pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>

    参数说明:

    • <username>:登录PolarDB PostgreSQL版数据库的账号。

    • <hostname>:PolarDB PostgreSQL版集群的连接地址。

    • <port>:数据库服务的端口号,请参考查看连接地址和端口

    • <dbname>:连接并直接恢复到的目标数据库名。

    • <njobs>:同时执行数据恢复作业的并发数。

      说明

      此选项可减少数据恢复的时间,但也会增加数据库服务器的负载。

    • <dumpdir>:备份文件所在目录。

    示例:

    pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d postgres -j 6 postgresdump
  4. 命令行提示Password:时,输入数据库账号对应的密码,数据开始迁移。

    说明

    如果忘记密码,请参考管理数据库账号

等待数据迁移完成即可。