Загрузка...

MyISAM в InnoDB с помощью WP-CLI

Преобразование таблиц WordPress из MyISAM в InnoDB через WP-CLI
mysql

Большинство современных установок 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-скриптом остаётся универсальным и надёжным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *