CREATE SERVER
功能描述
创建一个外部服务器。
外部服务器是存储HDFS集群信息、OBS服务器信息、DLI连接信息或其他同构集群信息的载体。
注意事项
默认只有系统管理员才可以创建外部服务器,否则需要对所使用的FOREIGN DATA WRAPPER授权,授权语法为:
1
|
GRANT USAGE ON FOREIGN DATA WRAPPER fdw_name TO username; |
其中fdw_name为FOREIGN DATA WRAPPER的名字,username为创建SERVER的用户名。
语法格式
1 2 3 |
CREATE SERVER server_name FOREIGN DATA WRAPPER fdw_name OPTIONS ( { option_name ' value ' } [, ...] ) ; |
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
server_name |
要创建的外部服务器的名称。服务器名称在数据库中必须唯一。 |
字符串,长度必须小于等于63。需符合标识符命名规范。 |
FOREIGN DATA WRAPPER fdw_name |
指定外部数据封装器的名字。 |
fdw_name是数据库初始化时系统创建的数据封装器。
|
OPTIONS |
用于指定外部服务器的各类参数。 |
支持的各类参数参见表2。 |
参数 |
描述 |
取值范围 |
---|---|---|
address |
指定的OBS服务终端节点或HDFS集群的IP地址。 |
OBS:OBS服务的终端节点(Endpoint)。 HDFS:HDFS集群的元数据节点(NameNode)所在的IP地址以及端口,或者同构其他集群的CN的IP地址以及端口。 为保证HA(High Availability),HDFS NameNode经常采用主备模式。主备NameNode的地址都需要加入到address值中。GaussDB(DWS)访问HDFS服务时,会动态查找当前处于active状态的主NameNode。 若HDFS为联邦模式时,可将Router的地址都加入到address值中,GaussDB(DWS)访问HDFS服务时,会动态随机查找当前处于active状态的Router。
说明:
|
hdfscfgpath |
该参数仅支持type为HDFS时设置。 用户通过配置hdfscfgpath参数来指定HDFS配置文件路径。GaussDB(DWS)会根据配置文件路径下的HDFS配置文件指定的连接配置方式,以及安全模式,来访问HDFS集群。非安全模式连接HDFS集群时,不支持数据传输加密。 如果没有指定address选项,默认采用hdfscfgpath指定的配置文件中指定的address。 |
- |
fed |
表示dfs_fdw连接的是HDFS为联邦模式。 |
取值rbf,表示HDFS为联邦rbf方式。
说明:
该参数8.1.2及以上版本支持。 |
encrypt |
是否对数据进行加密,该参数仅支持type为OBS时设置。默认值为off。 |
|
access_key |
OBS访问协议对应的AK值(OBS云服务界面由用户获取),创建外表时AK值会保存到数据库的元数据表中。 |
|
secret_access_key |
OBS访问协议对应的SK值(OBS云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。 |
|
security_token |
对应统一身份认证服务IAM中临时安全凭证的SecurityToken的值,与临时AK、SK共同组成临时安全凭证,临时安全凭证有效期不超过24小时。该参数仅8.2.0及以上集群版本支持。 |
|
type |
表示dfs_fdw连接的类型。 |
|
dli_address |
DLI服务的终端节点,即endpoint。该参数仅支持type为DLI时设置。 |
- |
dli_access_key |
DLI访问协议对应的AK值(DLI云服务界面由用户获取),创建外表时AK值会保存到数据库的元数据表中。该参数仅支持type为DLI时设置。 |
- |
dli_secret_access_key |
DLI访问协议对应的SK值(DLI云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为DLI时设置。 |
- |
dbname |
用于协同分析、跨集群互联互通,表示将要连接的远端集群的数据库名字。 |
- |
username |
用于协同分析、跨集群互联互通,表示将要连接的远端集群的用户名。 |
- |
password |
用于协同分析、跨集群互联互通,表示将要连接的远端集群的用户名密码。
说明:
对于云下集群迁移到云上的场景,从云下集群导出的server配置中密码为密文,由于云上和云下集群加解密的密钥不同,如果直接在云上集群执行导出时的CREATE SERVER,会执行失败,报解密失败的错误。这种场景下需要将CREATE SERVER中的password手动修改成明文密码进行配置。 |
- |
syncsrv |
仅用于跨集群互联互通,表示数据同步过程中使用到的GDS服务,设置方式与GDS外表的location属性相同。 |
- |
示例
建立一个hdfs_server,其中hdfs_fdw为数据库中存在的foreign data wrapper。(address、hdfscfgpath的值仅供参考,请根据实际配置情况进行修改。)
1 2 3 4 5 |
CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS (address '10.10.0.100:25000,10.10.0.101:25000', hdfscfgpath '/opt/hadoop_client/HDFS/hadoop/etc/hadoop', type 'HDFS' ) ; |
建立一个obs_server,其中dfs_fdw为数据库中存在的foreign data wrapper。
1 2 3 4 5 6 |
CREATE SERVER obs_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( address 'obs.ap-southeast-1.myhuaweicloud.com', access_key 'xxxxxxxxx', secret_access_key 'yyyyyyyyyyyyy', type 'obs' ); |
建立一个dli_server,其中dfs_fdw为数据库中存在的foreign data wrapper。
1 2 3 4 5 6 7 8 9 |
CREATE SERVER dli_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( address 'obs.ap-southeast-1.myhuaweicloud.com', access_key 'xxxxxxxxx', secret_access_key 'yyyyyyyyyyyyy', type 'dli', dli_address 'dli.example.com', dli_access_key 'xxxxxxxxx', dli_secret_access_key 'yyyyyyyyyyyyy' ); |
建立另外一个同构集群的server,其中gc_fdw为数据库中存在的foreign data wrapper。
1 2 3 4 5 6 |
CREATE SERVER server_remote FOREIGN DATA WRAPPER GC_FDW OPTIONS (address '10.10.0.100:25000,10.10.0.101:25000', dbname 'test', username 'test', password 'xxxxxxxx' ); |
建立一个FOREIGN DATA WRAPPER为dist_fdw的server,用于obs上文本数据的导入导出。
1 2 3 4 5 |
CREATE SERVER import_server FOREIGN DATA WRAPPER DIST_FDW OPTIONS ( access_key 'ak_string', secret_access_key 'sk_string' ); |