≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > MySQL

MySQL 开启Federated引擎的方法

人气:486 时间:2020-07-09

这篇文章主要为大家详细介绍了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.不支持表结构修改

以下是补充:

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

代码如下:

 
federated 

重启mysql服务后,

mysql> show engines;



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

 

1.   查看当前支持的存储引擎

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时没有编译进来,只能现安装了。

 

2.   安装federated存储引擎

由于编译时没有选择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

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

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。编译后的结果如下:

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, row-level locking, and foreign keys | YES          | YES  | YES        |   
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |   
+------------+---------+----------------------------------------------------------------------------+--------------+------+------------+   
6 rows in set (0.00 sec) 

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

 

本文来自:http://www.q1010.com/177/10071-0.html

注:关于MySQL 开启Federated引擎的方法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:MYSQL

您可能感兴趣的文章

  • 关于MySQL innodb count(*)速度慢的解决办法
  • MySQL 开启慢查询 如何打开MySQL的慢查询日志记录
  • 解决MySQL导入还原时乱码的问题
  • MySQL Innodb表导致死锁日志情况分析与归纳
  • MySQL乱码问题分析与解决方法
  • MySQL支持跨表delete删除多表记录
  • MySQL学习笔记2:数据库的基本操作(创建删除查看)
  • MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项
  • MySQL auto_increment 重新计数(让id从1开始)
  • MySQL跨表更新 多表update sql语句总结
上一篇:MySQL批量插入遇上唯一索引避免方法
下一篇:MySQL学习笔记2:数据库的基本操作(创建删除查看)
热门文章
  • mysql 修改character_set_server为utf-8的简单示例
  • 解决MySQL丢失文件localhost.localdomain.pid、mysql.sock的示例
  • MySQL 数据类型binary和varbinary的简单示例
  • MySQL:reading initial communication packet问题解决方法
  • MySql 表类型MYISAM、InnoDB区别
  • bash: mysql: command not found 的解决方法
  • MYSQL默认用户名ROOT修改方法
  • MySQL 常用命令菜鸟教程
  • MySQL 使用命令行新建用户并授予权限
  • MySql 数据库物理文件存放位置查看示例
  • 最新文章
    • MySQL查看死锁与解除死锁的简单示例
    • MySQL 慢查询的功能实例
    • MySQL查看死锁与去除死锁的简单示例
    • MySQL找出未提交事务的SQL的简单示例
    • MySQL锁阻塞的的简单示例
    • MySQL中的binary类型使用操作的示例
    • SQL优化教程之in与range查询的简单示例
    • MySQL 的 21 个规范、优化最佳实践!
    • MySQL 字符类型大小写敏感的简单示例
    • 解决mybatis-plus分页传入参数后sql where条件没有limit分页信息的问题

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。