公网PostgreSQL数据库一键上云

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何使用RDS PostgreSQL一键上云功能,将公网PostgreSQL数据库或其他云厂商的PostgreSQL实例迁移至RDS。

背景

RDS PostgreSQL基于用户VPC的网络构建,一键上云功能默认支持通过内网将其他数据库迁移到RDS PostgreSQL,如需将公网上的PostgreSQL数据库迁移上云,还需配置公网NAT网关并绑定弹性公网IP(EIP)。

本文介绍为RDS PostgreSQL实例配置公网NAT网关并绑定弹性公网IP(EIP),使一键上云功能具备公网上云的能力。

该方法在实现公网一键上云的同时,能够确保RDS PostgreSQL实例的网络安全。

说明

公网NAT网关中配置SNAT条目,使RDS PostgreSQL实例可以访问互联网,但不通过NAT网关对互联网提供服务。NAT网关、SNAT相关信息,请参见使用公网NAT网关SNAT功能访问互联网

应用场景

  • 公网自建PostgreSQL数据库上云。

  • 其他云厂商PostgreSQL实例(例如:Google Cloud SQL、Amazon RDS for PostgreSQL等)迁移至RDS PostgreSQL。

    说明

    其他云厂商可能存在自研定制的PostgreSQL插件,如在迁移过程中出现插件不兼容报错,请提交工单处理。

前提条件

RDS PostgreSQL实例需要满足以下条件:

  • 源实例与目标实例大版本相同,当前支持PostgreSQL 10或以上版本。

    说明
    • 如果源实例版本低于PostgreSQL10,请先自行升级大版本后,再进行一键上云操作。

    • 如果源实例与目标实例大版本不同,则无法通过上云评估检查,不能进行迁移上云。

  • 目标实例为主实例,只读实例不支持一键上云。

  • 目标实例的存储类型为云盘。

  • 目标实例为空,无数据,可用存储空间大于等于源实例中数据大小的总和。

    说明

    如果目标实例中存在数据,则无法通过上云评估检查,不能进行迁移上云,请备份数据后清空实例或购买新实例。

使用限制

无。

影响

无影响。

注意事项

迁移上云任务期间,请确保源实例可以被正常访问,请勿执行重启等操作,如果源实例闪断或HA切换,将导致上云任务失败。

费用

RDS PostrgreSQL需要配置公网NAT网关并绑定弹性公网IP(EIP),该操作涉及相关费用,详情请参见公网NAT网关计费

操作步骤

步骤一:配置NAT网关并绑定弹性公网IP

本步骤为RDS PostgreSQL实例的VPC网络绑定公网IP,使RDS PostgreSQL可以访问具备公网地址的自建数据库或其他云厂商数据库。

重要

配置前请确保RDS实例所在的VPC网络未配置NAT网关,未绑定其他公网IP,否则可能出现连通性问题。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击数据库连接,然后在网络类型后单击VPC网络的链接。

    image..png

  3. 在专有网络管理控制台中,选择资源管理页签,在公网访问服务区域,单击立即创建

    image..png

  4. 公网NAT网关创建页,配置如下关键参数,其他参数保持默认。

    参数

    说明

    取值示例

    弹性公网IP

    如果您已有弹性公网IP,则选择已有即可。本文选择新购弹性公网IP

    新购弹性公网IP

    带宽峰值

    按需选择带宽峰值,本文介绍一键上云,可调整带宽峰值为最大,避免带宽限制造成的迁移缓慢。

    200Mbps

  5. 单击立即购买

  6. 确认参数配置无误后,勾选服务协议,单击确认订单

    如果出现如下页面,即表示创建公网NAT网关成功,同时已绑定弹性公网IP,配置了SNAT条目。

    image..png

  7. 单击弹性公网IP的资源ID,即可在弹性公网IP实例信息页,查看公网IP地址

    image..png

步骤二:自建数据库或其他云厂商实例配置

自建PostgreSQL数据库配置

  1. 配置postgresql.conf文件

  2. 创建迁移账号

  3. 更新pg_hba.conf文件

    重要

    pg_hba.conf文件中配置的IP地址为步骤一RDS PostgreSQL实例绑定的弹性公网IP/32

  4. 配置服务器防火墙

