我当前的配置很好,但是由于数据库很大,我的 innodb_buffer_pool_size 太小。
我在 MySQL.cnf 中所做的更改是
innodb_buffer_pool_size = 1G
到
innodb_buffer_pool_size = 2G
然后我尝试重新启动 MySQL,但出现以下错误。
110715 8:44:48 InnoDB: Error: cannot allocate 2147500032 bytes of
InnoDB: memory with malloc! Total allocated memory
InnoDB: by InnoDB 25166072 bytes. Operating system errno: 12
InnoDB: Check if you should increase the swap file or
InnoDB: ulimits of your operating system.
InnoDB: On FreeBSD check you have compiled the OS with
InnoDB: a big enough maximum process size.
InnoDB: Note that in most 32-bit computers the process
InnoDB: memory space is limited to 2 GB or 4 GB.
InnoDB: We keep retrying the allocation for 60 seconds...
这是一台专用于 MySQL 的 4GB x86 机器!
答案1
我选择 x86_32(根据错误消息),因此您运气不佳——即使使用 PAE,最大进程大小仍受 4GB 地址空间限制。获取 64 位系统并完成它。
答案2
我在具有 4G 内存的 Windows Server 2008 VM 64 位上运行 32 位版本的 MySQL 时遇到了同样的问题。我尝试将系统内存增加到 6G,但仍然无法为 innoDB 分配超过 1G 的内存。
由于我已经使用 64 位操作系统,因此我尝试使用 MySQL 的 64 位安装程序,并且在我的 4G 系统上分配 2G 完全没有问题。