由于某种原因,我的网络主机有时会重新启动托管我的 CentOS VPS 的服务器,当这种情况发生时,通常会导致我的一个 MySQL 表崩溃。该表处理站点的 PHP 会话(由 PHP 提供支持的 Joomla 站点)。
该网站的流量相当大,因此当重新启动 VPS 时,会话表通常会被写入。
我能做些什么来阻止这种情况发生?也许是当服务器收到重启命令时进行某种软 MySQL 关闭?
我现在唯一做的事情就是当服务器恢复时自动修复表格。
答案1
您可以在数据库中切换到 InnoDB 表,或者使用支持完全 ACID 兼容事务的数据库系统;PostgreSQL 可以做到这一点,并且可以在不破坏数据库的情况下崩溃(它只需要在完成启动过程之前重播其日志)。
MySQL 的默认表是不是崩溃安全。我甚至不确定我是否会将 InnoDB 称为崩溃安全,但它是您在不切换到其他产品的情况下实际能够获得的最接近崩溃安全的产品,并且我认为这对您来说不是一个选择。
答案2
更换网络主机,如果您租用 VPS,您的主机应该没有理由随机重启您的服务器。通常,当系统暂停时,MySQL 会正常关闭。我怀疑您的提供商只是发出了终止命令,而不是正常关闭。
答案3
你使用的是 CentOS 附带的 MySQL 软件包吗?如果是,mysqld 应该通过以下方式关闭:/etc/init.d/mysqld脚本。以下命令返回什么?
sudo chkconfig --list mysqld
如果每个运行级别都处于“关闭”状态,请尝试运行
sudo chkconfig on mysqld