19.4.4 Использование репликации с разными движками хранения источника и реплики
Для процесса репликации не имеет значения, используют ли исходная таблица на источнике и реплицированная таблица на реплике разные типы движков хранения. Фактически, системная переменная default_storage_engine не реплицируется.
Это предоставляет ряд преимуществ в процессе репликации, позволяя использовать разные типы движков для разных сценариев репликации. Например, в типичном сценарии масштабирования (см. Раздел 19.4.5 «Использование репликации для масштабирования»), вы хотите использовать InnoDB таблицы на источнике, чтобы воспользоваться транзакционными возможностями, но использовать MyISAM на репликах, где поддержка транзакций не требуется, так как данные только читаются. При использовании репликации в среде ведения журнала данных вы можете использовать движок хранения Archive на реплике.
Настройка разных движков на источнике и реплике зависит от того, как вы настраиваете начальный процесс репликации:
-
Если вы использовали mysqldump для создания моментальной копии базы данных на вашем источнике, вы можете отредактировать текстовый файл дампа, чтобы изменить тип движка, используемого для каждой таблицы.
Другой альтернативой для mysqldump является отключение типов движков, которые вы не хотите использовать на реплике, прежде чем использовать дамп для построения данных на реплике. Например, вы можете добавить опцию
--skip-federatedна вашей реплике, чтобы отключить движокFEDERATED. Если конкретный движок не существует для таблицы, которая должна быть создана, MySQL использует тип движка по умолчанию, обычноInnoDB. (Это требует, чтобы режим SQLNO_ENGINE_SUBSTITUTIONне был включён). Если вы хотите отключить дополнительные движки таким образом, вы можете рассмотреть создание специальной двоичной программы для использования на реплике, которая поддерживает только нужные вам движки. Если вы используете исходные файлы данных (двоичную резервную копию) для настройки реплики, изменить начальный формат таблицы невозможно. Вместо этого используйте
ALTER TABLE, чтобы изменить типы таблиц после запуска реплики.При настройке новой репликации источника/реплики, где на источнике нет таблиц, избегайте указания типа движка при создании новых таблиц.
Если вы уже используете решение репликации и хотите преобразовать существующие таблицы в другой тип движка, выполните следующие действия:
-
Остановить реплику от выполнения обновлений репликации:
mysql>
STOP REPLICA;Это позволяет изменить типы движков без перерыва.
Выполните
ALTER TABLE ... ENGINE='для каждой таблицы, которую нужно изменить.engine_type'-
Запустите процесс репликации снова:
mysql>
START REPLICA;
Хотя переменная default_storage_engine не реплицируется, помните, что команды CREATE
TABLE и ALTER TABLE, включающие указание движка, реплицируются на реплику правильно. Если в случае таблицы CSV вы выполните эту команду:
mysql> ALTER TABLE csvtable ENGINE='MyISAM';
Эта команда реплицируется; тип движка таблицы на реплике преобразуется в InnoDB, даже если вы ранее изменили тип таблицы на реплике на движок, отличный от 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.