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

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

我遇到了一个奇怪的情况,通过安装包导致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不存在。Apt 能够安装iotop,但有趣的是我们的 mysql 服务却无法安装不是重新启动或者关机。

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

答案1

软件包安装失败不太可能是kill之后发生的任何故障,也不太可能是与此相关的故障。此外,在启动过程中,这[ERROR] unknown variable 'rpl_semi_sync_slave_enabled = 1;似乎不是 的错误,而是 MySQL 的错误。apt

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

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

在这种情况下,iotop取决于python。然后,例如python-mysqldb取决于python并且libmysqlclient18取决于mysql-common... 您可能已经明白为什么 MySQL 可能与看似不相关的 一起升级了iotop

如何知道哪些软件包被安装和升级了apt-get install

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

自动对提示回答“是”。假定yes为对所有提示的回答,并以非交互方式运行。如果发生不良情况(例如更改保留的包或删除必要的包),则会apt-get中止。

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

相关内容