为什么在Ubuntu 14.04上安装MySQL 5.6会失败?
出于好奇,我想在Ubuntu 14.04上看看MySQL 5.6。 基于这篇文章 ,看起来安装应该简单明了。 所以我启动了运行Ubuntu 14.04(64位)的AWS EC2微服务器,登录到我的pristine实例(通过PuTTY),并发出以下命令:
$ sudo apt-get update $ sudo apt-get build-dep mysql-server-5.6 $ sudo apt-get install mysql-server-5.6
(前两个命令是绝望的动作,因为单独运行apt-get install
之前没有用过。但即使使用所有三个命令,安装步骤仍然无效。)
在我预期的基础上,根据上面引用的文章,从最终命令看到这个输出:
mysql start/running, process 2355 Setting up libhtml-template-perl (2.95-1) ... Setting up mysql-common-5.6 (5.6.16-1~exp1) ... Processing triggers for libc-bin (2.19-0ubuntu6) ... Processing triggers for ureadahead (0.100.0-16) ...
我得到了这个:
start: Job failed to start invoke-rc.d: initscript mysql, action "start" failed. dpkg: error processing package mysql-server-5.6 (--configure): subprocess installed post-installation script returned error exit status 1 Setting up libhtml-template-perl (2.95-1) ... Setting up mysql-common-5.6 (5.6.16-1~exp1) ... Processing triggers for libc-bin (2.19-0ubuntu6) ... Processing triggers for ureadahead (0.100.0-16) ... Errors were encountered while processing: mysql-server-5.6 E: Sub-process /usr/bin/dpkg returned an error code (1)
谁能看出出了什么问题?
您遇到的问题看起来与此错误报告相同。 启动失败似乎是因为默认的MySQL 5.6配置需要的内存比微实例中的内存要多。
错误的解决方案似乎是执行以下操作之一:
- 增加EC2实例中的内存量
- 为MySQL的
max_connections
变量设置一个较小的值
我在创建小型VPS时遇到了同样的问题。 问题是由小内存引起的。 因此,无需花费额外的资金来增加您不需要的内存,您只需创建交换文件即可帮助安装。 是的,交换速度很慢,但您只需完成安装即可。
在Ubuntu 14.04上,我执行以下操作来解决问题:
创建4G交换文件:
sudo fallocate -l 4G /swapfile
将其权限更改为只有root可以访问和更改:
sudo chmod 600 /swapfile
让它交换:
sudo mkswap /swapfile
启用:
sudo swapon /swapfile
现在你可以再次尝试安装mysql,这次应该会成功。 请记住在执行此操作之前删除先前不成功的安装。
我遇到了同样的问题。 虽然我有足够大的内存12Gb给我的VM,但仍然有问题失败的事情。 花了一些时间后发现默认apt get缺少一些配置翻译和工具翻译包。
MySQL apt存储库提供了一种使用apt-get
使用最新软件包安装和更新MySQL产品的简单方便的方法。 以下是您必须遵循的内容:
-
添加MySQL APT存储库首先,将MySQL apt存储库添加到系统的软件存储库列表中。 跟着这些步骤:
-
转到http://dev.mysql.com/downloads/repo/apt/上的MySQL apt存储库的下载页面。
-
选择并下载发行包。
-
使用以下命令安装下载的发行包,将version-specific-package-name替换为下载的包的名称(如果未在包所在的文件夹中运行命令,则以其路径开头):
sudo dpkg -i /PATH/version-specific-package-name.deb
请注意,相同的包适用于所有受支持的Debian和Ubuntu平台。
- 在安装软件包期间,系统会要求您选择要安装的MySQL服务器版本和其他组件(例如,MySQL Workbench)。 如果您不确定选择哪个版本,请不要更改为您选择的默认选项。 如果您不想安装特定组件,也可以选择none。 在为所有组件做出选择后,选择“确定”以完成发布包的配置和安装。
您可以随时更改版本的选择;
有关说明,请参阅选择主要版本。-
使用以下命令从MySQL APT存储库更新包信息(此步骤是必需的):
sudo apt-get update
-
-
使用APT安装MySQL
-
通过以下命令安装MySQL:
sudo apt-get install mysql-server
-
这将安装MySQL服务器的包,以及客户端和数据库公共文件的包。
在安装过程中,对话框有两个请求:为root用户提供MySQL安装的密码。
- 启动和停止MySQL服务器
MySQL服务器在安装后自动启动。 – 您可以使用以下命令检查MySQL服务器的状态:
sudo service mysql status
-
使用以下命令停止MySQL服务器:
sudo service mysql stop
-
要重新启动MySQL服务器,请使用以下命令:
sudo service mysql start
我按照http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install进行了操作 。 这顺利运行并下载了所有软件包并成功安装了mysql 5.6
。
在我的情况下,我补充说
innodb_buffer_pool_size = 20M
到/etc/mysql/my.cnf
禁用performance_schema还可以节省大量内存。 我的空数据库在启动时从400m到40m:
performance_schema=0
MySQL文档: http : //dev.mysql.com/doc/refman/5.6/en/performance-schema.html
我在Ubuntu 15.10上遇到过这个问题。 对我来说这不是内存问题(我有2GB内存和18GB交换,其中总共只使用了300MB)。
在我的例子中, dpkg
正在寻找/etc/mysql/conf.d
,它不存在(但/etc/mysql/mysql.conf.d
没有!)。 重新安装mysql并手动创建文件夹/etc/mysql/conf.d
解决了我的问题。
究竟是怎么发生的? 我不知道。 我几乎不想分享我的答案,因为我打赌这个解决方案特定于我的电脑。
我通过使用实用程序strace
解决了这个问题,这对于这类事情非常棒,如果令人难以置信的那么冗长。
我用它是这样的:
-
在通过
apt-get install mysql-server
中途按下ctrl c后,我不得不运行dpkg --configure -a
来完成安装。 -
我运行
strace 2>/tmp/trace dpkg --configure -a
。 这使我成为/tmp/trace
一个很好的strace
日志。 -
我查看了日志,特别是在底部,它失败了。
-
我注意到它试图访问
/etc/mysql/conf.d
,并得到错误代码ENOENT, 没有这样的文件或目录 。
对于任何想要这样做的人,请为ENOENT
执行strace 2>/tmp/trace (command)
和grep。 正如我所说,这个解决方案可能特定于我的计算机,但你可能想要试一试。
在我的情况下,我需要做的就是在my.cnf
进行一些更改,只需删除2个名为ib_logfile0
和ib_logfile1
日志文件,然后启动mysql
service mysql start
无需重新安装mysql,只需删除这2个日志文件并重启mysql服务器即可
我在my.cnf
做的变化如下:
max_connections = 1000 max_allowed_packet = 1024M wait_timeout = 7200