容灾实例搭建准备

在搭建容灾实例之前,您需确保源实例(即需进行容灾的实例)与目标实例(灾备实例,即RDS PostgreSQL实例)之间的网络能够互通。此外,还需在源实例中创建容灾同步账号,并配置相关文件。本文将以源实例为ECS自建PostgreSQL实例为例,介绍容灾实例搭建的准备工作。

前提条件

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

    • 实例大版本与源实例相同。

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

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

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

实现网络互通

网络互通方案概览

源实例类型

网络互通方式

本地IDC自建

高速通道VPN网关智能接入网关云企业网

其他云自建

智能接入网关云企业网公网NAT网关

阿里云ECS自建

云企业网公网NAT网关

说明

如果ECS与目标RDS PostgreSQL实例位于同一VPC,则无需进行网络打通。

其他云托管

智能接入网关云企业网公网NAT网关

阿里云RDS

云企业网公网NAT网关

说明

如果源RDS PostgreSQL实例与目标RDS PostgreSQL实例位于同一VPC,则无需进行网络打通。

如果源实例支持公网访问,则可以通过公网NAT网关实现各类源实例与目标实例VPC网络之间的互通。本文介绍如何配置目标实例(灾备实例,即RDS PostgreSQL实例),以实现通过公网NAT网关进行网络互通。

对于不支持公网访问的源实例,您可以使用云企业网实现网络互通,详细操作请参见云企业网配置实现网络互通。

配置目标实例的公网NAT网关

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

  2. 在左侧导航栏单击数据库连接。在数据库连接页查看目标实例的VPCVSwitch

    将鼠标悬浮在VPC ID上,即可查看VSwitch ID

    image

  3. 单击的VPC ID,进入专有网络控制台。

  4. 单击资源管理页签,在公网访问服务区域的公网NAT网关处,单击立即创建

    image

  5. 在创建公网NAT网关页面,配置以下购买信息,然后单击立即购买

    配置

    说明

    付费模式

    默认选择为按量付费,即一种先使用后付费的付费模式。更多信息,请参见公网NAT网关计费

    资源组

    选择VPC所属的资源组。更多信息,请参见资源组概述

    标签

    • 标签键:选择或输入完整的标签键。

      最多支持输入20个标签键。一个标签键最多支持128个字符,不能以aliyun和acs:开头,不能包含http://或者https://。

    • 标签值:选择或输入完整的标签值。

      最多支持输入20个标签值。一个标签值最多支持128个字符,不能以aliyun和acs:开头,不能包含http://或者https://。

    所属地域

    选择目标RDS PostgreSQL实例所在地域。

    所属专有网络

    选择目标RDS PostgreSQL实例的VPC。

    关联交换机

    选择目标RDS PostgreSQL实例的VSwitch。

    计费类型

    默认选择为按使用量计费,即按公网NAT网关实际使用量收费。更多信息,请参见公网NAT网关计费

    计费周期

    默认选择为按小时,即按使用量计费公网NAT网关的计费周期为1小时,不足1小时按1小时计算。

    实例名称

    设置公网NAT网关实例的名称。

    实例名称长度为2~128个字符,以英文大小写字母或中文开头,可包含数字、下划线(_)和短划线(-)。

    访问模式

    选择VPC全通模式(SNAT):选择了VPC全通模式,在公网NAT网关创建成功后当前VPC内所有实例即可通过该公网NAT网关访问公网。

    弹性公网IP

    选择弹性公网IP地址。如果您还未购买弹性公网IP地址,请参见VPC全通模式组合购买公网NAT网关和弹性公网IP

  6. 确认订单页面确认公网NAT网关的配置信息,选中服务协议并单击确认订单

    当出现恭喜,购买成功!的提示后,说明您创建成功。

配置源实例

步骤一:创建容灾同步账号

在搭建容灾关系时,需要源实例提供用于容灾同步的数据库账号(下称为同步账号)。

  1. 连接源PostgreSQL实例,创建同步账号,并设置所需的权限属性。例如,创建一个名为replicatoraccount的同步账号。

    CREATE ROLE replicatoraccount CREATEROLE REPLICATION LOGIN PASSWORD 'your_password';
  2. 为同步账号replicatoraccount授予pg_monitor权限。

    GRANT pg_monitor TO replicatoraccount;
  3. 使用创建的同步账号replicatoraccount连接源PostgreSQL实例,执行以下SQL语句,以检查其是否具备所需权限。

    1. 执行如下SQL语句,创建测试账号testreplicator并赋予REPLICATION权限。如果创建成功,则表明同步账号replicatoraccount已具备所需的同步权限。

      CREATE USER testreplicator WITH REPLICATION;

      如果遇到类似于must be superuser to create replication users的报错,请使用具备SUPERUSER权限的账号连接源实例,为同步账号replicatoraccount授予SUPERUSER权限,例如执行命令ALTER USER replicatoraccount WITH SUPERUSER;

    2. 删除测试账号testreplicator。

      DROP USER IF EXISTS testreplicator;

步骤二:配置ECS安全组

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在顶部菜单栏左上角处,选择地域。

  4. 找到目标ECS实例,单击实例ID。

  5. 安全组页签,单击安全组名称。

  6. 安全组详情页面的访问规则区域,单击入方向页签中的手动添加按钮。添加如下安全组规则。

    需要添加的安全组及关键参数说明如下:

    协议类型

    端口范围

    授权对象

    全部 ICMP(IPv4)

    源:-1/-1

    目的:-1/-1

    配置为实现网络互通步骤中,创建的目标RDS PostgreSQL实例公网NAT网关的弹性公网IP。

    说明

    您可以在目标公网NAT网关的绑定的弹性公网IP页签,查看该公网NAT网关的弹性公网IP。

    TCP

    ECS自建PostgreSQL数据库的端口,可通过netstat -a | grep PGSQL命令查看。

步骤三:配置pg_hba.conf文件

说明

本步骤以CentOS 7系统安装PostgreSQL 13为例进行配置。

  1. 登录自建PostgreSQL数据库所在的ECS。详细操作请参见远程连接ECS

  2. 获取pg_hba.conf文件位置。

    说明

    该命令需要切换至root用户执行。

    find / -name pg_hba.conf

    返回结果:

    /var/lib/pgsql/13/data/pg_hba.conf
  3. 进入pg_hba.conf文件目录。

    cd /var/lib/pgsql/13/data/
  4. 编辑pg_hba.conf文件,在末尾添加如下内容。

    host  all    replicatoraccount  121.XX.XX.XX/32  md5
    host  replication  replicatoraccount  121.XX.XX.XX/32  md5

    关键参数解释:

    • replicatoraccount:已创建的同步账号。具体请参见步骤一:创建容灾同步账号

    • 121.XX.XX.XX实现网络互通时,创建的目标RDS PostgreSQL实例公网NAT网关的弹性公网IP。

      说明

      您可以在目标公网NAT网关的绑定的弹性公网IP页签,查看该公网NAT网关的弹性公网IP。

  5. 连接源PostgreSQL,重新加载配置使其生效。

    SELECT pg_reload_conf();

    返回结果示例:

     pg_reload_conf
    ----------------
     t
    (1 row)

步骤四:配置postgresql.conf文件

详细操作请参见配置postgresql.conf文件

步骤五:配置服务器防火墙

详细操作请参见配置服务器防火墙