我有 mysql 5.1.44:
mysql> 显示引擎; +------------+---------+ | 引擎 | 支持 | +------------+---------+ | ndbcluster | 否 | | MRG_MYISAM | 是 | | 黑洞 | 是 | | CSV | 是 | | 内存 | 是 | | 联邦 | 否 | | 存档 | 是 | | 数据库 | 是 | | MyISAM | 默认 |
我需要在 mysql 中启用联合引擎。我该怎么做?
我有 mysql 5.1.44:
mysql> 显示引擎; +------------+---------+ | 引擎 | 支持 | +------------+---------+ | ndbcluster | 否 | | MRG_MYISAM | 是 | | 黑洞 | 是 | | CSV | 是 | | 内存 | 是 | | 联邦 | 否 | | 存档 | 是 | | 数据库 | 是 | | MyISAM | 默认 |
我需要在 mysql 中启用联合引擎。我该怎么做?
编辑/etc/my.cnf
并在该[mysqld]
部分中添加以下行:
federated
相当于--federated
在命令行中指定
我知道这篇文章有点老了,但似乎很多人都遇到了联合引擎的问题。
当通过 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 秒)
你完成了......继续创建联邦表......
祝你好运!
我在 Workbench 中尝试了 Foward Engineer 并且出现了这个错误,所以我的解决方案是,Workbench -> Load your Model -> Mysql Model -> 单击显示错误的表,然后单击 Edit,之后只需更改引擎到 InnoDB。
MYSQL 8