Реплике чтения 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.

У кого-нибудь есть предложения о том, как запустить реплику чтения в нашей среде?

Author: hey, 2017-03-05

2 answers

После некоторых исследований кажется, что преобразование этих таблиц с использованием движка "ПАМЯТЬ" в движок "InnoDB" может сработать. Хотя это не поддерживается, и, похоже, нет "официального ответа", все известные факты, похоже, благоприятствуют этому подходу:

Некоторые таблицы Magento не являются InnoDB, безопасно ли конвертировать все таблицы в InnoDB?

Аналогичные проблемы в stackexchange также не имеют ответов (я нашел этот только позже), поэтому их может быть немного (опубликовано) опыт использования реплики чтения:

Https://stackoverflow.com/questions/39043787/magento-reindexing-uses-tmp-tables-which-break-mysql-replication

Таблицы можно найти следующим образом:

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory'  OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento'

Я публикую это в качестве ответа здесь (преобразование таблиц), хотя я не уверен в этом - тот, кто может улучшить его, может добавить некоторый опыт или поделиться знаниями о недостатках, не стесняйтесь делать это!

 2
Author: hey, 2017-05-23 12:37:16

Обходной путь для создания репликации удаления несуществующих данных в реплике

1) Получить всю таблицу механизма памяти в базах данных: ВЫБЕРИТЕ * ИЗ INFORMATION_SCHEMA.ТАБЛИЦЫ, ГДЕ (ДВИЖОК = 'Память') И TABLE_SCHEMA=";

2) Усечь эти таблицы памяти , т.Е. - усечь таблицу catalog_product_index_eav_tmp

3) Создайте новую реплику чтения

 0
Author: Zeno Yu, 2018-11-26 03:56:07