由于无法分配足够的内存,我无法启动 mysqld。
我已经使用默认设置安装了数据库:
sudo mysql_install_db --user=mysql
然后,当我尝试启动 mysqld 时,我得到了这个:
name@host:/var/lib/mysql$ sudo mysqld --user=mysql
110307 16:01:21 InnoDB: Error: cannot allocate 2097168384 bytes of
InnoDB: memory with malloc! Total allocated memory
InnoDB: by InnoDB 35494096 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...
InnoDB: Fatal error: cannot allocate the memory for the buffer pool
110307 16:02:21 [ERROR] Default storage engine (InnoDB) is not available
110307 16:02:21 [ERROR] Aborting
不过,我还没能找到增加 ulimits 的方法。该机器有足够的内存供 mysql 使用,所以我猜想这只是 mysql 用户的问题?
我正在使用 Xen VM。
答案1
我从错误消息中猜测,由于2097168384
非常接近 2^31,因此您正在 32 位系统上运行。尝试减少 my.cnf 中 InnoDB 使用的内存量,特别是innodb_buffer_pool_size
,看看这是否允许 MySQL 启动。
另请参阅MySQL InnoDB 配置页面大小超过 2GB。