【问题标题】:How can I enable the federated engine in mysql after installation?安装后如何在mysql中启用联邦引擎?
【发布时间】:2011-03-06 11:54:06
【问题描述】:

我有 mysql 5.1.44:

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

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

【问题讨论】:

    标签: mysql federated-storage-engine


    【解决方案1】:

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

    当通过 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 秒)

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

    祝你好运!

    【讨论】:

    • 基本上只能在my.cnf(或windows中的my.ini)中添加下一行:[mysqld] federated,可以添加到文件末尾。
    • 如你所说, yum 安装版本的 mysql 服务器不添加“联合”支持。你的回答太好了,你拯救了我的一天!!!
    • 这是正确答案
    【解决方案2】:

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

    federated
    

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

    【讨论】:

    • 同样在Windows上,要修改的文件是安装目录中的my.ini(例如C:\Program Files\MySQL\MySQL Server 5.1
    • 在windows中,它也必须是[mysqld]之后的下一个带有换行符的东西,像这样-> [mysqld] (newline) federated
    • 无法正常工作,打开 my.ini 并在[mysqld] 之后的换行符中添加federated,仍然没有看到它启用。我在MySQL 5.6.12 on Windows 8。知道可能出了什么问题吗?
    • 在 windows 中它可以在不同的文件夹下,而不是在“程序文件”下。可能是 '\ProgramData\MySQL\MySQLServer5.6\my.ini' 或类似的。
    • 如果您使用的是 Amazons AWS RDS,则不支持联合引擎。只是把它留在这里是为了节省其他人尝试它所花费的时间,但最终会感到沮丧。
    【解决方案3】:

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

    要在配置文件中使用--federated option,请删除--

    示例

    我的.cnf

    [mysqld]
    federated
    

    【讨论】:

    • 这不起作用:PS C:\Program Files\MySQL\MySQL Server 5.7\bin> .\mysql.exe --federated -u root -p mysql: [ERROR] unknown option '- -联合'
    【解决方案4】:

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

    MYSQL 8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-07
      • 2014-03-19
      • 1970-01-01
      • 2021-07-02
      • 2021-09-28
      • 2018-11-23
      • 2011-10-15
      • 2017-06-04
      相关资源
      最近更新 更多