在搭建容灾实例之前,您需确保源实例(即需进行容灾的实例)与目标实例(灾备实例,即RDS PostgreSQL实例)之间的网络能够互通。此外,还需在源实例中创建容灾同步账号,并配置相关文件。本文将以源实例为ECS自建PostgreSQL实例为例,介绍容灾实例搭建的准备工作。
前提条件
已创建目标RDS PostgreSQL实例,且需要满足如下条件。详情请参见创建RDS PostgreSQL实例。
实例大版本与源实例相同。
实例为主实例,只读实例不支持搭建为灾备实例。
实例计费方式为按量计费或包年包月,Serverless实例不支持搭建为灾备实例。
实例为空,无数据,可用存储空间大于等于自建PostgreSQL中数据大小的总和。
实现网络互通
网络互通方案概览
源实例类型 | 网络互通方式 |
本地IDC自建 | |
其他云自建 | |
阿里云ECS自建 | 说明 如果ECS与目标RDS PostgreSQL实例位于同一VPC,则无需进行网络打通。 |
其他云托管 | |
阿里云RDS | 说明 如果源RDS PostgreSQL实例与目标RDS PostgreSQL实例位于同一VPC,则无需进行网络打通。 |
如果源实例支持公网访问,则可以通过公网NAT网关实现各类源实例与目标实例VPC网络之间的互通。本文介绍如何配置目标实例(灾备实例,即RDS PostgreSQL实例),以实现通过公网NAT网关进行网络互通。
对于不支持公网访问的源实例,您可以使用云企业网实现网络互通,详细操作请参见云企业网配置实现网络互通。
配置目标实例的公网NAT网关
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击数据库连接。在数据库连接页查看目标实例的VPC和VSwitch。
将鼠标悬浮在VPC ID上,即可查看VSwitch ID。
单击的VPC ID,进入专有网络控制台。
单击资源管理页签,在公网访问服务区域的公网NAT网关处,单击立即创建。
在创建公网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。
在确认订单页面确认公网NAT网关的配置信息,选中服务协议并单击确认订单。
当出现恭喜,购买成功!的提示后,说明您创建成功。
配置源实例
步骤一:创建容灾同步账号
在搭建容灾关系时,需要源实例提供用于容灾同步的数据库账号(下称为同步账号)。
连接源PostgreSQL实例,创建同步账号,并设置所需的权限属性。例如,创建一个名为replicatoraccount的同步账号。
CREATE ROLE replicatoraccount CREATEROLE REPLICATION LOGIN PASSWORD 'your_password';
为同步账号replicatoraccount授予
pg_monitor
权限。GRANT pg_monitor TO replicatoraccount;
使用创建的同步账号replicatoraccount连接源PostgreSQL实例,执行以下SQL语句,以检查其是否具备所需权限。
执行如下SQL语句,创建测试账号testreplicator并赋予
REPLICATION
权限。如果创建成功,则表明同步账号replicatoraccount已具备所需的同步权限。CREATE USER testreplicator WITH REPLICATION;
如果遇到类似于
must be superuser to create replication users
的报错,请使用具备SUPERUSER
权限的账号连接源实例,为同步账号replicatoraccount授予SUPERUSER
权限,例如执行命令ALTER USER replicatoraccount WITH SUPERUSER;
。删除测试账号testreplicator。
DROP USER IF EXISTS testreplicator;
步骤二:配置ECS安全组
登录ECS管理控制台。
在左侧导航栏,选择
。在顶部菜单栏左上角处,选择地域。
找到目标ECS实例,单击实例ID。
在安全组页签,单击安全组名称。
在安全组详情页面的访问规则区域,单击入方向页签中的手动添加按钮。添加如下安全组规则。
需要添加的安全组及关键参数说明如下:
协议类型
端口范围
授权对象
全部 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为例进行配置。
登录自建PostgreSQL数据库所在的ECS。详细操作请参见远程连接ECS。
获取pg_hba.conf文件位置。
说明该命令需要切换至root用户执行。
find / -name pg_hba.conf
返回结果:
/var/lib/pgsql/13/data/pg_hba.conf
进入pg_hba.conf文件目录。
cd /var/lib/pgsql/13/data/
编辑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。
连接源PostgreSQL,重新加载配置使其生效。
SELECT pg_reload_conf();
返回结果示例:
pg_reload_conf ---------------- t (1 row)
步骤四:配置postgresql.conf文件
详细操作请参见配置postgresql.conf文件。
步骤五:配置服务器防火墙
详细操作请参见配置服务器防火墙。