加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用Mysql 开启Federated引擎的方法

发布时间:2020-12-12 00:51:27 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用Mysql 开启Federated引擎的方法》要点: 本文介绍了Mysql应用Mysql 开启Federated引擎的方法,希望对您有用。如果有疑问,可以联系我们。 MySQL中针对不同的功能需求提供了不同的存储引擎.所谓的存储引擎也就是MySQL下特定接口的具体实现. FEDERA
YES 支持并开启 DEFAULT 支持并开启,并且为默认引擎 NO 不支持 DISABLED 支持,但未开启
可以看出MyISAM为当前默认的引擎.
使用FEDERATED建表语句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
创建成功后就可直接在本地查询相应的远程表了.

需要注意的几点:

1. 本地的表结构必须与远程的完全一样.
2.远程数据库目前仅限MySQL
3.不支持事务
4.不支持表结构修改

以下是补充:

MYSQL学习参考一下在windows下的解决办法,在my.cnf中增加一行

代码如下:
federated

重启mysql服务后,

mysql> show engines;



Federated存储引擎可以使你在本地数据库中访问远程数据库中的数据,针对federated存储引擎表的查询会被发送到远程数据库的表上执行,本地是不存储任何数据的.
简要介绍后,是不是发现它和Oracle的database link(数据库链接)非常相似,它所实现的功能和db link类似,要在MySQL下找寻db link替代品的,federated存储引擎是不二的选择.

MYSQL学习1.?? 查看当前支持的存储引擎

MYSQL学习SQL>show engines;

代码如下:
+------------+---------+------------------------------------------------------------+--------------+------+------------+??
| Engine???? | Support | Comment??????????????????????????????????????????????????? | Transactions | XA?? | Savepoints |??
+------------+---------+------------------------------------------------------------+--------------+------+------------+??
| CSV??????? | YES???? | CSV storage engine???????????????????????????????????????? | NO?????????? | NO?? | NO???????? |??
| MRG_MYISAM | YES???? | Collection of identical MyISAM tables????????????????????? | NO?????????? | NO?? | NO???????? |??
| MEMORY???? | YES???? | Hash based,stored in memory,useful for temporary tables? | NO?????????? | NO?? | NO???????? |??
| InnoDB???? | DEFAULT | Supports transactions,row-level locking,and foreign keys | YES????????? | YES? | YES??????? |??
| MyISAM???? | YES???? | Default engine as of MySQL 3.23 with great performance???? | NO?????????? | NO?? | NO???????? |??
+------------+---------+------------------------------------------------------------+--------------+------+------------+??
5 rows in set (0.00 sec)

发现安装MySQL时没有编译进来,只能现安装了.

MYSQL学习2.?? 安装federated存储引擎

MYSQL学习由于编译时没有选择federated,所以打算通过INSTALL PLUGIN的方式安装,正常情况下,federated是支持动态安装的:
?? === Federated Storage Engine ===
? Plugin Name:????? federated
? Description:????? Connects to tables on remote MySQL servers
? Supports build:?? static and dynamic
? Configurations:?? max,max-no-ndb

MYSQL学习可是执行以下命令时报错:

MYSQL学习SQL>install plugin federated soname 'ha_federated.so';
ERROR 1126 (HY000): Can't open shared library '/usr/local/mysql/lib/mysql/plugin/ha_federated.so' (errno: 2 undefined symbol: dynstr_append_mem)
搜了一下,发现是个老问题,竟然到现在都没解决,可见MySQL团队的效率和管理的混乱.http://bugs.mysql.com/bug.php?id=40942
没有办法了,只有重新编译MySQL源码了,加上--with-plugins=federated.从5.1.26开始,默认MySQL不启用federated存储引擎,所以需要在my.cnf中加入federated选项或是在命令行用--federated选项启动mysqld.编译后的结果如下:

MYSQL学习SQL>show engines;

代码如下:
+------------+---------+----------------------------------------------------------------------------+--------------+------+------------+??
| Engine???? | Support | Comment??????????????????????????????????????????????????????????????????? | Transactions | XA?? | Savepoints |??
+------------+---------+----------------------------------------------------------------------------+--------------+------+------------+??
| CSV??????? | YES???? | CSV storage engine???????????????????????????????????????????????????????? | NO?????????? | NO?? | NO???????? |??
| MRG_MYISAM | YES???? | Collection of identical MyISAM tables????????????????????????????????????? | NO?????????? | NO?? | NO???????? |??
| FEDERATED? | YES???? | Federated MySQL storage engine???????????????????????????????????????????? | NO?????????? | NO?? | NO???????? |??
| MyISAM???? | YES???? | Default engine as of MySQL 3.23 with great performance???????????????????? | NO?????????? | NO?? | NO???????? |??
| InnoDB???? | DEFAULT | Percona-XtraDB,Supports transactions,and foreign keys | YES????????? | YES? | YES??????? |??
| MEMORY???? | YES???? | Hash based,useful for temporary tables????????????????? | NO?????????? | NO?? | NO???????? |??
+------------+---------+----------------------------------------------------------------------------+--------------+------+------------+??
6 rows in set (0.00 sec)

至此,我们已经可以使用federated存储引擎了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

《Mysql应用Mysql 开启Federated引擎的方法》要点:
本文介绍了Mysql应用Mysql 开启Federated引擎的方法,希望对您有用。如果有疑问,可以联系我们。

MySQL中针对不同的功能需求提供了不同的存储引擎.所谓的存储引擎也就是MySQL下特定接口的具体实现.

FEDERATED是其中一个专门针对远程数据库的实现.一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件.
但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要).

通过这个引擎可以实现类似Oracle 下DBLINK的远程数据访问功能.

使用show engines 命令查看数据库是否已支持FEDERATED引擎:

Support 的值有以下几个:

    推荐文章
      热点阅读