Реплике чтения AWS не удается синхронизировать таблицу движка памяти magento
Наша база данных Magento 1.9 размещена на AWS RDS. Для повышения производительности базы данных мы создали реплику Amazon для чтения.
К сожалению, реплика чтения не синхронизирована. Сообщения об ошибках указывают, что репликация пытается удалить записи из
Каталог_продукта_индекс_eav_tmp
... но этих записей не существует.
Дальнейшее исследование показало, что в этой таблице используется механизм ПАМЯТИ, а таблицы, использующие механизм ПАМЯТИ, не могут быть воспроизведен должным образом.
Https://www.percona.com/blog/2010/10/15/replication-of-memory-heap-tables / предлагает запретить репликацию этих таблиц с помощью опцииreplicate-ignore-table=db.memory_table. Но эта опция, похоже, недоступна в Amazon RDS.
У кого-нибудь есть предложения о том, как запустить реплику чтения в нашей среде?
2 answers
После некоторых исследований кажется, что преобразование этих таблиц с использованием движка "ПАМЯТЬ" в движок "InnoDB" может сработать. Хотя это не поддерживается, и, похоже, нет "официального ответа", все известные факты, похоже, благоприятствуют этому подходу:
Некоторые таблицы Magento не являются InnoDB, безопасно ли конвертировать все таблицы в InnoDB?
Аналогичные проблемы в stackexchange также не имеют ответов (я нашел этот только позже), поэтому их может быть немного (опубликовано) опыт использования реплики чтения:
Таблицы можно найти следующим образом:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory' OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento'
Я публикую это в качестве ответа здесь (преобразование таблиц), хотя я не уверен в этом - тот, кто может улучшить его, может добавить некоторый опыт или поделиться знаниями о недостатках, не стесняйтесь делать это!
Обходной путь для создания репликации удаления несуществующих данных в реплике
1) Получить всю таблицу механизма памяти в базах данных: ВЫБЕРИТЕ * ИЗ INFORMATION_SCHEMA.ТАБЛИЦЫ, ГДЕ (ДВИЖОК = 'Память') И TABLE_SCHEMA=";
2) Усечь эти таблицы памяти , т.Е. - усечь таблицу catalog_product_index_eav_tmp
3) Создайте новую реплику чтения