Недавно WordPress при проверке здоровья сайта начал рекомендовать использование версии MySQL 8. В этой статье расскажем, как перенести сайт на WordPress на MySQL 8 на примере нашего хостинга. Спойлер: это намного легче, чем может показаться.
Что будет, если я пока не хочу мигрировать сайт?
У старых версий MySQL производительность гораздо ниже, большая часть новых уязвимостей не закрыты, а ещё могут быть ограничения в использовании новых функций. К тому же, новые версии WordPress и плагинов не перестанут выходить, а ваша текущая конфигурация может стать несовместимой с ними.
В версии MySQL 8 оптимизировали работу с индексами, улучшили работу с запросами, а большие объемы данных обрабатываются эффективнее. Это дает сайту на WordPress буст по скорости и стабильности. Из раздела безопасности добавили улучшенные методы аутентификации, управление паролями и расширенные возможности контроля доступа. А ещё внедрили множество новых улучшений: поддержка оконных функций (window functions), общие табличные выражения (CTE), JSON таблицы и многое другое. Вывод простой: лучше переносить сайт на новые версии как можно раньше. К тому же, сделать это легко.
Шаг 1. Создаём базу данных
В пункте управления аккаунтом переходим в раздел «Хостинг», далее в пункт «Базы данных». После нажатия на кнопку «Создать базу данных» выбираем версию MySQL 8:
Шаг 2. Переносим содержимое базы данных
Первым делом создаем дамп текущей базы данных, он сохранится в корне аккаунта. После этого его нужно будет импортировать в новую базу данных:
Импорт дампа происходит в течении нескольких минут в зависимости от размера базы данных.
Есть еще один вариант переноса базы данных — через консоль, подключившись к аккаунту по ssh.
Для создания дампа используется команда:
mysqldump -Q --max-allowed-packet=1M --extended-insert=false -u dbuser -p dbname > dump.sql
Для импорта:
mysql -h 127.0.0.1 -P 3308 -uDBlogin -pDBpass DBname < backup.sql
Шаг 3. Редактируем конфигурационный файл
В разделе «Файловый менеджер» переходим в директорию с файлами сайта. Открываем для редактирования файл wp-config.php и меняем строку:
/** Имя сервера базы данных */
define( 'DB_HOST', 'localhost' );
На следующую:
/** Имя сервера базы данных */
define( 'DB_HOST', 'localhost:/var/run/mysql8-container/mysqld.sock' );
Готово! После этого ваш сайт начнет работать с MySQL 8, и вы сможете обновить его до последней стабильной версии.
А вы сразу обновляетесь до новых версий? Делитесь в комментариях!
Комментарии (2)
FanatPHP
06.06.2024 09:57+2Это какой-то позор, а не статья. Мало того что это местечковая инструкция для клиентов одного конкретного провайдера, которая не подойдет больше никому, и зачем это в других хабах - загадка. Мало того что сама по себе инструкция сводится к "сделайте дамп - залейте дамп". Но главное что вводная часть - это инфоцыганство в чистом виде, набор голословных утверждений, зачастую не имеющих отношения к теме статьи.
"У старых версий MySQL производительность гораздо ниже" - это про отсутствующий в восмёрке query cache, который только и позволял держаться на плаву большинству ламерских плагинов?
"большая часть новых уязвимостей не закрыты" - какие например?
"поддержка оконных функций (window functions), общие табличные выражения (CTE), JSON таблицы и многое другое" - что из этого используется в Wordpress?
Ой, о чем это я. Это же тот самый Space Web, в котором "руководитель R&D" берется рассуждать о безопасности, в которой не смыслит ни бельмеса.
Akina
Ну если вам в описанной процедуре не удалось налететь на грабли - вы чертовски везучи.
Во-первых, сервер на версии 8+ и сервер на версии 5.х могут быть по-разному настроены. В первую очередь это относится к Server SQL Mode, но и других настроек, разница в которых делает полученную из дампа базу совершенно неработоспособной, хватает. Да, если всё это происходит в рамках одного хостера, то оно попроще, потому что в основном он, скорее всего, эти настройки подровнял, но всегда есть шанс побыть первопроходцем с ранее не выявленной настройкой.
Во-вторых, между этими версиями есть достаточно серьёзные синтаксические различия. Ладно, если вы используете вордпресс в его исходной форме - одновременное обновление и его тоже эту проблему решает. Но если есть свои допиливания, особенно с сырым SQL, то счастье - оно близко.
И это не полный список - есть и ещё поводы вместо счастливой улыбки почесать репу...