MySQL 跨库之间联合查询的方法
背景
随着业务上云的需要,
公司里面有阿里云上面的测试环境.
也有公司内的测试环境.
但是阿里云上面的机器和公司内的机器存在一些差异.
所以一直想有一个归集数据的过程.
能够在一张图标里面关联 公司内和阿里云上面的一些数据信息
实现类似于混合云的简单比较.
基于此了一些办法
MySQL的dblink
跟Oracle和SQLServer类似, MySQL数据库也有dblink
他的dblink 其实是 FEDERATED 引擎.
一般情况下可以通过 show engines ; 的命令进行查看
FEDERATED
+------------+---------+------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
| FEDERATED YES | Federated MySQL | NO | NO | NO
可以看到这个存储引擎不支持 事务 XA 以及保存点.
开启方式
MySQL是默认不开启 FEDERATED
开启方式比较简单
需要再 /etc/my.cnf
中的mysqld 的配置节下面新增:
federated
然后重启一下服务就可以了.
创建表
因为公司内网可以访问互联网.
互联网没法访问公司内网.
所以想法是在公司内网, 增加对互联网的dblink
来合并查询
创建表的语法为:
CREATE TABLE sustartuptimealiyun (
ip VARCHAR ( 20 ),
time VARCHAR ( 20 ),
date VARCHAR ( 20 )) ENGINE = FEDERATED CONNECTION =
'mysql://username:password@aliyunip:port/databasename/sustartuptime'
联合查询
SELECT
ip,
round( avg( time ), 2 )
FROM
test.startuptime
WHERE
LEFT ( date, 8 ) >= ( date_format( curdate(), '%Y%m%d' ) - 1 )
GROUP BY
ip
UNION ALL
SELECT
ip,
round( avg( time ), 2 )
FROM
test.startuptimealiyun
WHERE
LEFT ( date, 8 ) >= ( date_format( curdate(), '%Y%m%d' ) - 1 )
GROUP BY
ip
标签:ip,MySQL,FEDERATED,查询,dblink,跨库,date
From: https://www.cnblogs.com/jinanxiaolaohu/p/18075286