RDS PostgreSQL实例间异地容灾

为了保障业务的连续性和高可用性,RDS PostgreSQL提供容灾功能,支持搭建RDS PostgreSQL跨地域容灾实例,以实现异地容灾能力。本文介绍如何使用容灾功能,实现RDS PostgreSQL实例间的异地容灾。

前提条件

  • 已创建目标RDS PostgreSQL实例(灾备实例),且需要满足如下条件。详情请参见创建RDS PostgreSQL实例

    • 实例大版本与源实例(即需进行容灾的RDS PostgreSQL实例)相同。

    • 实例为主实例,只读实例不支持搭建为灾备实例。

    • 实例计费方式为按量计费或包年包月,Serverless实例不支持搭建为灾备实例。

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

  • 已在源RDS PostgreSQL实例(即需进行容灾的实例)中,创建了容灾同步账号。详细操作请参见创建容灾同步账号

步骤一:实现网络互通

使用云企业网CEN(Cloud Enterprise Network)实现阿里云RDS PostgreSQL源实例与目标灾备实例的VPC网络互通。

说明

本文以同一阿里云账号下不同地域的RDS PostgreSQL为例,如果您的RDS PostgreSQL源实例与目标实例位于不同的阿里云账号下,请参见使用云企业网实现跨地域跨账号VPC互通(企业版),实现网络互通。

  1. 登录云企业网管理控制台

  2. 云企业网实例页面,单击创建云企业网实例

  3. 创建云企业网实例对话框,选择单独创建,根据以下信息配置云企业网实例,然后单击确认

    说明

    您也可以选择场景化创建,根据界面提示进行创建。

    参数

    说明

    名称

    输入云企业网实例的名称。

    描述

    输入云企业网实例的描述。

    资源组

    选择云企业网实例所属的资源组。

    如果不选择,云企业网实例创建完成后将归属于默认资源组。

    您可以在资源管理控制台管理云企业网资源以及其他云产品资源所属的资源组。更多信息,请参见什么是资源管理

    标签

    为云企业网实例添加标签。

    • 标签键:不允许为空字符串。最多支持64个字符,不能以aliyunacs:开头,不能包含http://或者https://

    • 标签值:可以为空字符串。最多支持128个字符,不能以aliyunacs:开头,不能包含http://或者https://

    支持为云企业网实例添加多个标签。关于标签的更多信息,请参见标签

  4. 云企业网实例页面,找到创建的目标云企业网实例,单击目标实例ID。

  5. 基本信息页签,单击VPC后的image,将RDS PostgreSQL源实例和目标实例的VPC添加到云企业网实例中。

    image

    1. 连接网络实例页面,配置以下主要参数,以设置RDS PostgreSQL源实例的信息。

      参数

      说明

      实例类型

      选择专有网络(VPC)

      地域

      选择RDS PostgreSQL源实例所在地域。本示例选择华北2(北京)

      网络实例

      选择RDS PostgreSQL源实例的VPC ID。

      您可以在RDS PostgreSQL实例的数据库连接页面,查看其VPC ID。

      交换机

      选择RDS PostgreSQL源实例的VSwitch ID,并至少选择一个其他可用区的VSwitch ID,以实现多可用区容灾。

      您可以在RDS PostgreSQL实例的数据库连接页面,查看其VSwitch ID。

    2. 单击确定创建

    3. 单击继续创建连接重复上述步骤,设置RDS PostgreSQL目标实例的信息。

  6. 在云企业网实例详情页面,选择基本信息 > 带宽包管理,单击购买带宽包(预付费)

  7. 在购买页面,根据以下信息配置带宽包,然后单击立即购买并完成支付。

    配置项

    说明

    商品类型

    选择带宽包的商品类型。

    • 非跨境:指互通区域为中国内地之间的带宽包,或互通区域为非中国内地之间的带宽包。例如:亚太与北美。

    • 跨境:指互通区域为中国内地与非中国内地的带宽包。例如:中国内地与北美。

    本示例选择非跨境

    云企业网

    选择需购买带宽包的云企业网实例。

    完成支付后,带宽包自动绑定至该云企业网实例。

    区域-A

    选择参与互通的网络实例所在的区域。

    本示例选择中国内地

      说明

      带宽包创建后,不支持修改互通区域。

      带宽包支持的区域及地域信息,请参见使用带宽包

    区域-B

    选择参与互通的网络实例所在的区域。

    本示例选择中国内地

    计费方式

    显示带宽包的计费方式。默认为按带宽计费。

    带宽包计费说明,请参见计费说明

    带宽值

    请根据实际业务需求选择带宽包的带宽值。单位:Mbps。

    带宽包名称

    输入带宽包的名称。

    购买时长

    选择带宽包的购买时长。

    选中到期自动续费可开启带宽包自动续费功能。

    资源组

    选择带宽包所属的资源组。选择默认资源组。

    仅购买非跨境的带宽包时,支持配置该项。

  8. 基本信息 > 带宽包管理页签,单击设置跨地域带宽

  9. 连接网络实例页面,根据以下主要信息配置跨地域连接,然后单击确定创建

    配置项

    说明

    实例类型

    选择跨地域连接

    地域

    选择要互通的地域。本示例选择华北2(北京)

    转发路由器

    系统自动显示当前地域下转发路由器的实例ID。

    连接名称

    输入跨地域连接的名称。

    对端地域

    选择要互通的对端地域。本示例选择华东1(杭州)

    转发路由器

    系统自动显示当前地域下转发路由器的实例ID。

    带宽分配方式

    跨地域连接支持以下带宽分配方式,本示例选择从带宽包分配

    • 从带宽包分配:从已经购买的带宽包中分配带宽。

    • 按流量付费:按照跨地域连接实际使用的流量计费。

    带宽包实例

    选择云企业网实例已绑定的带宽包实例。

    带宽

    输入跨地域连接的带宽值。单位:Mbps。

    默认链路类型

    保持默认值。

    高级配置

    保持默认配置,即选中全部高级配置选项。

    • 自动关联至转发路由器的默认路由表

      开启本功能后,跨地域连接将与两个地域的转发路由器的默认路由表建立关联转发关系,两个地域的转发路由器将通过查询默认路由表转发跨地域间的流量。

    • 自动传播系统路由至转发路由器的默认路由表

      开启本功能后,跨地域连接将与两个地域的转发路由器的默认路由表建立路由学习关系。

    • 自动发布路由到对端地域

      开启本功能后,将允许跨地域连接自动将本端转发路由器的路由表(指与跨地域连接建立关联转发关系的路由表)中的路由传播至对端转发路由器的路由表(指与跨地域连接建立路由学习关系的路由表),以实现网络实例的跨地域互通。

    配置完成后,在基本信息页签,可以看到带宽包及已分配带宽的信息。

    image

  10. 访问RDS PostgreSQL源实例,将目标实例的VPC网段添加到其白名单中。详细操作请参见设置白名单

    您可以在RDS PostgreSQL实例的数据库连接页面查看其VPC网段,例如:192.168.0.0/16。

