“站点离线”MySQL 服务器无法启动和停止

Jos*_*ski 6 mysql innodb

我在 linode 上托管了几个站点,但遇到了一个奇怪的问题。在过去的两年中,该站点一直运行良好,现在服务器上的所有网站都随机转到“站点离线检查 settings.php”页面。最近网站没有任何变化。

当我尝试 go do mysqld stop 时,它说忙了一段时间,然后最后说失败,而执行 start 会导致立即失败。

我在 google 上搜索的许多线程都表明 settings.php 中的主机名已关闭,但由于该网站已经上线两年了,我认为情况并非如此。

我以前不必对 mySQL 进行故障排除,但如果我没记错的话,我应该查看的日志文件是 Hostname.err。在那里,它有大量关于 InnoDB 的错误链。列为致命错误的那个说:

InnoDB:致命错误:无法为缓冲池分配内存

我很感激任何建议,如果有日志文件可以帮助我知道。

编辑:请求的信息。1) 当我检查 CNF 时,似乎所有涉及 innoDB 的行都用 # 注释。这意味着它一直是这样,因为我没有修改它。

2)mysql Ver 14.14 Distrib 5.5.14, for Linux (i686) using readline 5.1

3)看起来每次我尝试启动数据库时/在网站死掉之前,IO速率都会出现巨大的跳跃。如果这些缓存表变得太难以管理并且有丢失任何东西的风险,我该如何清除它们?

第三次编辑(现在使用 datadir):

虚拟机上有多少内存?512MB

datadir 有多少空间?

大小:20G 已用:19G 可用 0 使用百分比:100%

ibdata1 ( ls -lh /var/lib/mysql/ibdata1 ) 的大小是多少?114M

仅供参考:如果将来有人遇到同样的问题,我的问题是二进制日志文件占用了我的整个磁盘空间。见这里http://systembash.com/content/mysql-binary-log-file-size-huge/

Rol*_*DBA 1

我的天啊 !!!查看输出df -h

Size: 20G Used: 19G Available 0 Use Percent: 100%
Run Code Online (Sandbox Code Playgroud)

您没有磁盘空间!

释放更多磁盘空间或linode增加磁盘空间。

根据MySQL 5.0认证学习指南

在此输入图像描述 第 408,409 页第 29.2 节第 11 条指出:

如果在向 MyISAM 表添加行时磁盘空间不足,则不会发生错误。服务器暂停操作,直到空间可用,然后完成操作。

事实上,mysqld 并没有消亡。它正在等待可用磁盘空间来继续正常执行的操作。即使在启动期间,如果 mysqld 创建临时表,它也是一个 MyISAM 表。磁盘上没有剩余空间?没问题。MyISAM 只是耐心地等待您释放可用空间。

如果您有类似的错误文件/var/log/mysql/log,请像这样清除其内容:

echo -n > /var/log/mysqld.log
Run Code Online (Sandbox Code Playgroud)

如果错误文件存在,/var/lib/mysql/my-machine.err则执行以下操作:

echo -n > /var/lib/mysql/my-machine.err
Run Code Online (Sandbox Code Playgroud)

试一试 !!!