INNODB mysql。插件已禁用

INNODB mysql。插件已禁用

当我在 unbuntu 服务器上启动 mysql 时,我会收到一条消息。

121122 17:39:37 [Note] Plugin 'FEDERATED' is disabled.
121122 17:39:37 InnoDB: The InnoDB memory heap is disabled
121122 17:39:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins
121122 17:39:37 InnoDB: Compressed tables use zlib 1.2.3.4
121122 17:39:37 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
121122 17:39:37 InnoDB: Completed initialization of buffer pool
121122 17:39:37 InnoDB: Fatal error: cannot allocate memory for the buffer pool
121122 17:39:37 [ERROR] Plugin 'InnoDB' init function returned error.
121122 17:39:37 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
121122 17:39:37 [ERROR] Unknown/unsupported storage engine: InnoDB
121122 17:39:37 [ERROR] Aborting

121122 17:39:37 [Note] mysqld: Shutdown complete

有几次我收到一条消息说插件已被禁用。

我使用 webmin 来配置它。这会是个问题吗?

答案1

正如 CloudWeavers 所述,您没有足够的可用内存(包括交换)。如果您确实想在此配置下运行,请定义一个额外的交换文件,例如

dd if=/dev/zero of=/swap.img bs=1M count=512
mkswap -f /swap.img
echo '/swap.img none swap sw 0 0' >> /etc/fstab
swapon -a
sudo chown root:root /swap.img
sudo chmod 0600 /swap.img

在您的根分区上放置一个 512MB 的交换文件(即实际文件)(这实际上是一种让您开始的黑客行为 - 这不是最佳实践的配置)或将您的值降低innodb_buffer_pool_size到较小的值(再次不推荐,这是 InnoDB 引擎的一个重要的调整变量,不应轻易更改)

sed -i 's/^.+innodb_buffer_pool_size.+/innodb_buffer_pool_size=32M/' /etc/my.cnf
service mysqld restart

答案2

您的问题是:

InnoDB: mmap(137363456 bytes) failed; errno 12

而且,如果你使用 GNU/Linux,我们可以理所当然地认为:

Errno 12: ENOMEM 

这意味着 InnoDB 初始化在内存映射期间失败。您没有足够的可用内存。我猜您没有定义任何交换(使用“free -m”检查)并且您没有 128MB 的可用空间用于 InnoDB 插件?

此错误会自动导致插件进入“禁用”状态并阻止您使用 innodb 表。

相关内容