我在 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/
我的天啊 !!!查看输出df -h
Size: 20G Used: 19G Available 0 Use Percent: 100%
Run Code Online (Sandbox Code Playgroud)
您没有磁盘空间!
释放更多磁盘空间或linode
增加磁盘空间。
第 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)
试一试 !!!