mysqladmin 没有等待完全关闭(或者 debian init.d 脚本坏了?)

mysqladmin 没有等待完全关闭(或者 debian init.d 脚本坏了?)

我在 debian wheezy 上运行 Percona MySQL 服务器 5.6(来自软件包)(在 jessie 上的行为相同)。不幸的是,我总是得到这个:

# service mysql stop
[FAIL] Stopping MySQL (Percona Server): mysqld failed!

我可以说一下我的配置

  • /etc/init.d/mysql 未受影响
  • /etc/mysql/debian.cnf 包含 debian-sys-maint 的有效且可用的(已测试的)凭证

我对初始化脚本进行了一些进一步的调查,得出的结论是问题似乎出在 mysqladmin 上。

初始化脚本调用

mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown

mysqladmin 返回后,它会检查服务器是否已正确关闭。现在这似乎是问题所在:mysqladmin 在完全关闭之前返回,然后过早检查它是否仍在运行。

我在调查此事时也查看了日志文件。我的发现:

2017-01-05 00:18:49 12595 [Note] InnoDB: Starting shutdown...
2017-01-05 00:18:49 7f70e4df7700 InnoDB: Dumping buffer pool(s) to .//ib_buffer_pool
2017-01-05 00:18:49 7f70e4df7700 InnoDB: Buffer pool(s) dump completed at 170105  0:18:49
2017-01-05 00:18:49 12595 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool

这是 mysqladmin 返回的时刻。它仍在继续:

2017-01-05 00:18:51 12595 [Note] InnoDB: Shutdown completed; log sequence number 120471740085
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'ARCHIVE'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'MyISAM'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'MEMORY'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'CSV'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'MRG_MYISAM'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'sha256_password'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'mysql_old_password'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'mysql_native_password'
2017-01-05 00:18:51 12595 [Note] Shutting down plugin 'binlog'
2017-01-05 00:18:51 12595 [Note] /usr/sbin/mysqld: Shutdown complete

证明:我在关机后在初始化脚本中添加了“sleep 5”来延迟检查——有效。

现在我有两个问题:1. Debian init 脚本此时是否已损坏?2. 有没有办法配置服务器,让 mysqladmin 等待完全关闭?

答案1

我遇到了类似的问题,但使用 mysql 5.7 时,我认为问题是 MySQL 不遵守 3600 秒的默认关机超时。因此,当我使用以下关机命令时,mysqladmin 会等到关机过程成功完成。

mysqladmin -u username -p password shutdown  --shutdown-timeout=3600

添加于 2019 年 3 月 12 日:

这个问题主要是由于以下错误造成的https://bugs.mysql.com/bug.php?id=91803在my.cnf中添加pid文件后,mysqladmin正在等待关闭过程完成

相关内容