Недавно 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)


  1. Akina
    06.06.2024 09:57
    +3

    Ну если вам в описанной процедуре не удалось налететь на грабли - вы чертовски везучи.

    Во-первых, сервер на версии 8+ и сервер на версии 5.х могут быть по-разному настроены. В первую очередь это относится к Server SQL Mode, но и других настроек, разница в которых делает полученную из дампа базу совершенно неработоспособной, хватает. Да, если всё это происходит в рамках одного хостера, то оно попроще, потому что в основном он, скорее всего, эти настройки подровнял, но всегда есть шанс побыть первопроходцем с ранее не выявленной настройкой.

    Во-вторых, между этими версиями есть достаточно серьёзные синтаксические различия. Ладно, если вы используете вордпресс в его исходной форме - одновременное обновление и его тоже эту проблему решает. Но если есть свои допиливания, особенно с сырым SQL, то счастье - оно близко.

    И это не полный список - есть и ещё поводы вместо счастливой улыбки почесать репу...


  1. FanatPHP
    06.06.2024 09:57
    +2

    Это какой-то позор, а не статья. Мало того что это местечковая инструкция для клиентов одного конкретного провайдера, которая не подойдет больше никому, и зачем это в других хабах - загадка. Мало того что сама по себе инструкция сводится к "сделайте дамп - залейте дамп". Но главное что вводная часть - это инфоцыганство в чистом виде, набор голословных утверждений, зачастую не имеющих отношения к теме статьи.

    • "У старых версий MySQL производительность гораздо ниже" - это про отсутствующий в восмёрке query cache, который только и позволял держаться на плаву большинству ламерских плагинов?

    • "большая часть новых уязвимостей не закрыты" - какие например?

    • "поддержка оконных функций (window functions), общие табличные выражения (CTE), JSON таблицы и многое другое" - что из этого используется в Wordpress?

    Ой, о чем это я. Это же тот самый Space Web, в котором "руководитель R&D" берется рассуждать о безопасности, в которой не смыслит ни бельмеса.