GBase 8a
安装配置
文章

DBlink配置

发表于2024-05-26 15:56:21169次浏览2个评论

本地集群 10.0.0.100

源集群(想要访问的集群 )10.0.0.50

目标:本地集群与源集群是两个独立集群,通过DBlink能够实现本地集群可以直接访问源集群的数据

安装透明网关(可以装在本地集群节点 或者 新增一个节点) 
[gbase@hw-01 ~]$ cd /opt/
[gbase@hw-01 opt]$ ll
-rw-r--r-- 1 gbase gbase 182435840 Nov 12 17:01 GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14.tar
[gbase@hw-01 opt]$ tar -xvf GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14.tar
[gbase@hw-01 opt]$ chmod -R +x GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14

修改透明网关系统配置文件
[gbase@hw-01 conf]$ cd /opt/GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14/conf/
[gbase@hw-01 conf]$ vi conf.properties 
gbase.gt.load.data.type=0
gbase.gt.gc.paging.query=1

配置源库
[gbase@hw-01 opt]$ cd GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14/conf/dataSource/sample
[gbase@hw-01 sample]$ cp gbase_link1.properties gbase_link1.properties.bak
[gbase@hw-01 sample]$ vi gbase_link1.properties
[ds1]
dataSource_IP=10.0.0.50 #这里写源集群的IP 也就是想要访问的集群
dataSource_port=5258
dataSource_dbname=test  #DBlinkl配置的连接库
dataSource_dbtype=gcluster #这里写想要访问的数据库,如果没有 记得先创建
dataSource_user=gbase
dataSource_pwd=gbase20110531
dataSource_charset=utf8

[gbase@hw-01 sample]$ cp gbase_link1.properties /opt/GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14/conf/dataSource

启动透明网关
[gbase@hw-01 sample]$ cd /opt/GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14
[gbase@hw-01 GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14]$ sh gt.sh
停止透明网关(这是笔记 不要执行)
[gbase@hw-01 GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14]$ ps -ef | grep GBaseGateway
[gbase@hw-01 GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14]$ kill -9 18787

配置DBlink(本地集群配置文件都需要添加)
[gbase@hw-01 gcluster]$ cd /opt/gbase/192.168.0.213/gcluster/config
[gbase@hw-01 config]$ cp gbase_8a_gcluster.cnf gbase_8a_gcluster.cnf.bak
[gbase@hw-01 config]$ vi gbase_8a_gcluster.cnf
[gbased]

gbase_dblink_gateway_ip = 124.249.4.215  #这里写透明网关的IP

gbase_dblink_gateway_port = 9898

gcluster_dblink_direct_data_exchange = 0  #局域网内两个集群可以相互通信时 可以不加这个参数

gcluster_dblink_direct_data_exchange 默认值为 1
值为 1 表示:数据从数据源集群的计算节点直接发送给目标集群。
值为 0 表示:数据从数据源集群发送给网关,然后由网关转发给目标集群。
注:仅当数据源集群和目标集群的节点间在网络上不可直接连接时,调整此参数为 0。

如果开启了防火墙需要开放端口
[root@hw-01 ~]# firewall-cmd --zone=public --add-port=9898/tcp --permanent
[root@hw-01 ~]# firewall-cmd --reload

重启服务
[gbase@hw-01 gcluster]$ gcluster_services all restart
[gbase@hw-01 gcluster]$ gcware_services all restart

源集群创建测试库 (DBlink要访问的节点)
10.0.0.50节点
[gbase@tx gcinstall]$ gccli -uroot -p
gbase> create database test;
gbase> use test;
gbase> create table t1(no int);
gbase> insert into t1 values(1);

本地集群使用DBlink访问源集群
[gbase@hw-01 gcluster]$ gccli -uroot -p
gbase> create database test;
Query OK, 1 row affected (Elapsed: 00:00:00.00)

gbase> create database link dblink_test1 connect to '' identified by '' using 'gbase_link1';  --注意这里的名称要跟上面源配置文件名称保持一致  /home/gbase/GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.15/conf/dataSource/sample/gbase_link1.properties
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> select * from gbase.db_links;
+--------+--------------+-------------+----------+----------+-------------+---------------------+
| owner  | db_link      | dblink_priv | username | password | host        | created             |
+--------+--------------+-------------+----------+----------+-------------+---------------------+
| public | dblink_test1 | PUBLIC      |          | NULL     | gbase_link1 | 2022-11-14 21:05:20 |
+--------+--------------+-------------+----------+----------+-------------+---------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> use test;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> select * from t1;
ERROR 1146 (42S02): Table 'test.t1' does not exist

gbase> select * from t1@dblink_test1;
+------+
| no   |
+------+
|    1 |
+------+
1 row in set (Elapsed: 00:00:00.10)

配置本地连接数据插入使用
/GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.15/conf/gcluster
[gbase@cyx-10 gcluster]$ cat gbase8a_gcluster.properties 
[gc1]
gcluster_IP=10.0.0.100
gcluster_port=5258
gcluster_user=gbase
gcluster_pwd=gbase20110531
gcluster_encode=utf-8


 CREATE TABLE "cyx" (
 "id" varchar(100) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' 

创建DBlink具体语法如下:
CREATE DATABASE LINK dblink_name CONNECT TO username IDENTIFIED BY password USING 'TG_config_name';
说明:当前数据库服务下所有用户都可使用、删除该 DB-Link;
dblink_name:要创建的 DB-Link 的名称
usename:该 DB-Link 要连接的数据库服务中的用户名
password:该 DB-Link 要连接的数据库服务中的用户名密码
TG_config_name:透明网关配置文件名称
示例:
create database link dblink_pub
connect to sysdba identified by sys
using 'tg_config1';

使用DBlink
Select * from table@dblink_pub;  表名称@DBlinkNAME

删除DBlink
drop database link dblink_pub;

DBlink A端 查询报错 没有这个库  B端需要给这个库的权限然后进入A端gbase库再查询
gbase> select * from t100@dblink_test1;
ERROR 1046 (3D000): No database selected
gbase> use gbase;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> select * from t100@dblink_test1;
ERROR 1105 (HY000): SELECT command denied to user 'ceshi1'@'10.0.0.100' for table 'table_distribution'
需要B端集群用户有gbase库的所有权限
grant all on  gbase.* to ceshi1;

配置insert数据插入配置文件目录

/opt/GBase8a_MPP_Cluster_Gateway_8.5.1.2_build4.14/conf/gcluster/   --下面只有一个配置文件

评论

登录后才可以发表评论
用户头像
levvel发表于 5个月前
受益匪浅!
GBase用户51887发表于 2个月前
继续努力