Я использую AWS RDS Read Replica. У него постоянно возникают проблемы с таблицами движка памяти Magento. За резервное копирование и чтение реплик RDS любит InnoDB. Могу ли я смело менять все таблицы на InnoDB?
Кроме того, я получаю следующее предупреждение от AWS:
Инстанс БД magento-monin-prod-db содержит таблицы MyISAM, которые не были перенесены в InnoDB. Эти таблицы могут повлиять на вашу способность выполнять восстановление на определенный момент времени. Рассмотрите возможность преобразования этих таблиц в InnoDB. Пожалуйста, обратитесь к http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html#MySQL.CommonDBATasks.Tables
Правдоподобный ответ
Еще интересует обратная связь. Я добавлю это как ответ, если я не найду никаких проблем в течение следующих 24 часов. Шаги, которые я предпринял ниже, пока что безопасны. Больше всего меня беспокоили таблицы подсистемы памяти Magento (таблицы, заканчивающиеся на in_tmp) и их влияние на индексирование.
Вот что я сделал:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory' OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento_db'
- Для меня это возвращало в основном временные таблицы индексов и таблицы модулей magento, так что не так много критических основных таблиц, о которых нужно беспокоиться, и достаточно мало таблиц, чтобы я мог легко выполнить другую таблицу изменения, если что-то попало в вентилятор.
Для каждой возвращенной таблицы я выполнил:
Alter table {table-name} ENGINE=InnoDB;
Я бы нервничал, чтобы попробовать это, если ни один из ваших столов не InnoDB. Но, как я уже говорил, в моем экземпляре было только несколько основных таблиц, которые нужно было изменить.
Ответы:
Можно изменить тип данных на InnoDB, предполагая, что выполняется одно из следующих условий:
Лично я бы порекомендовал сделать это с помощью Magento DB Repair Tool, чтобы минимизировать риск, а также проверить наличие любых других проблем с конфигурацией БД. InnoDB - идеальный движок, несмотря на полнотекстовые ограничения .
источник
Afaik вы не должны конвертировать все таблицы в InnoDB.
catalogsearch_fulltext
должен остаться MyISAM, потому что InnoDB не имеет поддержки полнотекстового поиска, по крайней мере, до MySQL 5.6 (iirc).Однако для всех остальных таблиц это должно быть безопасно.
источник
Я просто изменил движок MySQL по умолчанию на InnoDB, и большинство моих таблиц Magento просто чудесным образом превратились в InnoDB (некоторые из них все еще MyISAM, а некоторые - Memory).
Просто подумал, что поделюсь этим ...
источник