本文介绍如何使用PostgreSQL的fdw插件,使RDS PostgreSQL实例支持访问外部开通公网的数据库。
背景信息
RDS PostgreSQL支持通过fdw功能访问外部其他类型数据库,如MySQL、SQL Server、PostgreSQL及Redis等,由于RDS PostgreSQL基于用户VPC的网络构建,如需访问公网上的数据库服务,还需配置公网NAT网关并绑定弹性公网IP(EIP)。
本文通过配置公网NAT网关并绑定弹性公网IP(EIP)的方式,为RDS PostgreSQL赋予访问公网的能力,同时,确保RDS PostgreSQL实例的网络安全(配置SNAT,RDS PostgreSQL可以访问互联网,但不通过NAT网关对互联网提供服务,外网无法通过NAT网关访问RDS PostgreSQL实例)。
NAT网关、SNAT相关信息,请参见使用公网NAT网关SNAT功能访问互联网。
前提条件
-
已具备开通公网的目标数据库,例如:开通公网IP的MySQL、SQL Server、PostgreSQL或Redis等。
-
已创建RDS PostgreSQL实例,操作步骤,请参见快速创建RDS PostgreSQL实例。
重要
RDS PostgreSQL访问开通公网的目标数据库需要使用插件如下,请确保创建的RDS PostgreSQL实例支持对应插件。RDS PostgreSQL实例各版本插件支持情况,请参见支持插件列表。
-
MySQL:mysql_fdw
-
SQL Server:tds_fdw
-
PostgreSQL:postgres_fdw
-
Redis:redis_fdw
-
-
开通公网的目标数据库及RDS PostgreSQL实例均已创建账号。
-
开通公网的目标数据库创建账号,请参见各引擎官方文档。
-
RDS PostgreSQL创建账号,请参见创建账号。
-
-
开通公网的目标数据库已创建数据库并存在数据。
操作步骤
公网NAT网关配置
-
创建NAT网关。
-
登录NAT网关管理控制台。
-
在公网NAT网关页面,单击创建NAT网关。
-
(可选)首次使用NAT网关时,在创建NAT网关页面关联角色创建区域,单击创建关联角色,创建服务关联角色。角色创建成功后即可创建NAT网关。
-
在创建公网NAT网关页面,配置以下购买信息,然后单击立即购买。
说明
下表仅列出关键参数,所有参数的具体信息,请参见使用公网NAT网关SNAT功能访问互联网。
配置
说明
所属地域
选择需要创建公网NAT网关的地域,需要与RDS PostgreSQL实例同一地域。
所属专有网络
选择公网NAT网关实例所属的VPC,需要与RDS PostgreSQL实例的VPC相同。您可以前往RDS管理控制台的数据库连接页面,查看目标实例的VPC。
关联交换机
选择公网NAT网关实例所属的交换机,需要与RDS PostgreSQL实例的交换机相同。您可以前往RDS管理控制台的数据库连接页面,查看目标实例的交换机。
访问模式
本文选择稍后配置。
-
在确认订单页面确认公网NAT网关的配置信息,选中服务协议并单击确认订单。
创建成功后,您可以在公网NAT网关页面查看已创建的公网NAT网关实例。
-
-
为公网NAT网关绑定公网IP(EIP)。
-
在NAT网关管理控制台页面,找到新建的公网NAT网关实例,单击实例ID,进入基本信息页。
-
切换至绑定的弹性公网IP页签,单击绑定弹性公网IP。
-
在绑定弹性公网IP弹窗中,选择新购弹性公网IP并绑定。
-
单击确定。
绑定成功后,在绑定的弹性公网IP处查看已绑定的弹性公网IP。
-
-
创建SNAT条目。
-
在NAT网关管理控制台页面,找到新建的公网NAT网关实例,单击实例ID,进入基本信息页。
-
切换至SNAT管理页签,单击创建SNAT条目。
-
在创建SNAT条目页面,配置以下参数,然后单击确定创建。
配置
说明
SNAT条目粒度
选择SNAT条目的粒度。本文以选择交换机粒度为例:指定交换机下的RDS PostgreSQL实例通过配置的公网IP访问公网。
选择交换机
在下拉列表中选择RDS PostgreSQL实例的交换机。
选择公网IP地址
选择用来提供公网访问的公网IP。本文以选择使用单IP为例,在下拉列表中选择已绑定的EIP。
创建成功后,在SNAT条目列表处查看已配置的SNAT条目。
-
开通公网的目标数据库配置
开通公网的目标数据库需要配置白名单,允许公网NAT网关绑定的EIP访问。
-
MySQL:请参见Privileges Provided by MySQL
-
PostgreSQL:请参见The pg_hba.conf File
-
SQL Server:请参见Configure the Windows Firewall to Allow SQL Server Access
-
Redis:利用防火墙限制IP访问指定端口,例如CentOS中安装iptables工具,使用如下命令:
iptables -A INPUT -s -p tcp --dport -j ACCEPT
RDS PostgreSQL配置
-
连接RDS PostgreSQL实例。具体操作,请参见连接PostgreSQL实例。
-
创建插件。
说明
本文以开通公网的目标数据库MySQL为例,创建mysql_fdw插件。
CREATE EXTENSION mysql_fdw;
-
创建开通公网的目标数据库服务器定义。
CREATE SERVER FOREIGN DATA WRAPPER mysql_fdw OPTIONS ( host '', port '' );
本文以公网MySQL服务为例,配置命令如下:
CREATE SERVER mysql_server80 FOREIGN DATA WRAPPER mysql_fdw OPTIONS ( host 'XX.XX.XX.XX', port '3306' );
-
创建用户映射,将MySQL服务器定义映射到RDS PostgreSQL的某个用户上,在RDS PostgreSQL上使用这个用户访问开通公网的目标数据库MySQL的数据。
CREATE USER MAPPING FOR SERVER OPTIONS ( username '', password '' );
命令示例如下:
CREATE USER MAPPING FOR pg_client SERVER mysql_server80 OPTIONS ( username 'testuser', password 'U123456!' );
-
创建外表。
CREATE FOREIGN TABLE ( id int, name varchar(10) ) SERVER OPTIONS ( dbname '', table_name '' );
命令实例如下:
CREATE FOREIGN TABLE mysql_fdw_test ( id int, name varchar(10) ) SERVER mysql_server80 OPTIONS ( dbname 'testdb', table_name 'test' );
-
连接测试。
完成上述配置后,即可在RDS PostgreSQL实例中访问公网数据库中的表。
以创建名为
mysql_fdw_test
的外表为例,在RDS PostgreSQL中,直接查询外表,即可获取开通公网的目标数据库的数据。SELECT * FROM mysql_fdw_test;
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/167069.html