Если я выполню следующую команду:
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.
Итак, как можно минимизировать время простоя 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}
Преимущество этого метода в том, что обновления и исправления безопасности можно применять к серверу еженедельно, тогда как обновления базы данных выполняются только во время запланированных периодов обслуживания каждый квартал. (Если, конечно, не нужно выпустить что-то действительно важное).