有时,运行InnoDB的MySQL服务器需要很长时间才能关闭。通常的罪魁祸首是从缓冲池中清除脏页。这些页面已在内存中修改,但未在磁盘上修改。
如果您在服务器完成此过程之前将其杀死,则它将仅在启动时进入恢复阶段,由于各种原因,InnoDB库存中的服务器可能比关机过程还要慢。
减少关闭时间的一种方法是预刷新脏页面,如下所示:
mysql> set global innodb_max_dirty_pages_pct = 0;
现在运行以下命令:
$ mysqladmin ext -i10 | grep dirty | Innodb_buffer_pool_pages_dirty | 1823484 | | Innodb_buffer_pool_pages_dirty | 1821293 | | Innodb_buffer_pool_pages_dirty | 1818938 |
然后等待它接近零。(如果正在积极使用服务器,它将不会为零。)
一旦它非常低,您就可以执行关闭操作,并且未完成的工作要少得多,因此服务器应该更快地关闭。