13

在几分钟前随机停止工作后,我在启动 MySQL 时遇到了问题。尝试连接时出现此错误:

Connect failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

所以我尝试重新启动 MySQL(这对我之前有用),我得到了这个:

Stopping mysqld:                                           [  OK  ]
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

这是我的错误日志:

130414 20:03:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130414 20:03:45 [Note] Plugin 'FEDERATED' is disabled.
130414 20:03:45 InnoDB: The InnoDB memory heap is disabled
130414 20:03:45 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130414 20:03:45 InnoDB: Compressed tables use zlib 1.2.5
130414 20:03:45 InnoDB: Using Linux native AIO
130414 20:03:45 InnoDB: Initializing buffer pool, size = 128.0M
130414 20:03:45 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
130414 20:03:45  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
130414 20:03:46  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
130414 20:03:46  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables

任何人都可以提供一些提示吗?我对这个服务器的东西很不熟悉:P

非常感谢!

4

6 回答 6

16

我通过重新启动我的 EC2 实例解决了这个问题。

于 2013-06-11T22:35:10.950 回答
6

重新启动实例会有所帮助,但它不会永久解决它。

这是我用来解决它的:http: //www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html

Amazon EC2 微实例交换空间 - Linux

我有一个 Amazon EC2 Linux Micro 实例。由于 Micro 实例只有 613MB 的内存,MySQL 时不时地崩溃。在对 MySQL、Micro Instance 和 Memory Managment 进行了长时间搜索后,我发现 Micro 实例没有默认的 SWAP 空间。所以如果你想避免崩溃,你可能需要为你的微实例设置一个交换空间。实际上,性能方面最好启用交换。

下面的步骤展示了如何为您的 Micro 实例创建交换空间。我假设您有一个正在运行 Micro 实例的 AWS 账户。

1.) Run dd if=/dev/zero of=/swapfile bs=1M count=1024
2.) Run mkswap /swapfile
3.) Run swapon /swapfile
4.) Add this line /swapfile swap swap defaults 0 0 to /etc/fstab  

如果您想在每次重新启动后自动启用交换文件,则需要第 4 步。

一些与 SWAP 空间相关的有用命令:

$ swapon -s $ free -k

$ swapoff -a $ swapon -a

参考:

http://www.thegeekstuff.com/2010/08/how-to-add-swap-space/

http://cloudstory.in/2012/02/getting-the-best-out-of-amazon-ec2-micro-instances/

http://cloudstory.in/2012/02/adding-swap-space-to-amazon-ec2-linux-micro-instance-to-increase-the-performance/

http://aws.amazon.com/ec2/instance-types/

于 2014-02-10T23:44:03.367 回答
2

在我的情况下,我通过清除服务器中的一些空间来解决它。

我每天都在备份数据库,这会导致消耗大量空间。我删除了所有这些备份并启动了 mysql。

于 2016-03-14T11:38:08.767 回答
1

我也遇到了同样的挑战,这就是我所探索的,重新启动的原因可能是以下之一:

  1. 在您的 EC2 实例上应用了更新,导致 MySql 服务停止并且无法再次重新启动。
  2. 可能有其他进程正在运行,导致内存紧张,因此不允许 MySql 重新启动。

要解决此问题,您可以使用以下方法之一:

  1. 如果您的 MySql 服务因内存问题而关闭 -升级您的实例。

  2. 如果您的 mysqld restart 命令失败,请尝试先重新启动 httpd 服务,然后再重新启动您的 mysql 服务。以下是命令:

    • sudo 服务 httpd 重启
    • sudo 服务 mysqld 重启
  3. 如果上述工作均未完成,请重新启动您的 EC2 实例。不是永久修复,但如果您希望您的服务启动并运行,并且稍后想要对该问题进行 RCA,则可以提供帮助

如果您愿意,您可以创建如下所示的脚本,并根据您的要求每 5-10 分钟通过 cron-job 执行它:

#!/bin/bash
dateFormat=`date "+%Y-%m-%d %T"`
log_file_path="/home/ec2-user/mysql_restart_log.dat"

sudo service mysqld status | grep "is running"
if [ $? -ne 0 ]; then
   echo "HTTPD restart attempted ${dateFormat}" >> ${log_file_path}

   sudo service httpd restart
   if [ $? -ne 0 ]; then
     echo "HTTPD restart failed... ${dateFormat}" >> ${log_file_path}
   else
     echo "HTTPD restart success... ${dateFormat}" >> ${log_file_path}
   fi

   echo "MYSQL restart attempted ${dateFormat}" >> ${log_file_path}
   sudo service mysqld restart
   if [ $? -ne 0 ]; then
     echo "MYSQL restart failed... ${dateFormat}" >> ${log_file_path}
   else
     echo "MYSQL restart success... ${dateFormat}" >> ${log_file_path}
   fi
fi

还发现此链接有帮助:amazon linux 上的 mysql - MySQL Daemon failed to start

于 2020-01-11T05:54:07.203 回答
0

我在运行 WordPress 的 EC2 微型实例上也遇到了这个问题。原来 Apache 是一个内存猪,它不允许 mysqld 启动/重新启动。一旦我编辑了 httpd.conf 以驯服 apache 的内存使用,httpd 就毫无问题地启动了。

于 2015-06-17T04:30:34.567 回答
0

我在多个 AWS 服务器上多次看到这个问题,在我的案例中,主要原因是空间不足。我从服务器中删除了一些占用空间的未使用文件,问题得到解决。

这个空间不足的问题也会阻止你的 apache 运行。

于 2017-10-24T13:37:34.713 回答