Amazon EC2 MySQL无法启动

时间:2013-06-04 12:32:56

标签: mysql amazon-ec2

我在几分钟前随机停止工作后遇到启动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

非常感谢!

6 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分: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

还发现此链接有用: mysql on amazon linux - MySQL Daemon failed to start

答案 4 :(得分:0)

我在运行WordPress的EC2微实例上也有这个问题。原来,Apache是​​一个内存耗尽,这不允许mysqld启动/重新启动。一旦我编辑httpd.conf来驯服apache的内存使用,httpd就开始没有问题了。

答案 5 :(得分:0)

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

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