Обновление MySQL на Ubuntu
Перед обновлением резервные копии администратора панели, пользователей панели и их баз данных должны быть настроены и успешно созданы в панели.
Предусмотрено обновление только с MySQL 8.0 до MySQL 8.4 и только в стандартной конфигурации в ОС Ubuntu 22.04 и 24.04.
Выполняя обновление СУБД по данной инструкции, вы должны понимать все действия и принимаете всю ответственность на себя!
Также крайне рекомендуется свериться с официальной документацией MySQL указанных версий до выполнения обновления для проверки совместимости директив, их значений и параметров данных баз данных.
Не используйте какой-либо режим работы сервера MySQL: директива sql-mode должна не иметь значений или должна быть удалена из конфигурации вовсе - это необходимо для обеспечения совместимости с устаревшими типами данных в базах данных.
Подготовка
В процессе обновления сервера БД панель, сайты и приложения, которые используют данный сервер баз данных, будут недоступны - для обновления выберите время с минимальной нагрузкой на сервер, а также предупредите ваших пользователей!
Убедитесь, что на диске свободно как минимум 2 ГБайта:
df -h /Убедитесь, что свободно не менее 2 ГБайт оперативной памяти:
free -mhОбновите все пакеты системы:
apt -y update; apt upgradeОтключите мониторинг службы mysql в панели в разделе Службы через кнопку Мониторинг.
Остановите работу панели ispmanager 6:
/usr/local/mgr5/sbin/mgrctl -m core --lockУбедитесь, что процессы панели остановлены:
ps aux | grep -i ispmgr | grep -v grepСкопируйте root-пароль СУБД из /root/.my.cnf и создайте резервную копию (дамп) всех баз данных нативной СУБД:
mysqldump -u root -p<пароль> --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sqlПроверьте наличие строки "Dump completed" в дампе - она укажет на успешное создание дампа:
tail <имя_дампа>Наличие успешно созданного дампа критично для обеспечения сохранности всех данных СУБД - крайне не рекомендуется приступать к обновлению, если дамп не был создан корректно!
Если необходимо запустить панель после её остановки ранее, смотрите раздел Запуск и проверка.
Обновление
Скачайте пакет MySQL 8.4 и установите его:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb
dpkg -i mysql-apt-config_0.8.36-1_all.debВ процессе установки откроется текстовое меню:
- Выберите MySQL Server & Cluster (Currently selected: ...).
- В списке версий выберите mysql-8.4-lts.
Обновите список пакетов:
apt updateУбедитесь, что менеджер пакетов определяет новую версию:
apt-cache policy mysql-serverОстановите службу MySQL:
systemctl stop mysqlОтключите устаревший плагин аутентификации и подключите поддержку legacy-подключений:
sed -i 's/^default-authentication-plugin/mysql_native_password=ON\n#default-authentication-plugin/' /etc/mysql/mysql.conf.d/mysqld.cnfВ MySQL 8.4 плагин mysql_native_password по-прежнему поддерживается для авторизации созданных ранее пользователей, но не может быть назначен в качестве плагина по умолчанию через директиву default-authentication-plugin.
Новые пользователи будут создаваться с авторизацией через caching_sha2_password - это является стандартом безопасности.
Необходимо изменить метод авторизации всех пользователей MySQL на актуальный по инструкции.
Обновите параметры кодировки баз данных:
sed -i.bak -e 's/^collation-server[[:space:]]*=[[:space:]]*utf8_general_ci$/collation-server = utf8mb4_0900_ai_ci/' -e 's/^character-set-server[[:space:]]*=[[:space:]]*utf8$/character-set-server = utf8mb4/' /etc/mysql/mysql.conf.d/mysqld.cnfОбновите MySQL:
apt install mysql-server=8.4.8-1ubuntu24.04В процессе обновления возникнет вопрос на перезапись конфигурационного файла /etc/mysql/mysql.conf.d/mysqld.cnf - рекомендуется ответить "keep your currently-installed version", чтобы оставить рабочую конфигурацию.
Запуск и проверка
Проверьте статус службы MySQL:
systemctl status mysqldПроверьте синтаксис конфигурационного файла:
mysqld --defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf --validate-config Если требуется, исправьте ошибки, после чего запустите службу и включите её автозапуск:
systemctl start mysqld
systemctl enable mysqldЕсли служба по-прежнему не запускается, убедитесь что в конфигурационном файле назначен журнал для директивы log_error и этот журнал. По умолчанию, журнал расположен по пути /var/log/mysql/error.log и посмотреть последние записи можно через команду:
tail -n 50 /var/log/mysql/error.logВы можете обратиться в поддержку ispmanager за консультацией по ошибкам работы сервера баз данных.
Проверьте версию MySQL:
dpkg -l | grep -iE "(mysql|mariadb)" | grep -i serverПроверьте версию и кодировку:
mysql -e "SELECT VERSION();"
mysql -e "SHOW VARIABLES LIKE 'character_set_server';"
mysql -e "SHOW VARIABLES LIKE 'collation_server';"Проверьте авторизацию в СУБД:
mysql -u root -pЗапустите панель:
/usr/local/mgr5/sbin/mgrctl -m core --unlockПерейдите в раздел Уведомления и удалите уведомления о решении проблемы службы mysql.
В разделе Конфигурация ПО пункт Сервер СУБД MySQL может быть неактивен - это стандартное поведение панели и связано с ручным изменением нативного ПО.
Действия после обновления
- У сайтов работающих на PHP-FPM возможно появление ошибки 404 - это связано с отсутствием поддержки ЧПУ у сайта. Вы можете включить поддержку ЧПУ в настройках каждого конкретного сайта в разделе Сайты.
- Включите мониторинг службы mysql в панели в разделе Службы через кнопку Мониторинг.