本文介绍如何使用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,否则可能出现连通性问题。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击数据库连接,然后在网络类型后单击VPC网络的链接。
在专有网络管理控制台中,选择资源管理页签,在公网访问服务区域,单击立即创建。
在公网NAT网关创建页,配置如下关键参数,其他参数保持默认。
参数
说明
取值示例
弹性公网IP
如果您已有弹性公网IP,则选择已有即可。本文选择新购弹性公网IP。
新购弹性公网IP
带宽峰值
按需选择带宽峰值,本文介绍一键上云,可调整带宽峰值为最大,避免带宽限制造成的迁移缓慢。
200Mbps
单击立即购买。
确认参数配置无误后,勾选服务协议,单击确认订单。
如果出现如下页面,即表示创建公网NAT网关成功,同时已绑定弹性公网IP,配置了SNAT条目。
单击弹性公网IP的资源ID,即可在弹性公网IP实例信息页,查看公网IP地址。
步骤二:自建数据库或其他云厂商实例配置
自建PostgreSQL数据库配置
- 重要
pg_hba.conf文件中配置的IP地址为步骤一中
RDS PostgreSQL实例绑定的弹性公网IP/32
。
其他云厂商PostgreSQl实例配置
修改wal_keep_segments或wal_keep_size参数取值,具体操作请参见各云厂商官方文档。
查看pg_wal目录下所能保留的过去日志文件段的最小大小,防止全量备份完成之后由于源实例wal日志被移除导致需要重新备份。
wal_keep_segments:适用于PostgreSQL 10、11、12,建议设置大于等于4096。
wal_keep_size:适用于PostgreSQL 13、14和15,建议设置大于等于65536。
创建迁移账号。
CREATE USER migratetest CREATEROLE REPLICATION LOGIN PASSWORD '123456'; GRANT pg_monitor TO migratetest;
说明上述命令中的账号(
migratetest
)和密码(123456
)仅为示例,请根据实际需要修改。开启公网连接并配置安全组或白名单,允许步骤一中RDS PostgreSQL实例绑定的弹性公网IP访问数据库,具体操作请参见各云厂商官方文档。
重要请确保其他云厂商的PostgreSQL实例已开放了ICMP协议,您可以使用
ping <其他云厂商的PostgreSQL实例公网连接地址>
命令查看。
步骤三:上云评估
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击一键上云/容灾搭建,单击可行性评估页签。
在配置向导的选择场景与源端类型步骤中,选择场景为迁移上云,并选择源端为自建实例或者其他实例,单击下一步。
在目标实例配置步骤中,单击下一步。
在源实例配置步骤中,勾选所有选项后,单击下一步。
在发起可行性评估步骤中,设置如下参数。
参数
取值说明
迁移任务名
系统自动生成,无需修改。
源端 VPC IP/DNS
公网自建PostgreSQL数据库:配置为部署数据库的服务器公网IP。
其他云厂商的PostgreSQL实例:配置为其他云厂商PostgreSQL实例的公网连接地址。
源端Port
公网自建PostgreSQL数据库:数据库端口,可通过
netstat -a | grep PGSQL
命令查看。其他云厂商的PostgreSQL实例:前往各云厂商管理控制台查看。
用户名
步骤二中创建的迁移账号和密码。
密码
单击创建可行性评估任务。
迁移评估完成后,您可以在可行性评估页面的迁移上云列表查看迁移评估任务的状态。
只有状态为成功,您才能进行迁移上云。
如果状态为失败,请单击操作列的查看报告,根据报错进行处理,常见报错请参见解读上云评估报告。
说明其他云厂商可能存在自研定制的PostgreSQL插件,如在迁移过程中出现插件不兼容报错,请提交工单处理。
处理报错后,您可以单击操作列的重新评估,重新开始评估任务。
步骤四:迁移上云
只有上云评估状态为成功时,才能执行本步骤。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击一键上云/容灾搭建,切换至迁移上云页签,单击创建迁移上云任务。
在创建迁移上云任务窗口中,从关联评估任务列表中选择步骤三中已成功的上云评估任务。
选择关联评估任务后,其他参数将会自动获取,无需配置。
单击发起迁移上云,系统将自动启动上云任务。
警告迁移上云任务期间,请确保源实例可以被正常访问,请勿执行重启等操作,如果源实例闪断或HA切换,将导致上云任务失败。
上云切换。
在迁移上云任务中,您可以单击上云阶段列的链接,查看当前上云任务进度。
当上云阶段为增量同步时,可单击操作列的上云切换,将RDS PostgreSQL提升为主库,正式提供服务。
在切换上云窗口,根据上云须知提示,设置源实例只读或应用停止写入。
设置源实例只读:
-- 设置数据库只读 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();
选中所有复选框,单击立即切换,等待迁移完成。