暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A 配置访问远端MPPDB

墨天轮 2019-10-12
2113

配置访问远端MPPDB

操作场景

GaussDB 200需要访问远端MPPDB数据库数据时或者需要数据互操作时,可以通过配置"对接MPPDB"使用该功能。

说明:

GaussDB 200支持两种方式访问远端MPPDB数据库集群,包括通过FusionInsight Manager配置方式和创建Foreign Table的方式,Foreign Table的方式请参见配置访问远端MPPDB(Foreign Table方式)。

约束限制

支持最多可配置20组远端MPPDB配置。

前提条件

  • MPPDB数据库和GaussDB 200集群状态正常。
  • MPPDB数据库物理节点和GaussDB 200集群之间可以互相通信。
  • 配置远端MPPDB集群监听参数,请参考Linux下配置数据源章节中的步骤6。

操作步骤

  • 登录FusionInsight Manager。
  • 选择“集群 > 待操作的集群名称 > 服务 > MPPDB > 对接 > 对接MPPDB”,单击“创建”,填写配置组名称,单击“确定”。
  • 填写配置参数,配置参数参见表1。

    表1 GaussDB 200跨集群访问MPPDB的配置

    参数

    描述

    建议填写值

    remote_connect_mppdb_database

    MPPDB数据库的名称。

    -

    remote_connect_mppdb_driver

    mppdb odbc driver名称,用户可以根据实际情况自定义名称,以mppdb_开头,只允许由字母数字下划线组成,不能超过64个字符。

    注意:
    • “remote_connect_mppdb_driver”值作为配置标示,保存配置后将不能修改,请用户慎重填写。
    • 不同MPPDB配置组中的“remote_connect_mppdb_driver”参数值不能相同。

    mppdb_Driver

    remote_connect_mppdb_dsn

    该组配置的DSN标识,以mppdb_开头,只允许由字母数字下划线组成,不能超过64个字符。

    注意:
    • “remote_connect_mppdb_dsn”值作为配置标示,保存配置后将不能修改,请用户慎重填写。
    • 不同MPPDB配置组中的“remote_connect_mppdb_dsn”参数值不能相同。

    mppdb_DSN

    remote_connect_mppdb_fetch

    使用服务器游标时,每次从远端拿到的数据量。

    注意:
    • “remote_connect_mppdb_fetch”值的设置范围为1-1000000。
    • 如果远端CN内存较小,可以适当设置较小的值。

    10000

    remote_connect_mppdb_host

    MPPDB数据库的主机IP地址。

    -

    remote_connect_mppdb_port

    MPPDB数据库的端口号。

    25308

    remote_connect_mppdb_sslmode

    开启SSL模式。

    allow

  • 单击“保存”。等待保存配置成功,单击“完成”
  • 选择更多 > 重启,执行相应操作重启服务。
  • 创建Data Source对象。

    • 连接数据库。
    • 创建Data Source对象。比如创建对应远端MPPDB数据库的Data Source对象ds_mppdb
      postgres=#CREATE DATA SOURCE ds_mppdb type 'MPPDB' OPTIONS (DSN 'mppdb_DSN', USERNAME 'mppdb_user', PASSWORD 'mppdb_pwd', ENCODING 'UTF8');

  • 连接远端MPPDB数据库。

    假设Data Source对象ds_mppdb已经创建好,使用exec_on_extension函数进行连接,比如查询远端MPPDB数据库中一张表a (c1 int):

    postgres=#SELECT * FROM exec_on_extension('ds_mppdb', 'select * from a;') AS (c1 int);

示例

-- 创建Data Source postgres=#CREATE DATA SOURCE ds_mppdb OPTIONS (dsn 'mppdb_DSN', username 'mppdb_user', password 'mppdb_pwd',ENCODING 'UTF8'); -- 建远程表、插入数据 postgres=#SELECT * FROM exec_on_extension('ds_mppdb', 'create table a (c1 int);') AS (c1 text); c1 ---- (0 rows) postgres=#SELECT * FROM exec_on_extension('ds_mppdb', 'insert into a values (911);') AS (c1 text); c1 ---- (0 rows) -- 执行计划,如果计划在目标库是多列显示则此处需要以对应的列数返回 -- 此处远端MPPDB数据库中参数 explain_perf_mode=normal postgres=#SELECT * FROM exec_on_extension('ds_mppdb', 'explain select * from a;') AS (c1 text); QUERY PLAN -------------------------------------------------- Data Node Scan (cost=0.00..0.00 rows=0 width=0) Node/s: All datanodes (2 rows) postgres=#SELECT * FROM exec_on_extension('ds_mppdb', 'select * from a;') AS (c1 int); c1 ----- 911 (1 row) -- 此处发送的SQL语句返回两列,但函数exec_on_extension只返回一列,注意靠前匹配原则 postgres=#SELECT * FROM exec_on_extension('ds_mppdb', 'select * from a a1 inner join a a2 on a1.c1=a2.c1;') AS (c1 int); c1 ----- 911 911 (2 rows) -- 与本地表关联 postgres=#CREATE TABLE b AS SELECT * FROM exec_on_extension('ds_mppdb', 'select * from a;') AS (c1 int); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'c1' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. INSERT 0 1 postgres=#INSERT INTO b SELECT * FROM exec_on_extension('ds_mppdb', 'select * from a;') AS (c1 int); INSERT 0 1 postgres=#SELECT * FROM b WHERE b.c1 in (SELECT * FROM exec_on_extension('ds_mppdb', 'select * from a;') AS (c1 int)); c1 ----- 911 911 (2 rows)

查看更多:华为GaussDB 200 跨集群访问其他数据平台
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论