16.3.3 Использование репликации с разными движками хранилища исходной и реплицированной таблиц
Для процесса репликации не имеет значения, используют ли исходная таблица на источнике и реплицированная таблица на реплике разные типы движков. Фактически, системная переменная default_storage_engine не реплицируется.
Это предоставляет ряд преимуществ в процессе репликации, позволяя использовать разные типы движков для различных сценариев репликации. Например, в типичном сценарии масштабирования (см. Раздел 16.3.4, «Использование репликации для масштабирования»), вы хотите использовать InnoDB таблицы на источнике, чтобы воспользоваться транзакционной функциональностью, но использовать MyISAM на репликах, где поддержка транзакций не требуется, так как данные только считываются. При использовании репликации в среде ведения журнала вы можете использовать движок хранилища Archive на реплике.
Настройка разных движков на источнике и реплике зависит от того, как вы настраиваете начальный процесс репликации:
-
Если вы использовали mysqldump для создания моментального снимка базы данных на вашем источнике, вы можете отредактировать текстовый файл дампа, чтобы изменить тип движка, используемый для каждой таблицы.
Другой альтернативой для mysqldump является отключение типов движков, которые вы не хотите использовать на реплике, прежде чем использовать дамп для построения данных на реплике. Например, вы можете добавить параметр
--skip-federatedна вашей реплике, чтобы отключить движокFEDERATED. Если для таблицы, которую необходимо создать, отсутствует конкретный движок, MySQL использует тип движка по умолчанию, обычноMyISAM. (Это требует, чтобы режим SQLNO_ENGINE_SUBSTITUTIONне был включен.) Если вы хотите отключить дополнительные движки таким образом, вы можете рассмотреть возможность создания специальной бинарной программы, которая будет использоваться на реплике и поддерживать только нужные вам движки. Если вы используете файлы с сырыми данными (бинарную резервную копию) для настройки реплики, вы не можете изменить начальный формат таблицы. Вместо этого используйте
ALTER TABLEдля изменения типов таблиц после запуска реплики.При создании новых установок реплики источника/реплики, где в настоящее время на источнике нет таблиц, избегайте указания типа движка при создании новых таблиц.
Если вы уже используете решение репликации и хотите преобразовать существующие таблицы в другой тип движка, выполните следующие действия:
-
Остановить реплику от выполнения обновлений репликации:
mysql>
STOP SLAVE;Это позволяет вам изменять типы движков без перерывов.
Выполните
ALTER TABLE ... ENGINE='для каждой таблицы, которую необходимо изменить.engine_type'-
Запустите процесс репликации снова:
mysql>
START SLAVE;
Несмотря на то, что переменная default_storage_engine не реплицируется, имейте в виду, что операторы CREATE
TABLE и ALTER TABLE, которые включают указание движка, корректно реплицируются на реплику. Например, если у вас есть таблица CSV и вы выполните:
mysql> ALTER TABLE csvtable Engine='MyISAM';
Предыдущее утверждение реплицируется на реплику, и тип движка на реплике преобразуется в MyISAM, даже если вы ранее изменили тип таблицы на реплике на движок, отличный от CSV. Если вы хотите сохранить различия в движках на источнике и реплике, вы должны быть осторожны при использовании переменной default_storage_engine на источнике при создании новой таблицы. Например, вместо:
mysql> CREATE TABLE tablea (columna int) Engine=MyISAM;
Используйте этот формат:
mysql> SET default_storage_engine=MyISAM;
mysql> CREATE TABLE tablea (columna int);
При репликации переменная default_storage_engine будет проигнорирована, и оператор CREATE
TABLE выполнится на реплике с использованием движка по умолчанию реплики.
© 2025 Oracle
Licensed under the GPLv2 License.