40

我有 mysql 5.1.44:

mysql> 显示引擎;
+------------+---------+
| 引擎 | 支持 |
+------------+---------+
| ndbcluster | 否 |
| MRG_MYISAM | 是 |
| 黑洞 | 是 |
| CSV | 是 |
| 内存 | 是 |
| 联邦 | 否 |
| 存档 | 是 |
| 数据库 | 是 |
| MyISAM | 默认 |

我需要在 mysql 中启用联合引擎。我该怎么做?

4

4 回答 4

65

编辑/etc/my.cnf并在该[mysqld]部分中添加以下行:

federated

相当于--federated在命令行中指定

于 2011-03-06T12:20:31.430 回答
41

我知道这篇文章有点老了,但似乎很多人都遇到了联合引擎的问题。

当通过 yum 安装 mysql 二进制文件时,您已经拥有了 HA(高可用性)插件。您只需要在 mysql CLI 中加载插件。

以下是基本流程:

如果 mysqld 尚未启动,请启动它。确保此时“联合”不在 /etc/my.cnf 中。

EX:此时,/etc/my.cnf 在标准 YUM 安装中将如下所示......

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

使用 root(或其他具有足够权限的帐户)登录 mysql CLI。

Type:   show engines;

此时您应该看不到 FEDERATED 引擎,如下所示:

mysql> show engines;
+------------+---------+------------------------------------------------------------+---    -----------+------+------------+
| Engine     | Support | Comment                                                    |  Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--- -----------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO               | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO            | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | YES     | 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         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

--> 结束粘贴 <--

要启用联合引擎,请键入以下内容:

install plugin federated soname 'ha_federated.so'

现在,当您“显示引擎”时,您将看到 FEDERATED 引擎,但已关闭...

它看起来像这样:

    mysql> 显示引擎;
    +------------+---------+-------------- ----------------------------------+--------------+ ------+------------+
    | 引擎 | 支持 | 评论 | 交易 | XA | 保存点 |
    +------------+---------+-------------- ----------------------------------+--------------+ ------+------------+
    | 联邦 | 否 | 联合 MySQL 存储引擎 | 空 | 空 | 空 |
    | CSV | 是 | CSV 存储引擎 | 否 | 否 | 否 |
    | MyISAM | 默认 | MySQL 3.23 的默认引擎具有出色的性能| 否 | 否 | 否 |
    | 数据库 | 是 | 支持事务、行级锁定和外键 | 是 | 是 | 是 |
    | 内存 | 是 | 基于哈希,存储在内存中,对临时表有用 | 否 | 否 | 否 |
   | MRG_MYISAM | 是 | 相同的 MyISAM 表的集合 | 否 | 否 | 否 |
    +------------+---------+-------------- ----------------------------------+--------------+ ------+------------+
    6 行一组(0.00 秒)

您现在可以像这样安全地将“federated”行添加到 /etc/my.cnf 文件中:

    [mysqld]
    数据目录=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    用户=mysql
    # 建议禁用符号链接以防止各种安全风险
    符号链接=0
    联合的

    [mysqld_safe]
    日志错误=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

重启mysqld(服务mysqld重启等...)

重启后,回到mysql CLI。

Type 'show engines;'

您现在应该看到可用的 FEDERATED 引擎,并且 SUPPORT 为 YES。

    mysql> 显示引擎;
    +------------+---------+-------------- ----------------------------------+--------------+ ------+------------+
    | 引擎 | 支持 | 评论 | 交易 | XA | 保存点 |
    +------------+---------+-------------- ----------------------------------+--------------+ ------+------------+
    | 联邦 | 是 | 联合 MySQL 存储引擎 | 否 | 否 | 否 |
    | CSV | 是 | CSV 存储引擎 | 否 | 否 | 否 |
    | MyISAM | 默认 | MySQL 3.23 的默认引擎具有出色的性能| 否 | 否 | 否 |
    | 数据库 | 是 | 支持事务、行级锁定和外键 | 是 | 是 | 是 |
    | 内存 | 是 | 基于哈希,存储在内存中,对临时表有用 | 否 | 否 | 否 |
    | MRG_MYISAM | 是 | 相同的 MyISAM 表的集合 | 否 | 否 | 否 |
    +------------+---------+-------------- ----------------------------------+--------------+ ------+------------+
    6 行一组(0.00 秒)

你完成了......继续创建联邦表......

祝你好运!

于 2013-08-23T09:15:40.763 回答
7

从 MySQL 5.0.64 开始,运行服务器默认不启用 FEDERATED 存储引擎;要启用 FEDERATED,您必须使用该--federated选项启动 MySQL 服务器二进制文件。— MySQL 文档

要在配置文件中使用该--federated 选项--,请删除.

例子

我的.cnf

[mysqld]
federated
于 2011-03-06T11:56:41.550 回答
0

我在 Workbench 中尝试了 Foward Engineer 并且出现了这个错误,所以我的解决方案是,Workbench -> Load your Model -> Mysql Model -> 单击显示错误的表,然后单击 Edit,之后只需更改引擎到 InnoDB。

MYSQL 8

于 2020-11-20T14:12:32.717 回答