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

Mysql应用Mysql 开启Federated引擎的方法,第1张

概述介绍《Mysql应用Mysql 开启Federated引擎的方法》开发教程,希望对您有用。

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

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

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

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

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

Support 的值有以下几个:

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引擎的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存