步骤二:评估容灾可行性

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

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

  3. 选择场景容灾搭建,源端为阿里云RDS实例。单击下一步

  4. 确认目标实例配置后,单击下一步

  5. 源实例配置步骤,选中全部配置准备项,单击下一步

  6. 发起迁移评估步骤,配置源实例信息。

    参数

    取值说明

    灾备搭建任务名

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

    RDS源实例地域

    源实例所在地域。本示例选择华北2(北京)

    RDS源实例名称

    源实例的实例ID。

    源实例IP或域名

    源实例内网连接地址。您可以在RDS PostgreSQL实例的数据库连接页面查看其内网连接地址。

    用户名

    填写用于搭建容灾关系的同步账号。本文以replicatoraccount为例。

    密码

    填写用于搭建容灾关系的同步账号的密码。

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

    说明

    迁移评估任务期间,目标RDS PostgreSQL实例状态将变更为维护实例中

    您可以在可行性评估页面下的容灾搭建任务列表中查看所发起的评估任务的状态。

    1. 如果任务状态成功,您可以进行容灾搭建步骤,见下文的步骤三:搭建容灾

    2. 如果任务状态失败,请单击操作列的查看报告,根据报错进行处理。常见报错请参见解读容灾搭建可行性评估报告

步骤三:搭建容灾

