特别是在磁盘已满后,如何做MySQL维护

我有一个相当大的MySQL数据库(InnoDB)在ubuntu服务器虚拟机上运行。 最近由于我的错误,硬盘变满了(在物理机器上),服务器卡住了,用户无法工作。 我不得不从物理机器上删除一些文件,并用MySQL数据库重启ubuntu服务器。

  1. 在这样的崩溃之后,我需要在MySQL上执行什么特殊的事情?
  2. 有什么特别的我需要在Ubuntu服务器上执行? (如chkdsk或碎片整理)
  3. 是否需要定期在MySQL数据库上运行“最佳实践”命令?

  1. 不,但检查日志中是否有警告和错误。 在某些情况下,您可能需要进行维修。
  2. 不,如果你需要一个文件系统检查,它会提示你做一个,或自动运行一个。 Linux的等价物是fsck(文件系统检查)。 这是如何工作的完全取决于你正在使用的文件系统。
  3. OPTIMIZE表可以清理未使用的空间(即如果大量数据被更改或删除)。 根据您的架构和数据使用情况,它可能会或可能不会有用。 再一次,当你运行这个时要小心,MySQL在运行期间locking表。

Althuogh这些是你问的很好的问题,真正的根本原因是一个文件系统填满。 这是你需要解决的问题:

  1. 如果这台机器的主要function是数据库服务器,MySQL数据库应该在它自己的分区上。 如果它只是一个辅助函数,至less要确保/ var在自己的分区上(或者你的MySQL数据目录的基本目录)是closures的。 您不应该通过将文件添加到/ home或/

  2. 您应该注意到文件系统太靠近满了。 Nagios或hyperic可以为你做这个和其他一些健康检查和警告,可以提醒你潜在的危险。

对于文件系统,如果使用日志文件系统,则应该自动处理该文件系统。

对于Mysql,您可以使用优化和修复表mysql命令,但是您必须小心,因为这些命令可能需要很长时间,并且需要locking表。 你可以看看mysql文档以获取更多信息。