分类:技术

解决 MySQL/MariaDB 无法停止的问题

在配置这个 Azure 的新服务器时,我遇到了罕见的 MySQL 无法停止的问题,体现在通过 “sudo systemctl stop mysql.service” 无任何响应,直到达到 10 分钟的超时时间。搜遍全网也没有找到原因。

查看日志,发现卡在了 “InnoDB: Waiting for page_cleaner to finish flushing of buffer pool”,这是在等待 page_cleaner 清理缓冲池。

但是对于一个刚刚安装的 MySQL 来说,不可能存在 10 分钟还清理不完的缓存

所以经过排查,最终发现,这个问题竟然仅仅是因为我的时区设置成了东八区。

我使用了 NTP 进行时间的校正,而开机时 MySQL 比 NTP 更先启动,导致 MySQL 记录的是系统物理时间,而 NTP 启动后管理程序使用的是 NTP 校正过后的东八区时间。因此产生 MySQL 退出时要求清空八小时前 MySQL 还没有被安装时的缓存而导致这个问题。

解决问题就很简单了:

dpkg-reconfigure tzdata

将时区设置成 UTC 即可。