Большинство современных установок WordPress работают с движком баз данных InnoDB, который поддерживает транзакции, обновлённые индексы, лучшую работу с блокировками и может давать прирост производительности по сравнению с MyISAM — особенно на нагруженных сайтах. InnoDB сейчас является стандартным движком в MySQL/MariaDB и рекомендуется для WordPress для более стабильной и масштабируемой работы.
Перед началом — резервная копия
Прежде чем вносить изменения, обязательно сделайте полную резервную копию базы данных:
wp db export backup-before-engine-change.sql --all-tablespaces --add-drop-table
Этот дамп можно восстановить, если что-то пойдёт не так:
wp db import backup-before-engine-change.sql
Проверка текущих таблиц
Чтобы увидеть, какие таблицы используют движок MyISAM, выполните:
wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-root
Если вывод пустой — все таблицы уже в InnoDB.
Массовая конвертация всех таблиц
Самый удобный способ — сгенерировать список запросов, а затем выполнить их:
wp db query "SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE ENGINE = 'MyISAM'" --skip-column-names > db_convert.sql
wp db query < db_convert.sql
rm db_convert.sql
Это автоматически создаст список команд ALTER TABLE … ENGINE=InnoDB для всех таблиц с MyISAM и применит их.
Проверка результата
После выполнения вы можете убедиться, что таблицы теперь используют InnoDB:
wp db query "SHOW TABLE STATUS WHERE Engine = 'InnoDB'" --allow-root
Если вывод показывает таблицы с Engine = InnoDB, всё прошло успешно.
Зачем это делать
Переход на InnoDB даёт несколько практических преимуществ:
- Поддержка транзакций — важна для сложных операций и восстановления после сбоев.
- Более эффективные блокировки — InnoDB использует блокировки на уровне строк, а не всей таблицы.
- Лучшая работа с большим объёмом данных — InnoDB оптимизирован для крупных баз.
- Современные возможности индексации и кэширования.
Возможные нюансы
- Если база сильно старая, некоторые таблицы могут не конвертироваться из-за настроек SQL-режима в MySQL/MariaDB. В этом случае может потребоваться временно изменить SQL_MODE или вручную обработать ошибки.
- Рекомендуется после конвертации убедиться, что функциональность сайта не нарушена, и при необходимости восстановить резервную копию.
Заключение
Конвертация таблиц WordPress из MyISAM в InnoDB через WP-CLI — это быстрый и удобный способ повысить стабильность и производительность базы данных, особенно на больших сайтах. WP-CLI позволяет полностью автоматизировать процесс без необходимости заходить в phpMyAdmin или другие визуальные интерфейсы.
Если желание есть — можно также создать bash-скрипт, который будет выполнять те же команды в цикле для каждой таблицы, но приведённый способ с SQL-скриптом остаётся универсальным и надёжным.