mysql跨服务查询之FEDERATED存储引擎

您所在的位置:网站首页 mysql数据库跨库跨表连接 mysql跨服务查询之FEDERATED存储引擎

mysql跨服务查询之FEDERATED存储引擎

#mysql跨服务查询之FEDERATED存储引擎| 来源: 网络整理| 查看: 265

文章目录 一、FEDERATED存储引擎1.1、说明:1.2、局限性1.3、跨服务的方式 二、开启FEDERATED存储引擎1.1、查看存储引擎1.1.1、不存在存储引擎-安装 1.2、开启存储引擎1.3、拓展mysql存储引擎对比 三、跨服务连接示例1.1、 目标:1.2、创建关系1.2.1、权限说明 1.3、成功效果1.4、增删改查

一、FEDERATED存储引擎

01、从5.1.26开始,默认MySQL不启用federated存储引擎,所以需要在my.cnf中加入federated选项 02、或是在命令行用–federated选项启动mysqld。

1.1、说明: mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。 1.2、局限性 远程服务器必须是一个MySQL服务器。FEDERATED对其它数据库引擎的支持可能会在将来被添加,目前不支持其他数据库,跨服务器远程其他类型数据库可以采用创建远程连接服务器的方式FEDERATED表指向的远程表在你通过FEDERATED表访问它之前必须存在。一个FEDERATED表指向另一个FEDERATED表是可能的,但是你必须小心不要创建一个循环。没有对事务的支持。如果远程表已经改变,对FEDERATED引擎而言是没有办法知道的。 a、这个的原因是因为这个表必须象数据文件一样工作,除了数据库其它任何都不会被写入。 b、如果有任何对远程数据库的改变,本地表中数据的完整性可能会被破坏。FEDERATED存储引擎支持SELECT, INSERT, UPDATE, DELETE和索引。它不支持ALTER TABLE, DROP TABLE或任何其它的数据定义语言语句。当前的实现不使用预先准备好的语句。执行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。FEDERATED表不能对查询缓存不起作用。

目前的局限性是这些。 这些限制中的一些在FEDERATED处理机的将来版本可能被消除。

1.3、跨服务的方式 mysql的FEDERATED存储引擎oracle的dblink创建远程连接服务器大数据的presto,接管数据源,然后聚合分析fink cdc也是一种方案 二、开启FEDERATED存储引擎 1.1、查看存储引擎 存在的FEDERATED存储引擎就配置文件开启不存在就安装

查看

show engines;

Support 的值有以下几个:

YES 支持并开启DEFAULT 支持并开启, 并且为默认引擎NO 不支持DISABLED 支持,但未开启

如图: 在这里插入图片描述

1.1.1、不存在存储引擎-安装

federated是支持动态安装的

install plugin federated soname 'ha_federated.so';

注明:如果不行话,就重新编码安装mysql吧

1.2、开启存储引擎

在mysql的配置文件中加入federated,然后重启mysql

注意:要放在mysqld的模块下,放在其他模块下无法识别变量

如图: 在这里插入图片描述 可以登入,表示变量识别成功 在这里插入图片描述

查看存储引擎

yes表示开启成功

在这里插入图片描述

1.3、拓展mysql存储引擎对比

在这里插入图片描述

三、跨服务连接示例

FEDERATED存储引擎开启成功了

1.1、 目标:

本地mysql去链接云服务器的mysql 在这里插入图片描述

1.2、创建关系

注意:如果远程表已经改变,对FEDERATED引擎而言是没有办法知道的

要了解FEDERATED存储引擎的局限性,看本文1.2的说明 如果有任何对远程数据库的改变,本地表中数据的完整性可能会被破坏

建议:表名要见名知意,知道他是远程连接的表,就像下面的示例:link_xx_xx表

创建

-- 创建出结构一样的表,表名可以不一样 CREATE TABLE `link_yun_sys_user` ( `id` int(50) NOT NULL, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE = FEDERATED CONNECTION='mysql://root:[email protected]:3306/testLink/sys_user' -- 指定引擎为 FEDERATED -- 指定用户名、密码、ip、端口、数据库、表

如图: 在这里插入图片描述

1.2.1、权限说明

如果数据库有做权限限制,比如用户权限,增删改查权限,要进行授权,才能进行操作

1.3、成功效果

在这里插入图片描述

1.4、增删改查

本地新增1条数据

INSERT INTO link_yun_sys_user(id,username,`password`,update_time) VALUES('2','lisi','8888',NOW());

在这里插入图片描述 云服务器查看

SELECT * FROM sys_user

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3