其他云厂商PostgreSQl实例配置

  1. 修改wal_keep_segmentswal_keep_size参数取值,具体操作请参见各云厂商官方文档。

    查看pg_wal目录下所能保留的过去日志文件段的最小大小,防止全量备份完成之后由于源实例wal日志被移除导致需要重新备份。

    • wal_keep_segments:适用于PostgreSQL 10、11、12,建议设置大于等于4096。

    • wal_keep_size:适用于PostgreSQL 13、14和15,建议设置大于等于65536。

  2. 创建迁移账号。

    CREATE USER migratetest CREATEROLE REPLICATION LOGIN PASSWORD '123456';
    GRANT pg_monitor TO migratetest;
    说明

    上述命令中的账号(migratetest)和密码(123456)仅为示例,请根据实际需要修改。

  3. 开启公网连接并配置安全组或白名单,允许步骤一中RDS PostgreSQL实例绑定的弹性公网IP访问数据库,具体操作请参见各云厂商官方文档。

    重要

    请确保其他云厂商的PostgreSQL实例已开放了ICMP协议,您可以使用ping <其他云厂商的PostgreSQL实例公网连接地址>命令查看。

步骤三:上云评估

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击一键上云/容灾搭建,单击可行性评估页签。

  3. 在配置向导的选择场景与源端类型步骤中,选择场景为迁移上云,并选择源端为自建实例或者其他实例,单击下一步

  4. 目标实例配置步骤中,单击下一步

  5. 源实例配置步骤中,勾选所有选项后,单击下一步

  6. 发起可行性评估步骤中,设置如下参数。

    参数

    取值说明

    迁移任务名

    系统自动生成,无需修改。

    源端 VPC IP/DNS

    • 公网自建PostgreSQL数据库:配置为部署数据库的服务器公网IP。

    • 其他云厂商的PostgreSQL实例:配置为其他云厂商PostgreSQL实例的公网连接地址。

    源端Port

    • 公网自建PostgreSQL数据库:数据库端口,可通过netstat -a | grep PGSQL命令查看。

    • 其他云厂商的PostgreSQL实例:前往各云厂商管理控制台查看。

    用户名

    步骤二中创建的迁移账号和密码。

    密码

  7. 单击创建可行性评估任务

    迁移评估完成后,您可以在可行性评估页面的迁移上云列表查看迁移评估任务的状态。

    • 只有状态成功,您才能进行迁移上云

    • 如果状态失败,请单击操作列的查看报告,根据报错进行处理,常见报错请参见解读上云评估报告

      说明

      其他云厂商可能存在自研定制的PostgreSQL插件,如在迁移过程中出现插件不兼容报错,请提交工单处理。

    处理报错后,您可以单击操作列的重新评估,重新开始评估任务。

步骤四:迁移上云

重要

只有上云评估状态为成功时,才能执行本步骤。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击一键上云/容灾搭建,切换至迁移上云页签,单击创建迁移上云任务

  3. 创建迁移上云任务窗口中,从关联评估任务列表中选择步骤三中已成功的上云评估任务。

    选择关联评估任务后,其他参数将会自动获取,无需配置。

  4. 单击发起迁移上云,系统将自动启动上云任务。

    警告

    迁移上云任务期间,请确保源实例可以被正常访问,请勿执行重启等操作,如果源实例闪断或HA切换,将导致上云任务失败。

  5. 上云切换。

    1. 在迁移上云任务中,您可以单击上云阶段列的链接,查看当前上云任务进度。

    2. 当上云阶段为增量同步时,可单击操作列的上云切换,将RDS PostgreSQL提升为主库,正式提供服务。

    3. 切换上云窗口,根据上云须知提示,设置源实例只读或应用停止写入。

      设置源实例只读:

      -- 设置数据库只读
      ALTER SYSTEM SET default_transaction_read_only=on;
      
      -- 重新加载参数配置使修改生效
      SELECT pg_reload_conf();
      
      -- 中断所有现有会话
      SELECT pg_terminate_backend(pid) FROM pg_stat_activity 
      WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
    4. 选中所有复选框,单击立即切换,等待迁移完成。