MySQL 远程跨库查询 FEDERATED引擎

一、FEDERATED介绍

说明

  1. mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED
  2. 当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。

  3. 当开发人员需要使用 MySQL 和远程 MySQL 服务器中的多个数据库时,此技术非常有用。远程服务器存储数据,而本地服务器仅通过连接字符串指向它们。此操作的效率不取决于远程服务器上的存储引擎类型。

特点:

  1. 允许从远程 MySQL 数据库访问数据;
  2. 不需要复制或集群技术;
  3. 本地 federated 表: 查询该表时,会自动应用于远程联合表,数据不存储在本地;

缺点:

  1. 在处理连接表时,会大大降低工作速度;
  2. 对交易的处理奇怪;
  3. 该引擎的专业范围很窄,应小心处理;

局限性:

  1. 远程服务器必须是一个MySQL服务器。
  2. FEDERATED对其它数据库引擎的支持可能会在将来被添加,目前不支持其他数据库,跨服务器远程其他类型数据库可以采用创建远程连接服务器的方式
  3. FEDERATED表指向的远程表在你通过FEDERATED表访问它之前必须存在。
  4. 一个FEDERATED表指向另一个FEDERATED表是可能的,但是你必须小心不要创建一个循环。
  5. 没有对事务的支持。
  6. 如果远程表已经改变,对FEDERATED引擎而言是没有办法知道的。
    a、这个的原因是因为这个表必须象数据文件一样工作,除了数据库其它任何都不会被写入。
    b、如果有任何对远程数据库的改变,本地表中数据的完整性可能会被破坏。
  7. FEDERATED存储引擎支持SELECT, INSERT, UPDATE, DELETE和索引。
  8. 它不支持ALTER TABLE, DROP TABLE或任何其它的数据定义语言语句。当前的实现不使用预先准备好的语句。
  9. 执行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。
  10. FEDERATED表不能对查询缓存不起作用。

跨服务的方式

  • mysql的FEDERATED存储引擎
  • oracle的dblink
  • 创建远程连接服务器
  • 大数据的presto,接管数据源,然后聚合分析
  • fink cdc也是一种方案

二、开启 FEDERATED 引擎

查看mysql支持的引擎

  • show engines;

如果没有 federated 引擎得安装

如果 federated 显示为 NO 则必须修改 my.ini 文件并重启

  • #开启跨库查询
  • federated
  • 修改配置文件后必须重启才生效

创建远程表

  • 开启 federated 引擎后即可创建远程表
  • -- 注意表结构必须完全保持一致,否则报错
    CREATE TABLE `table_name` (
    `name` varchar(200) DEFAULT NULL,
    `day` date DEFAULT NULL,
    `count` int(11) DEFAULT NULL
    ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://用户名:密码@ip:端口/数据库/表';
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值