背景
近日遇到需要将 OLAP 数据库导入数据平台的场景,数据平台支持添加 MySQL 的数据源,OLAP 数据库也支持 MySQL 协议,在数据平台添加 OLAP 的数据源后,遇到读取不到的表情形,与相关同学确认后,主要为读取 information_schema 的 TABLE 及 COLUMNS 遇到错误或不匹配的问题
解决方案
MySQL 支持 Federated 引擎连接外部数据源,使用 Federated 引擎连接 OLAP 数据库
具体步骤示例:
启用 Federated Plugin
[mysqld]
# 启用 Federated Plugin
federated
# 查询外部数据源可能时间较长,设置较长的超时时间(单位:秒)
net_read_timeout = 86400
然后重启 MySQL 服务
配置外部数据源
# 在 MySQL 终端执行
# 创建外部数据源
CREATE SERVER remote_olap_db
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'sqoop', PASSWORD '123456', HOST 'example.com', PORT 3306, DATABASE 'demo');
# 删除外部数据源
# DROP SERVER remote_olap_db;
# 查看创建的外部数据源
SELECT * FROM mysql.servers;
创建映射表
# 在 MySQL 终端执行
# 创建本地数据库
CREATE DATABASE testdb;
# 切换至本地数据库
use testdb;
# 创建本地映射表
CREATE TABLE test_table (
`user_id` bigint,
`country` varchar(120)
) ENGINE=FEDERATED CONNECTION='remote_olap_db/demo_table';
# 查询验证
# 注:可能会遇到中文乱码问题,本地创建映射表时可以尝试去除指定字符集试试
SELECT * FROM test_table;
拓扑图
参考
- https://blog.csdn.net/hzqghost/article/details/130219369