通过JDBC Catalog对接MySQL或PostgreSQL数据源
JDBC Catalog支持通过标准JDBC接口连接支持JDBC协议的数据库。该方式仅适用于少量的数据集成,例如将少量数据从数据源导入到StarRocks集群中,或对JDBC数据源中的小表进行关联查询。
使用JDBC Catalog无法实现对原数据源的查询加速,且也不适用于一次性访问大量数据的场景。
当前CloudTable StarRocks已经默认集成了MariaDB和PostgreSQL的Driver(已集成“mariadb-java-client-2.7.13.jar”和“postgresql-42.7.11.jar”驱动包),用户可以直接通过标准JDBC接口连接MySQL和PostgreSQL数据库。
前提条件
- 已创建CloudTable StarRocks集群,集群运行正常。
- 被访问的数据源与StarRocks集群节点的网络已打通,并且保持网络连接稳定和低延迟。
- 仅支持对接PostgreSQL 11.x及之后版本数据库。
- 仅支持对接MySQL 5.7、8.0或之后版本数据库。
- 被访问的数据源未开启SSL连接。
- StarRocks用户需要具备创建External Catalog的权限,该权限无法通过角色管理页面管理,需要管理员通过命令授权,授权命令如下:
GRANT CREATE EXTERNAL CATALOG ON SYSTEM TO ROLE/USER role_name/user_name;
操作步骤
- 使用SSH登录工具,通过弹性IP登录到Linux弹性云服务器。
具体登录操作步骤请参见弹性云服务器《用户指南》中的“ SSH密码方式登录”。
- 访问StarRocks集群,参见使用MySQL客户端连接StarRocks普通集群。
./mysql -uuser_name -ppassword -h集群内网IP地址 -P9030
user_name为前提条件中准备的StarRocks用户名。
- 执行如下命令创建JDBC Catalog连接MySQL或PostgreSQL数据库:
- 连接MySQL数据库:
CREATE EXTERNAL CATALOG mysql_catalog PROPERTIES ( "type"="jdbc", "user"="username", "password"="xxx", "jdbc_uri"="jdbc:mariadb://host:3306", "driver_url"="mariadb-java-client-2.7.13.jar", "driver_class"="org.mariadb.jdbc.Driver" ); - 连接PostgreSQL数据库:
CREATE EXTERNAL CATALOG postgresql_catalog PROPERTIES ( "type"="jdbc", "user"="username", "password"="xxx", "jdbc_uri"="jdbc:postgresql://host:5432/database_name", "driver_url"="postgresql-42.7.11.jar", "driver_class"="org.postgresql.Driver" );
表1 参数说明 参数名称
说明
type
Catalog类型,需设置为“jdbc”。
user
访问MySQL或PostgreSQL数据源的用户名。
password
访问数据源的用户对应的密码。
jdbc_uri
连接MySQL或PostgreSQL数据源的URL。
需注意,连接PostgreSQL数据库时,需要指定访问的数据库名称。
driver_url
数据源JDBC驱动包,当前仅支持“mariadb-java-client-2.7.13.jar”和“
postgresql-42.7.11.jar”。
driver_class
数据源JDBC驱动程序的类名。
- 连接MySQL数据库:
- 执行以下命令查看创建的Catalog:
show catalogs;

- 执行以下命令切换到指定的Catalog:
set catalog catalog_name;

- 执行以下命令查看数据库:
show databases;

由于PostgreSQL数据源在对接的时候已经指定了数据库的信息,针对PostgreSQL数据源,show databases;命令展示的是该数据库下的Schema。
- 执行以下命令指定当前会话生效的数据库:
use database_name;
- 执行以下命令查看当前数据库下的表:
show tables;

- 执行以下命令查看表数据:
select * from table_name;

常见问题
问题现象:对接PostgreSQL数据后,切换到External Catalog,执行show schemas;或show databases;命令时报错“Driver org.postgresql.Driver claims to not accept jdbcUrl”。

可能原因:创建External Catalog时,“jdbc_uri”中未指定默认的数据库。
处理步骤:需要使用正确的语句重新创建Catalog。