为什么某些 apt-get 安装会重新启动 mySQL?

Bla*_*ble 2 mysql apt

我遇到了一个奇怪的情况,即通过apt-get导致运行(生产!)mysqld 实例在某些 16.04 Linux 服务器上重新启动来安装软件包。

我们sudo apt-get install -y iotop在四台服务器上运行。在三台服务器上安装失败,说明[ERROR] unknown variable 'rpl_semi_sync_slave_enabled=1'. 此变量仅在这三台服务器上设置。此时我们正在运行的 mysql 服务关闭了!

第四台服务器没有相同的 mysql 配置。值得注意的是,该变量rpl_semi_sync_slave_enabled不存在。易能够安装iotop,但有趣的是我们的mysql服务并没有重新启动或关闭。

因此,似乎某些软件包在安装失败时会终止与安装无关的正在运行的进程!这让我非常担心在我们的生产服务器上安装更多的软件包,这些软件包运行我们不喜欢随时重新启动的进程。我如何知道软件包安装是否会重新启动这些进程,以及为什么会首先发生?

Esa*_*nen 5

kill之后或由于失败而无法安装任何东西的可能性很小——无论是否相关。此外,在启动过程中,这[ERROR] unknown variable 'rpl_semi_sync_slave_enabled = 1;似乎不是aptMySQL的错误,而是 MySQL的错误。

完全有可能在所有服务器上重新启动 MySQL,但只有一台服务器无法启动,从而导致安装失败——反之亦然。

为什么安装iotop会导致 MySQL 重启?在发行版(比如你的 Ubuntu)中,我们有一个叫做依赖树的东西:包可以依赖于依赖于其他包的其他包,这些包可以被其他包相互需要。有时一个包依赖于另一个包的某个版本,导致已经安装的包在安装时升级。

在这种情况下,iotop取决于python。然后,例如,python-mysqldb依赖于pythonlibmysqlclient18依赖mysql-common......你可能得到为什么MySQL可能已经升级,一起看似无关的图片iotop

如何知道在此期间安装和升级了哪些软件包apt-get install

-y, --yes,--assume-yes

自动是提示。假设yes为对所有提示的回答并以非交互方式运行。如果发生不希望的情况,例如更改保留的包裹或移除重要包裹,apt-get则将中止。

-y如果您不确定会发生什么,请不要使用。默认情况下,您将获得所有已安装、升级甚至删除的软件包的列表。你自愿选择忽略这一切。