说明

只有可行性评估状态为成功时,才能进行本步骤。

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

  2. 在左侧导航栏单击一键上云/容灾搭建,选择容灾搭建

  3. 单击创建容灾关系

  4. 创建容灾关系弹窗中,选择已成功的容灾搭建可行性评估任务。

  5. 单击创建容灾关系,发起容灾搭建任务。

    容灾搭建期间,目标RDS PostgreSQL实例状态将变更为维护实例中。您可以在“容灾搭建”页面下的任务列表中查看所发起的容灾搭建任务的信息。

    • 单击搭建阶段列,查看容灾搭建所需阶段。

    • 搭建阶段增量同步时,说明容灾搭建已完成。

    • 单击操作列的查看日志,可以查看搭建任务的详细日志。

  6. (可选)连接源实例,执行TABLE pg_stat_replication;,查看主备关系。

    image

步骤四:(可选)配置内网DNS解析

通过配置内网DNS解析,您可以在源实例和目标实例所在的两个VPC内网中,将指定的内网域名解析到源实例或目标实例的内网连接地址(IP地址或域名)。这样,您可以将该内网域名用作业务连接数据库的地址。当源实例出现故障时,您可以快速提升目标实例为主库,并将内网域名的指向切换到目标实例,从而实现业务的无缝故障转移。

  1. 登录到云解析DNS控制台

  2. 在左侧导航栏单击内网DNS解析(PrivateZone)

  3. 内网DNS解析(PrivateZone)页面,选择内置权威 > 用户域名页签。

  4. 点击添加域名(Zone),在弹出的添加内置权威域名 (Zone)页面,配置内置权威域名参数。

    • 内置权威域名 (Zone):本示例以pg_test_1106为例。

    • 域名生效范围 > 阿里云VPC内网选择为源实例和目标实例的VPC。

      说明

      您可以在RDS PostgreSQL实例的数据库连接页面查看VPC。

  5. 单击新建域名操作列的解析记录,跳转到解析记录页面。

    image

  6. 单击添加记录,在弹出的添加记录页,配置各项参数后,单击确定

    • 记录类型:选择CNAME

    • 主机记录:一般是指子域名的前缀。本示例不需要前缀,以主域名pg_test_1106作为子域名,输入@

      说明

      您可以通过子域名前缀设置出不同的子域名,例如设置子域名api.<主域名>为接口业务使用,子域名pay.<主域名>为支付系统使用。有关更多子域名设置的内容,请参见如何设置子域名?

    • 解析请求来源:是指发起DNS查询请求的来源,一般选择默认;如果您需要针对不同解析请求来源的用户返回不同的IP地址,可以新增其他解析请求来源,例如运营商、境外等智能解析线路。具体请参考智能解析

      重要

      一定要设置一条解析请求来源为默认的解析记录,用于兜底解析,避免某些解析请求没有匹配到相符的“解析请求来源”的解析记录导致解析失败。

    • 记录值:本示例新增2个记录值,分别填写源实例和目标实例的内网连接地址,并将源实例的权重设置为100,目标实例权重设置为0。

      image

  7. 解析变更确认对话框中核对本次的配置是否有误,点击确定后完成解析记录的添加。

  8. 验证内网域名效果。

    1. 登录与源RDS PostgreSQL实例在同一VPC下的ECS。

    2. 使用ping命令验证内网域名的连通性。

      image

      内网域名指向源实例的内网连接地址。

    您也可以通过内网域名连接源RDS PostgreSQL实例,若连接成功,则表明内网域名配置成功。详细操作请参见连接PostgreSQL实例

当源实例出现故障时,您可以修改解析记录,将目标实例的权重改为100,源实例的权重改为0,将内网域名的指向切换到目标实例,从而实现业务的无缝故障转移。详细操作请参见修改解析记录

修改后效果验证:

  1. 登录与源RDS PostgreSQL实例在同一VPC下的ECS。

  2. 使用ping命令验证内网域名的连通性。

    image

    内网域名指向目标实例的内网连接地址。

您也可以通过内网域名连接目标RDS PostgreSQL实例,若连接成功,则表明内网域名配置已成功。详细操作请参见连接PostgreSQL实例