服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - mysql跨服务查询之FEDERATED存储引擎的实现

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

2023-05-23 13:53suqinyi Mysql

本文主要介绍了mysql跨服务查询之FEDERATED存储引擎的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、FEDERATED存储引擎

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

1.1、说明:

mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED

当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。

1.2、局限性

远程服务器必须是一个MySQL服务器

远程服务器必须是一个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存储引擎就配置文件开启
  • 不存在就安装

查看

?
1
show engines;

Support 的值有以下几个:

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

如图:

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

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

federated是支持动态安装的

?
1
install plugin federated soname 'ha_federated.so';

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

1.2、开启存储引擎

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

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

如图:

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

可以登入,表示变量识别成功

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

查看存储引擎

yes表示开启成功

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

1.3、拓展mysql存储引擎对比

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

三、跨服务连接示例

FEDERATED存储引擎开启成功了

1.1、 目标:

本地mysql去链接云服务器的mysql

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

1.2、创建关系

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

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

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

创建

?
1
2
3
4
5
6
7
8
9
10
-- 创建出结构一样的表,表名可以不一样
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:root@81.1x.2xx.10:3306/testLink/sys_user'
-- 指定引擎为 FEDERATED
-- 指定用户名、密码、ip、端口、数据库、表

如图:

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

1.2.1、权限说明

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

1.3、成功效果

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

1.4、增删改查

本地新增1条数据

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

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

云服务器查看

?
1
SELECT * FROM sys_user

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

 到此这篇关于mysql跨服务查询之FEDERATED存储引擎的实现的文章就介绍到这了,更多相关mysql FEDERATED存储引擎内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_44413835/article/details/124101184

延伸 · 阅读

精彩推荐
  • Mysqlmysql中异常错误ERROR:2002的解决方法

    mysql中异常错误ERROR:2002的解决方法

    最近在启动mysql的时候发现mysql报错了,错误代码是2002,通过查找相关的资料发现是var/lib/mysql 的访问权限问题,所以这篇文章主要介绍了mysql中异常错误...

    mine0944320202020-07-19
  • Mysqlmysql数据库replace、regexp的用法

    mysql数据库replace、regexp的用法

    mysql数据库中replace、regexp的用法,主要是通过sql语句实现数据的替换,使用mysql的朋友可以参考下。 ...

    MYSQL教程网2132019-11-22
  • MysqlMySQL编码不一致可能引起的一些问题

    MySQL编码不一致可能引起的一些问题

    这篇文章主要给大家介绍了关于MySQL编码不一致可能引起的一些问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    arstercz3682021-03-08
  • Mysql简单了解MySQL存储引擎

    简单了解MySQL存储引擎

    这篇文章主要介绍了MySQL存储引擎的相关资料,为开发时选择合适的存储引擎提供参考,感兴趣的朋友可以了解下...

    程序员自由之路3662021-01-22
  • Mysqlmysql5.7.14解压版的安装图文教程

    mysql5.7.14解压版的安装图文教程

    MySQL的安装有两种方式,一种为msi格式,一个是zip格式。这篇文章主要介绍了mysql5.7.14解压版的安装图文教程,需要的朋友可以参考下...

    心存志向1832020-07-28
  • Mysqlmysql查询结果输出到文件的方法

    mysql查询结果输出到文件的方法

    下面小编就为大家带来一篇mysql查询结果输出到文件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    MYSQL教程网4012020-07-09
  • MysqlMySQL子查询用法实例分析

    MySQL子查询用法实例分析

    这篇文章主要介绍了MySQL子查询用法,结合实例形式对比分析了MySQL子查询的设置技巧,需要的朋友可以参考下 ...

    mo_guang2002020-06-05
  • Mysql深度解析MySQL 5.7之临时表空间

    深度解析MySQL 5.7之临时表空间

    尽管临时表在实际在线场景中很少会去显式使用,但在某些运维场景还是需要到的,在MySQL5.7中,专门针对临时表做了些优化,下面这篇文章我们来一起深...

    杨涛涛5172020-07-06