连接 JDBC 数据源
SelectDB 支持通过 JDBC Catalog 连接到 JDBC 数据源,帮助您对兼容 JDBC 协议的数据源进行联邦分析。
连接后,SelectDB 会自动同步数据源下的 Database 和 Table 的元数据,以便快速访问这些外部数据。
下面将详细介绍已支持数据源连接的操作说明。
阿里云
SaaS 模式连接 RDS for MySQL
-
设置 SelectDB 访问私有网络。 详细操作请参考 SelectDB 访问私有网络 章节。
-
创建 ECS 服务器连接 RDS for MySQL
要通过阿里云内网访问 RDS for MySQL,需要有一台 ECS 服务器作为代理,分别连接 RDS for MySQL 和 Load Balancer 服务。并且这台 ECS 服务器需要和这两个服务处于同一个 VPC,ECS 的私网 IP 添加到 RDS 白名单。更详细操作请参考阿里云官方文档 如何连接 RDS 数据库 (opens in a new tab)。
-
在 ECS 服务器部署代理服务
使用 HAProxy,在 haproxy.cfg 中增加 mysql 代理
######## mysql负载均衡配置 ############### listen proxy-mysql bind 0.0.0.0:3306 mode tcp # 负载均衡算法 # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin balance roundrobin # 日志格式 option tcplog # 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户 # create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES; option mysql-check user haproxy server MYSQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 # 使用keepalive检测死链 # option tcpka #########################################
注意其他部分配置,按需修改
defaults # 默认配置。 log global # 日志继承全局配置段的设置。 retries 2 # 向上游服务器尝试连接的最大次数,超过此值便认为后端服务器不可用。 timeout connect 2s # HAProxy 与后端服务器连接超时时间。如果在同一个局域网内,可设置成较短的时间。 timeout client 30000s # 客户端与 HAProxy 连接后,数据传输完毕,即非活动连接的超时时间。 timeout server 30000s # 服务器端非活动连接的超时时间。
-
在 Load Balancer 服务配置对 ECS 的监听,使用默认配置即可
操作示例如下:
注意:需要关掉健康检查,因为健康检查会持续执行 telnet mysql 命令,导致 MySQL 累计错误连接,封掉 IP。
-
在 SelectDB 中创建 Catalog
CREATE CATALOG mysql PROPERTIES ( "type"="jdbc", "user"="root", "password"="Bigdata@2024xxxxx", "jdbc_url" = "jdbc:mysql://ep-2zei8852e85603e2a7ec.epsrv-2zefmg7zdtfswpkxb6d4.cn-beijing.privatelink.aliyuncs.com:3306/test", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver" );
参数说明:
名称 | 是否必选 | 说明 |
---|---|---|
type | 是 | Catalog 类型,此处使用 jdbc |
user | 是 | 数据库的账号 |
password | 是 | 数据库的密码 |
jdbc_url | 是 | JDBC连接串 |
driver_url | 是 | JDBC Driver Jar包名称 |
driver_class | 是 | JDBC Driver Class名称 |
BYOC 模式连接 RDS for MySQL
BYOC 仓库和 RDS 处于同一个 VPC,在创建 Catalog 时正确填写 RDS for MySQL 的内网地址即可。
在 SelectDB 中创建 Catalog
CREATE CATALOG mysql PROPERTIES (
"type"="jdbc",
"user"="root",
"password"="Bigdata@2024xxxxx",
"jdbc_url" = "jdbc:mysql://rm-2zexuilug4tg5vb26.mysql.rds.aliyuncs.com:3306/test",
"driver_url" = "mysql-connector-java-8.0.25.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
);
参数说明:
名称 | 是否必选 | 说明 |
---|---|---|
type | 是 | Catalog 类型,此处使用 jdbc |
user | 是 | 数据库的账号 |
password | 是 | 数据库的密码 |
jdbc_url | 是 | JDBC连接串 |
driver_url | 是 | JDBC Driver Jar包名称 |
driver_class | 是 | JDBC Driver Class名称 |