MySQLのダウンタイムを最小限に抑えながら多数のパッケージを更新する優れた方法

MySQLのダウンタイムを最小限に抑えながら多数のパッケージを更新する優れた方法

次のコマンドを実行すると:

apt list --upgradable

アップグレードが必要なパッケージが多数あります。

Listing... Done
grub-common/bionic-updates 2.02-2ubuntu8.23 amd64 [upgradable from: 2.02-2ubuntu8.21]
grub-pc/bionic-updates 2.02-2ubuntu8.23 amd64 [upgradable from: 2.02-2ubuntu8.21]
grub-pc-bin/bionic-updates 2.02-2ubuntu8.23 amd64 [upgradable from: 2.02-2ubuntu8.21]
grub2-common/bionic-updates 2.02-2ubuntu8.23 amd64 [upgradable from: 2.02-2ubuntu8.21]
initramfs-tools/bionic-updates,bionic-updates 0.130ubuntu3.12 all [upgradable from: 0.130ubuntu3.11]
initramfs-tools-bin/bionic-updates 0.130ubuntu3.12 amd64 [upgradable from: 0.130ubuntu3.11]
initramfs-tools-core/bionic-updates,bionic-updates 0.130ubuntu3.12 all [upgradable from: 0.130ubuntu3.11]
intel-microcode/bionic-updates,bionic-security 3.20210216.0ubuntu0.18.04.1 amd64 [upgradable from: 3.20201110.0ubuntu0.18.04.2]
libmysqlclient20/bionic-updates,bionic-security 5.7.34-0ubuntu0.18.04.1 amd64 [upgradable from: 5.7.33-0ubuntu0.18.04.1]
libnss-systemd/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]
libpam-systemd/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]
libsystemd0/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]
libudev1/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]
linux-generic/bionic-updates,bionic-security 4.15.0.143.130 amd64 [upgradable from: 4.15.0.142.129]
linux-headers-generic/bionic-updates,bionic-security 4.15.0.143.130 amd64 [upgradable from: 4.15.0.142.129]
linux-image-generic/bionic-updates,bionic-security 4.15.0.143.130 amd64 [upgradable from: 4.15.0.142.129]
linux-libc-dev/bionic-updates,bionic-security 4.15.0-143.147 amd64 [upgradable from: 4.15.0-142.146]
mysql-client-5.7/bionic-updates,bionic-security 5.7.34-0ubuntu0.18.04.1 amd64 [upgradable from: 5.7.33-0ubuntu0.18.04.1]
mysql-client-core-5.7/bionic-updates,bionic-security 5.7.34-0ubuntu0.18.04.1 amd64 [upgradable from: 5.7.33-0ubuntu0.18.04.1]
mysql-server/bionic-updates,bionic-updates,bionic-security,bionic-security 5.7.34-0ubuntu0.18.04.1 all [upgradable from: 5.7.33-0ubuntu0.18.04.1]
mysql-server-5.7/bionic-updates,bionic-security 5.7.34-0ubuntu0.18.04.1 amd64 [upgradable from: 5.7.33-0ubuntu0.18.04.1]
mysql-server-core-5.7/bionic-updates,bionic-security 5.7.34-0ubuntu0.18.04.1 amd64 [upgradable from: 5.7.33-0ubuntu0.18.04.1]
systemd/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]
systemd-sysv/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]
ubuntu-advantage-tools/bionic-updates 27.0.2~18.04.1 all [upgradable from: 17]
udev/bionic-updates 237-3ubuntu10.47 amd64 [upgradable from: 237-3ubuntu10.46]

以前、 を使用してすべてのパッケージをアップグレードするとapt upgrade、MySQL がダウンし、すべてのパッケージがアップグレードされるまで待ってから MySQL を再起動する必要があることがわかりました。これには数分かかり、MySQL の再起動を待つ間、このサーバー上のすべての Web サイトがダウンしていました。

したがって、サーバー上のすべてのパッケージをアップグレードしながら、MySQL のダウンタイムを最小限に抑えるにはどうすればよいでしょうか?

たとえば、次のコマンドを使用して MySQL パッケージのみをアップグレードすることを検討しています。

apt --only-upgrade install mysql-client-5.7
apt --only-upgrade install mysql-client-core-5.7
apt --only-upgrade install mysql-server
apt --only-upgrade install mysql-server-5.7
apt --only-upgrade install mysql-server-core-5.7

そして、MySQL パッケージがアップグレードされたら、簡単なapt upgradeコマンドで他のすべてのパッケージをアップグレードします。

これは MySQL のダウンタイムを最小限に抑えるための良いアプローチでしょうか?

答え1

通常、データベース エンジン専用の運用サーバーではholdパッケージ化を行い、開発環境やステージング環境で更新をテストするのに十分な時間が取れるまで、サーバーが更新されないようにします。

次のようにしてこれを行うことができますapt:

sudo apt-mark hold {package}

これにより、データベースを壊すことなく、システムの他のすべてのアップデートをインストールできるようになります。MySQL を更新する準備ができたら、次のようにしてホールドを解除できます。

sudo apt-mark unhold {package}

この方法の優れた点は、更新とセキュリティ パッチを毎週サーバーに適用できる一方で、データベースの更新は四半期ごとにスケジュールされたメンテナンス ウィンドウ中にのみ実行されることです (もちろん、非常に重要なものをプッシュする必要がある場合を除きます)。

関連情報