Вопрос или проблема
На моем Ubuntu сервере 24.04 у меня возникла странная проблема с версией установленного MySQL:
root@server-1:~# sudo apt -y upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
mysql-server-8.0 : Depends: mysql-server-core-8.0 (= 8.0.40-0ubuntu0.24.04.1) but 8.0.41-0ubuntu0.24.04.1 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
root@server-1:~# sudo apt policy mysql-server-8.0 mysql-server-core-8.0
mysql-server-8.0:
Installed: 8.0.40-0ubuntu0.24.04.1
Candidate: 8.0.41-0ubuntu0.24.04.1
Version table:
8.0.41-0ubuntu0.24.04.1 500
500 http://mirrors.linode.com/ubuntu noble-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages
*** 8.0.40-0ubuntu0.24.04.1 100
100 /var/lib/dpkg/status
8.0.36-2ubuntu3 500
500 http://mirrors.linode.com/ubuntu noble/main amd64 Packages
mysql-server-core-8.0:
Installed: 8.0.41-0ubuntu0.24.04.1
Candidate: 8.0.41-0ubuntu0.24.04.1
Version table:
*** 8.0.41-0ubuntu0.24.04.1 500
500 http://mirrors.linode.com/ubuntu noble-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages
100 /var/lib/dpkg/status
8.0.36-2ubuntu3 500
500 http://mirrors.linode.com/ubuntu noble/main amd64 Packages
Результат –dry-run:
apt install --dry-run 'mysql-server-8.0=8.0.41-0ubuntu0.24.04.1' 'mysql-server-core-8.0=8.0.41-0ubuntu0.24.04.1'
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
mysql-server-core-8.0 is already the newest version (8.0.41-0ubuntu0.24.04.1).
mysql-server-core-8.0 set to manually installed.
The following package was automatically installed and is no longer required:
mailcap
Use 'apt autoremove' to remove it.
Suggested packages:
mailx tinyca
The following packages will be upgraded:
mysql-server-8.0
1 upgraded, 0 newly installed, 0 to remove and 148 not upgraded.
4 not fully installed or removed.
Inst mysql-server-8.0 [8.0.40-0ubuntu0.24.04.1] (8.0.41-0ubuntu0.24.04.1 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Conf mysql-server-8.0 (8.0.41-0ubuntu0.24.04.1 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Conf mysql-client-8.0 (8.0.41-0ubuntu0.24.04.1 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Conf mysql-server (8.0.41-0ubuntu0.24.04.1 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [all])
Conf mysql-server-core-8.0 (8.0.41-0ubuntu0.24.04.1 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Conf mysql-client-core-8.0 (8.0.41-0ubuntu0.24.04.1 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Я боюсь сломать мой сервер MySQL, который имеет важное значение для сервера. Рисково ли выполнять “apt –fix-broken install”?
В конце концов, “apt –fix-broken install” сработала хорошо! Но мне пришлось вручную остановить MySQL перед этим.
Ответ или решение
Отвечая на вопрос о странной проблеме с версией сервера MySQL на вашем сервере Ubuntu 24.04, давайте разберем детали проблемы и предложим наилучшее решение для вашей ситуации.
Теория
Когда вы сталкиваетесь с проблемами обновления в операционной системе на базе Ubuntu, одна из наиболее распространенных причин — это нарушения зависимостей. В вашем случае основная проблема заключается в том, что установлены несовместимые версии пакетов mysql-server-8.0
и mysql-server-core-8.0
. Это довольно часто встречается при обновлении пакетов, когда новые версии основного пакета и его зависимостей не синхронизированы между собой.
Пример
Как видно из представленной информации, текущая версия mysql-server-8.0
, установленная на вашем сервере, — это 8.0.40-0ubuntu0.24.04.1
, тогда как для mysql-server-core-8.0
уже установлена более новая версия 8.0.41-0ubuntu0.24.04.1
. Это приводит к проблемам с конфликтующими зависимостями:
mysql-server-8.0
требуетmysql-server-core-8.0
той же версии (8.0.40), ноmysql-server-core-8.0
уже обновлен до версии 8.0.41.
В результате вы получаете сообщение об неудовлетворенных зависимостях, и система рекомендует использовать apt --fix-broken install
для устранения этой проблемы.
Применение
Теперь, что делать в этой ситуации? Вы правильно заметили, что выполнение команды apt --fix-broken install
может вызвать беспокойство за стабильность вашего MySQL сервера, учитывая его критическую роль. Однако, если вы ее уже выполнили и это решило проблему, последующие действия могут помочь избежать подобных ситуаций в будущем и обеспечить стабильность вашего сервера:
-
Резервное копирование данных: Перед выполнением каких-либо критических изменений или исправлений всегда создавайте резервные копии ваших данных. Как минимум, сделайте резервные копии всех баз данных MySQL, чтобы избежать потери данных в случае сбоя.
-
Просмотр списка установленных пакетов: Используйте команду
dpkg --get-selections | grep mysql
для получения списка всех связанных с MySQL пакетов. Это поможет вам понять, какие пакеты должны быть обновлены одновременно, чтобы избежать проблем с зависимостями. -
Ручная остановка MySQL: Перед обновлением пакетов всерьез рассмотрите возможность остановки сервиса MySQL вручную командой
sudo systemctl stop mysql
. Это минимизирует риски, связанные с работой сервера во время процесса обновления. -
Информация и синхронизация репозиториев: Убедитесь, что ваши репозитории обновлены и синхронизированы. Выполняйте
sudo apt update
перед установкой или обновлением пакетов, чтобы гарантировать, что все метаданные пакетов актуальны. -
Тестирование на нерабочей среде: Если возможно, протестируйте обновление на нерабочей версии вашего сервера, чтобы оценить результативность и избежать нежелательных последствий в рабочей среде. Это позволит снизить риск остановки системы.
-
Использование инструментов контейнеризации: Рассмотрите возможность использования Docker или другого инструмента виртуализации для изоляции MySQL сервера. Это даст дополнительный уровень защиты и возможность безопасного тестирования обновлений.
-
Мониторинг и логирование: После успешного обновления установите инструменты мониторинга, такие как
Prometheus
илиGrafana
, для отслеживания производительности MySQL сервера и своевременного реагирования на потенциальные проблемы.
Таким образом, подходя к вопросу обновления с должной тщательностью и следуя этим рекомендациям, вы сможете минимизировать риски и сохранить стабильность вашего MySQL сервера в долгосрочной перспективе. Ваша предосторожность оправдана, и она может предотвратить много потенциальных проблем в будущем.