(1) 技术选型背景:
历史版本有物化视图,外部表等功能均可实现,但基于odbc配置,且不同版本mysql支持情况不一致,因此选择官方建议的CATALOG ,尝试兼容性最好的方案。外部表及资源尝试失败报错,提示需要重新编译并配置开启mysql连接项,估计是官方强制废除推广新功能应用。
(外部表是通过odbc连接,需要进行服务端与客户端以及doris 服务端的修改,生产环境不太允许随意动客户服务器配置,所以放弃该方案。物化视图未测试。)
(2) 创建CATALOG 连接,包括mysql8.X及5.X版本各一个。
CREATE CATALOG mysql130 PROPERTIES (
"type"="jdbc",
"user"="root",
"password"="root",
"jdbc_url" = "jdbc:mysql://192.168.110.130:3306/phdemo?useSSL=false",
"driver_url" = "https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/jdbc_driver/mysql-connector-java-8.0.25.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
);
/phdemo数据库名可忽略,代表整个库下实例均可访问。追加指定数据库可限制访问。
CREATE CATALOG server30 PROPERTIES (
"type"="jdbc",
"user"="root",
"password"="abc",
"jdbc_url" = "jdbc:mysql://192.168.110.30:3306?useSSL=false",
"driver_url" = "https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/jdbc_driver/mysql-connector-java-8.0.25.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
);
注意:该创建过程较长,大约为1~3分钟,请耐心等待。
CREATE CATALOG jdbc_mysql PROPERTIES (
"type"="jdbc",
"user"="root",
"password"="123456",
"jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo",
"driver_url" = "mysql-connector-java-5.1.47.jar",
"driver_class" = "com.mysql.jdbc.Driver"
)
CREATE CATALOG jdbc PROPERTIES (
"type"="jdbc",
"user"="root",
"password"="abcdefg",
"jdbc_url" = "jdbc:mysql://192.168.0.213:3306/testdb?useSSL=false",
"driver_url" = "file:///opt/apache-doris-2.1.3-bin-x64/mysql-connector-j-8.3.0.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
);
(3) 参数错误如需重建CATALOG
drop CATALOG 名称 查看所有 show catalogs
(4) 切换到指定 CATALOG ,以及查询下级数据库
switch 名称 show databases
(5) 查询数据 SELECT * from CATALOG名称.DB名称.表名
SELECT * from mysql130.demo.way_gate
SELECT * from server30.test_dt.way_gate
注意:该查询首次执行相当慢,大约为1~2分钟,如数据较大时甚至超时。准备放弃该方案。
但是,但是,首次执行过好,再次查询秒级显示。应该是有缓存,个人怀疑首次执行时就是把数据全部拉到内存或者其它中间存储中了。个别数据表较大执行超时,可以追加limit限制语句加载;但仍有局限,需要全部载过一次才行。
(6) 关联查询一下
select nvl(dict.gate_name,'途径点') as station ,nvl(dict.gate_type,'途径点') poin_type,traf_data.*
from traffic_data as traf_data left join mysql130.demo.way_gate as dict
on traf_data.path_point =dict.road_section_id
https://blog.csdn.net/S1124654/article/details/129545097




