19.1.6.3 Параметры и переменные сервера реплики
В этом разделе описаны параметры сервера и системные переменные, применяемые к серверам реплики, и содержится следующее:
Укажите параметры либо в командной строке, либо в файле параметров. Многие параметры можно задать во время работы сервера, используя оператор CHANGE REPLICATION SOURCE TO. Значения системных переменных указываются с помощью SET.
Идентификатор сервера. На исходном сервере и каждой реплике необходимо установить системную переменную server_id для определения уникального идентификатора репликации в диапазоне от 1 до 232 − 1. “Уникальность” означает, что каждый идентификатор должен отличаться от всех других идентификаторов, используемых другими исходными серверами или репликами в топологии репликации. Пример файла my.cnf:
[mysqld]
server-id=3
Параметры запуска для серверов реплики
В этом разделе описаны параметры запуска для управления серверами реплики. Многие из этих параметров можно задать во время работы сервера, используя оператор CHANGE REPLICATION
SOURCE TO. Другие параметры, такие как параметры --replicate-*, можно задать только при запуске сервера реплики. Системные переменные, связанные с репликацией, будут описаны позже в этом разделе.
-
Формат командной строки --master-retry-count=#Устаревший Да Тип Целое число Значение по умолчанию 10Минимальное значение 0Максимальное значение (64-разрядные платформы) 18446744073709551615Максимальное значение (32-разрядные платформы) 4294967295Этот параметр устарел; ожидается его удаление в будущих выпусках MySQL. Вместо этого используйте параметр
SOURCE_RETRY_COUNTоператораCHANGE REPLICATION SOURCE TO. -
Формат командной строки --max-relay-log-size=#Системная переменная max_relay_log_sizeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 1073741824Единица измерения байты Размер блока 4096Размер, при котором сервер автоматически переключает файлы журнала репликации. Если это значение отличное от нуля, журнал репликации переключается автоматически, когда его размер превышает это значение. Если это значение равно нулю (по умолчанию), размер, при котором происходит переключение журнала репликации, определяется значением
max_binlog_size. Дополнительную информацию см. в разделе 19.2.4.1, «Журнал репликации». -
Формат командной строки --relay-log-purge[={OFF|ON}]Системная переменная relay_log_purgeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию ONОтключить или включить автоматическое очищение журналов репликации, как только они больше не нужны. Значение по умолчанию равно 1 (включено). Это глобальная переменная, которую можно изменить динамически с помощью
SET GLOBAL relay_log_purge =. Отключение очистки журналов репликации при включении параметраN--relay-log-recoveryсоздает риск несоответствия данных и поэтому не является безопасным при сбоях. -
Формат командной строки --relay-log-space-limit=#Системная переменная relay_log_space_limitОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 18446744073709551615Единица измерения байты Этот параметр устанавливает максимальный предел размера всех журналов репликации на реплике в байтах. Значение 0 означает “без ограничения”. Это полезно для сервера реплики с ограниченным дисковым пространством. Когда лимит достигнут, поток ввода-вывода (приемник) прекращает чтение событий журнала двоичных логов с исходного сервера до тех пор, пока поток SQL не догонит и не удалит некоторые неиспользуемые журналы репликации. Обратите внимание, что этот лимит не является абсолютным: существуют случаи, когда потоку SQL (применительно) нужны дополнительные события, прежде чем он сможет удалить журналы репликации. В этом случае поток приемник превышает лимит, пока потоку применительно не станет возможным удалить некоторые журналы репликации, поскольку это не приведет к тупиковой ситуации. Не следует устанавливать
--relay-log-space-limitниже чем в два раза больше значения--max-relay-log-size(или--max-binlog-size, если--max-relay-log-sizeравно 0). В этом случае есть вероятность, что поток приемник будет ожидать освобождения места, поскольку--relay-log-space-limitпревышен, но поток применительно не имеет журнала репликации для очистки и не может удовлетворить поток приемник. Это заставляет поток приемник временно игнорировать--relay-log-space-limit.
-
Формат командной строки --replicate-do-db=nameТип Строка Создаёт фильтр репликации, используя имя базы данных. Такие фильтры также можно создать с помощью
CHANGE REPLICATION FILTER REPLICATE_DO_DB.Этот параметр поддерживает фильтры репликации, специфичные для канала, что позволяет многоисточниковым репликам использовать конкретные фильтры для разных источников. Для настройки фильтра репликации, специфичного для канала, с именем
channel_1, используйте--replicate-do-db:. В этом случае первая двоеточие интерпретируется как разделитель, а последующие двоеточия являются буквальными двоеточиями. Дополнительную информацию см. в Разделе 19.2.5.4, «Фильтры репликации на основе каналов».channel_1:db_nameПримечаниеГлобальные фильтры репликации не могут использоваться на экземпляре сервера MySQL, настроенном для репликации группы, поскольку фильтрация транзакций на некоторых серверах сделает группу неспособной достичь соглашения о согласованном состоянии. Фильтры репликации, специфичные для канала, могут использоваться на каналах репликации, которые не участвуют непосредственно в репликации группы, например, когда член группы также выступает в качестве реплики для источника, который находится за пределами группы. Они не могут использоваться на каналах
group_replication_applierилиgroup_replication_recovery.Точное действие этого фильтра репликации зависит от того, используется ли репликация на основе инструкций или на основе строк.
Репликация на основе инструкций. Сообщите потоку репликации SQL, чтобы ограничить репликацию инструкциями, где базой данных по умолчанию (то есть, той, которая выбрана с помощью
USE) являетсяdb_name. Для указания более одной базы данных используйте этот параметр несколько раз, по одному для каждой базы данных; однако, это не копирует инструкции, пересекающие базы данных, такие какUPDATE, в то время как выбрана другая база данных (или нет).some_db.some_tableSET foo='bar'ПредупреждениеДля указания нескольких баз данных вы обязаны использовать несколько экземпляров этого параметра. Поскольку имена баз данных могут содержать запятые, если вы предоставите список, разделённый запятыми, то этот список будет рассматриваться как имя одной базы данных.
Пример того, что не работает так, как вы ожидаете, при использовании репликации на основе инструкций: Если реплика запускается с
--replicate-do-db=sales, и вы выполняете следующие инструкции на источнике, инструкцияUPDATEне будет реплицирована:USE prices; UPDATE sales.january SET amount=amount+1000;
Основная причина такого поведения “проверять только базу данных по умолчанию” заключается в том, что по одной инструкции трудно определить, следует ли её реплицировать (например, если вы используете инструкции
DELETEилиUPDATEдля нескольких таблиц, действующие по нескольким базам данных). Также быстрее проверять только базу данных по умолчанию, чем все базы данных, если нет необходимости.Репликация на основе строк. Сообщает потоку репликации SQL ограничить репликацию базой данных
db_name. Изменяются только таблицы, принадлежащиеdb_name; текущая база данных не влияет на это. Предположим, что реплика запущена с--replicate-do-db=sales, и репликация на основе строк активна, а затем на источнике выполняются следующие инструкции:USE prices; UPDATE sales.february SET amount=amount+100;
Таблица
februaryв базе данныхsalesна реплике изменяется в соответствии с инструкциейUPDATE; это происходит независимо от того, была ли выполнена инструкцияUSE. Однако выполнение следующих инструкций на источнике не влияет на реплику при использовании репликации на основе строк и--replicate-do-db=sales:USE prices; UPDATE prices.march SET amount=amount-25;
Даже если бы инструкция
USE pricesбыла изменена наUSE sales, результаты выполнения инструкцииUPDATEпо-прежнему не реплицировались бы.Ещё одно важное отличие в обработке
--replicate-do-dbпри репликации на основе инструкций по сравнению с репликацией на основе строк заключается в отношении инструкций, которые ссылаются на несколько баз данных. Предположим, что реплика запускается с--replicate-do-db=db1, и на источнике выполняются следующие инструкции:USE db1; UPDATE db1.table1, db2.table2 SET db1.table1.col1 = 10, db2.table2.col2 = 20;
Если вы используете репликацию на основе инструкций, то обе таблицы обновляются на реплике. Однако при использовании репликации на основе строк затронута только
table1на реплике; посколькуtable2находится в другой базе данных,table2на реплике не изменяется инструкциейUPDATE. Теперь предположим, что вместо инструкцииUSE db1была использована инструкцияUSE db4:USE db4; UPDATE db1.table1, db2.table2 SET db1.table1.col1 = 10, db2.table2.col2 = 20;
В этом случае инструкция
UPDATEне окажет никакого действия на реплику при использовании репликации на основе инструкций. Однако если вы используете репликацию на основе строк, инструкцияUPDATEизменитtable1на реплике, но неtable2— другими словами, изменяются только таблицы в базе данных, указанной--replicate-do-db, а выбор базы данных по умолчанию не влияет на это поведение.Если вам нужно, чтобы обновления между базами данных работали, используйте
--replicate-wild-do-table=. См. Раздел 19.2.5, «Как серверы оценивают правила фильтрации репликации».db_name.%ПримечаниеЭтот параметр влияет на репликацию таким же образом, как
--binlog-do-dbвлияет на двоичное протоколирование, и влияние формата репликации на то, как--replicate-do-dbвлияет на поведение репликации, такое же, как влияние формата протоколирования на поведение--binlog-do-db.Этот параметр не влияет на инструкции
BEGIN,COMMITилиROLLBACK.
-
Формат командной строки --replicate-ignore-db=nameТип Строка Создаёт фильтр репликации, используя имя базы данных. Такие фильтры также можно создать, используя
CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB.Этот параметр поддерживает фильтры репликации, специфичные для канала, что позволяет многоисточниковым репликам использовать специфические фильтры для различных источников. Чтобы настроить фильтр репликации, специфичный для канала, в канале с именем
channel_1, используйте--replicate-ignore-db:. В этом случае первая двоеточие интерпретируется как разделитель, а последующие двоеточия — как литеральные двоеточия. Дополнительную информацию см. в разделе 19.2.5.4 «Фильтры репликации, основанные на каналах».channel_1:db_nameПримечаниеГлобальные фильтры репликации не могут быть использованы на экземпляре сервера MySQL, настроенном для Group Replication, так как фильтрация транзакций на некоторых серверах может привести к тому, что группа не сможет достичь соглашения о согласованном состоянии. Фильтры репликации, специфичные для канала, могут использоваться в каналах репликации, которые не участвуют непосредственно в Group Replication, например, когда член группы также выступает в качестве реплики для источника, находящегося за пределами группы. Они не могут быть использованы в каналах
group_replication_applierилиgroup_replication_recovery.Чтобы указать более одной базы данных для игнорирования, используйте этот параметр несколько раз, по одному для каждой базы данных. Так как имена баз данных могут содержать запятые, если вы укажете список, разделённый запятыми, он будет рассматриваться как имя одной базы данных.
Как и
--replicate-do-db, точное действие этого фильтра зависит от того, используется ли репликация на основе инструкций или на основе строк, и описано в следующих нескольких абзацах.Репликация на основе инструкций. Указывает потоку SQL репликации не реплицировать ни одну инструкцию, где базой данных по умолчанию (т. е. той, которая выбрана с помощью
USE) являетсяdb_name.Репликация на основе строк. Указывает потоку SQL репликации не обновлять ни одну таблицу в базе данных
db_name. База данных по умолчанию не имеет значения.При использовании репликации на основе инструкций следующий пример может не работать так, как вы ожидаете. Предположим, что реплика запущена с
--replicate-ignore-db=sales, и вы выполняете следующие инструкции на источнике:USE prices; UPDATE sales.january SET amount=amount+1000;
Инструкция
UPDATEреплицируется в таком случае, так как--replicate-ignore-dbприменяется только к базе данных по умолчанию (определяемой инструкциейUSE). Поскольку база данныхsalesбыла указана явно в инструкции, инструкция не отфильтрована. Однако при использовании репликации на основе строк результаты инструкцииUPDATEне распространяются на реплику, и копия реплики таблицыsales.januaryостаётся неизменной. В этом случае,--replicate-ignore-db=salesприводит к тому, что все изменения, внесённые в таблицы в копии базы данныхsalesисточника, игнорируются репликой.Не следует использовать этот параметр, если вы используете межбазовую операцию обновления и не хотите, чтобы эти обновления реплицировались. См. раздел 19.2.5 «Как сервера оценивают правила фильтрации репликации».
Если вам нужно, чтобы межбазовые обновления работали, используйте
--replicate-wild-ignore-table=вместо этого. См. раздел 19.2.5 «Как сервера оценивают правила фильтрации репликации».db_name.%ПримечаниеЭтот параметр влияет на репликацию таким же образом, как
--binlog-ignore-dbвлияет на логирование бинарных данных, а влияние формата репликации на то, как--replicate-ignore-dbвлияет на поведение репликации, аналогично влиянию формата логирования на поведение--binlog-ignore-db.Этот параметр не влияет на инструкции
BEGIN,COMMITилиROLLBACK. -
--replicate-do-table=db_name.tbl_nameФормат командной строки --replicate-do-table=nameТип Строка Создаёт фильтр репликации, указывая потоку SQL репликации ограничить репликацию заданной таблицей. Чтобы указать более одной таблицы, используйте этот параметр несколько раз, по одному для каждой таблицы. Это работает как для межбазовых, так и для обновлений в базе данных по умолчанию, в отличие от
--replicate-do-db. См. раздел 19.2.5 «Как сервера оценивают правила фильтрации репликации». Вы также можете создать такой фильтр, выполнив инструкциюCHANGE REPLICATION FILTER REPLICATE_DO_TABLE.Этот параметр поддерживает фильтры репликации, специфичные для канала, что позволяет многоисточниковым репликам использовать специфические фильтры для различных источников. Чтобы настроить фильтр репликации, специфичный для канала, в канале с именем
channel_1, используйте--replicate-do-table:. В этом случае первая двоеточие интерпретируется как разделитель, а последующие двоеточия — как литеральные двоеточия. Дополнительную информацию см. в разделе 19.2.5.4 «Фильтры репликации, основанные на каналах».channel_1:db_name.tbl_nameПримечаниеГлобальные фильтры репликации не могут быть использованы на экземпляре сервера MySQL, настроенном для Group Replication, так как фильтрация транзакций на некоторых серверах может привести к тому, что группа не сможет достичь соглашения о согласованном состоянии. Фильтры репликации, специфичные для канала, могут использоваться в каналах репликации, которые не участвуют непосредственно в Group Replication, например, когда член группы также выступает в качестве реплики для источника, находящегося за пределами группы. Они не могут быть использованы в каналах
group_replication_applierилиgroup_replication_recovery.Этот параметр затрагивает только инструкции, относящиеся к таблицам. Он не влияет на инструкции, которые относятся только к другим объектам базы данных, таким как хранимые процедуры. Для фильтрации инструкций, выполняемых над хранимыми процедурами, используйте один или несколько параметров
--replicate-*-db.
-
--replicate-ignore-table=db_name.tbl_nameФормат командной строки --replicate-ignore-table=nameТип Строка Создаёт фильтр репликации, запрещая реплицирование SQL-потоку репликации любых заявлений, обновляющих указанную таблицу, даже если те же самые заявления обновляют и другие таблицы. Чтобы задать игнорирование нескольких таблиц, используйте этот параметр несколько раз, по одному разу для каждой таблицы. Это работает для межбазовых обновлений в отличие от
--replicate-ignore-db. См. Раздел 19.2.5, «Как серверы оценивают правила фильтрации репликации». Вы также можете создать такой фильтр, выполнив операторCHANGE REPLICATION FILTER REPLICATE_IGNORE_TABLE.Этот параметр поддерживает канальные специфические фильтры репликации, позволяя репликам с несколькими источниками использовать специфические фильтры для разных источников. Чтобы настроить канальный специфический фильтр репликации для канала с именем
channel_1, используйте--replicate-ignore-table:. В этом случае первая двоеточие интерпретируется как разделитель, а последующие двоеточия — как буквальные двоеточия. См. Раздел 19.2.5.4, «Фильтры репликации на основе каналов» для получения дополнительной информации.channel_1:db_name.tbl_nameПримечаниеГлобальные фильтры репликации не могут использоваться на экземпляре сервера MySQL, настроенном для Group Replication, так как фильтрация транзакций на некоторых серверах сделает группу неспособной достичь соглашения о согласованном состоянии. Канально-специфические фильтры репликации могут использоваться в каналах репликации, которые не участвуют непосредственно в Group Replication, например, когда член группы также выступает в качестве реплики для источника, находящегося вне группы. Они не могут использоваться в каналах
group_replication_applierилиgroup_replication_recovery.Этот параметр влияет только на заявления, относящиеся к таблицам. Он не влияет на заявления, относящиеся только к другим объектам базы данных, таким как хранимые процедуры. Для фильтрации заявлений, работающих с хранимыми процедурами, используйте один или несколько параметров
--replicate-*-db. -
--replicate-rewrite-db=from_name->to_nameФормат командной строки --replicate-rewrite-db=old_name->new_nameТип Строка Указывает реплике создать фильтр репликации, который переводит указанную базу данных в
to_name, если она былаfrom_nameна источнике. Затронуты только заявления, связанные с таблицами, а не заявления, такие какCREATE DATABASE,DROP DATABASEиALTER DATABASE.Для задания нескольких переписываний используйте этот параметр несколько раз. Сервер использует первый с значением
from_name, которое соответствует. Перевод имени базы данных выполняется перед проверкой правил--replicate-*. Вы также можете создать такой фильтр, выполнив операторCHANGE REPLICATION FILTER REPLICATE_REWRITE_DB.Если вы используете параметр
--replicate-rewrite-dbв командной строке, а символ>является специальным для вашего интерпретатора команд, укажите значение параметра в кавычках. Например:$>
mysqld --replicate-rewrite-db="olddb->newdb"Эффект параметра
--replicate-rewrite-dbзависит от того, используется ли для запроса формат двоичного лога на основе операторов или на основе строк. С форматом на основе операторов DML-заявления переводятся на основе текущей базы данных, как указано операторомUSE. С форматом на основе строк DML-заявления переводятся на основе базы данных, в которой существует изменённая таблица. DDL-заявления всегда фильтруются по текущей базе данных, как указано операторомUSE, независимо от формата двоичного лога.Чтобы гарантировать, что переписывание даёт ожидаемые результаты, особенно в сочетании с другими параметрами фильтрации репликации, следуйте этим рекомендациям при использовании параметра
--replicate-rewrite-db:Создайте базы данных
from_nameиto_nameвручную на источнике и реплике с разными именами.Если вы используете формат двоичного лога на основе операторов или смешанный, не используйте межбазовые запросы и не указывайте имена баз данных в запросах. Для DDL и DML-заявлений полагайтесь на оператор
USEдля указания текущей базы данных и используйте только имя таблицы в запросах.Если вы используете исключительно формат двоичного лога на основе строк, для DDL-заявлений полагайтесь на оператор
USEдля указания текущей базы данных и используйте только имя таблицы в запросах. Для DML-заявлений вы можете использовать полное имя таблицы (db.table), если хотите.
Если эти рекомендации соблюдены, безопасно использовать параметр
--replicate-rewrite-dbв сочетании с параметрами фильтрации репликации на уровне таблиц, такими как--replicate-do-table.Этот параметр поддерживает канально-специфические фильтры репликации, позволяя репликам с несколькими источниками использовать специфические фильтры для разных источников. Укажите имя канала, за которым следует двоеточие, за которым следует описание фильтра. Первое двоеточие интерпретируется как разделитель, а все последующие двоеточия — как буквальные двоеточия. Например, чтобы настроить канально-специфический фильтр репликации для канала с именем
channel_1, используйте:$>
mysqld --replicate-rewrite-db=channel_1:db_name1->db_name2Если вы используете двоеточие, но не указываете имя канала, параметр настраивает фильтр репликации для канала репликации по умолчанию. См. Раздел 19.2.5.4, «Фильтры репликации на основе каналов» для получения дополнительной информации.
ПримечаниеГлобальные фильтры репликации не могут использоваться на экземпляре сервера MySQL, настроенном для Group Replication, так как фильтрация транзакций на некоторых серверах сделает группу неспособной достичь соглашения о согласованном состоянии. Канально-специфические фильтры репликации могут использоваться в каналах репликации, которые не участвуют непосредственно в Group Replication, например, когда член группы также выступает в качестве реплики для источника, находящегося вне группы. Они не могут использоваться в каналах
group_replication_applierилиgroup_replication_recovery. -
Формат командной строки --replicate-same-server-id[={OFF|ON}]Тип Булево Значение по умолчанию OFFЭтот параметр предназначен для использования на репликах. Значение по умолчанию 0 (
FALSE). При установке параметра в 1 (TRUE) реплика не пропускает события, имеющие собственный идентификатор сервера. Это значение обычно полезно только в редких конфигурациях.Когда включено двоичное протоколирование на реплике, сочетание параметров
--replicate-same-server-idи--log-replica-updatesна реплике может привести к бесконечным циклам в репликации, если сервер является частью циклической топологии репликации. (В MySQL 9.2 двоичное протоколирование включено по умолчанию, а протоколирование обновлений реплики — по умолчанию при включённом двоичном протоколировании). Однако использование глобальных идентификаторов транзакций (GTID) предотвращает эту ситуацию, пропуская выполнение транзакций, которые уже были применены. Если параметрgtid_mode=ONустановлен на реплике, вы можете запустить сервер с этим сочетанием параметров, но вы не можете изменить любой другой режим GTID во время работы сервера. Если установлен любой другой режим GTID, сервер не запускается с этим сочетанием параметров.По умолчанию поток репликации I/O (приёмник) не записывает события двоичного лога в релейный журнал, если они имеют идентификатор сервера реплики (эта оптимизация помогает экономить дисковое пространство). Если вы хотите использовать
--replicate-same-server-id, убедитесь, что вы запустили реплику с этим параметром перед тем, как заставить реплику прочитать собственные события, которые вы хотите, чтобы поток репликации SQL (применитель) выполнил.
-
--replicate-wild-do-table=db_name.tbl_nameФормат командной строки --replicate-wild-do-table=nameТип Строка Создаёт фильтр репликации, указывая потоку SQL-репликации (приёмнику) ограничить репликацию операциями, где любая из обновляемых таблиц соответствует заданным шаблонам имени базы данных и таблицы. Шаблоны могут содержать символы подстановки
%и_, которые имеют такое же значение, как и для оператора сопоставления шаблоновLIKE. Для указания более одной таблицы используйте этот параметр несколько раз, по одному для каждой таблицы. Это работает для межбазовых обновлений. См. Раздел 19.2.5, «Как серверы оценивают правила фильтрации репликации». Вы также можете создать такой фильтр, выполнив операторCHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE.Этот параметр поддерживает канальные фильтры репликации, позволяя репликам с несколькими источниками использовать специфические фильтры для разных источников. Для настройки канального фильтра репликации на канале с именем
channel_1используйте--replicate-wild-do-table:. В этом случае первая двоеточие интерпретируется как разделитель, а последующие двоеточия — как буквальные двоеточия. Подробнее см. Раздел 19.2.5.4, «Фильтры репликации на основе каналов».channel_1:db_name.tbl_nameВажноГлобальные фильтры репликации не могут использоваться на экземпляре сервера MySQL, настроенном для Group Replication, так как фильтрация транзакций на некоторых серверах сделает группу неспособной достичь согласия по согласованному состоянию. Канальные фильтры репликации могут использоваться на каналах репликации, которые не участвуют непосредственно в Group Replication, например, когда член группы также выступает в роли реплики для источника, находящегося вне группы. Они не могут использоваться на каналах
group_replication_applierилиgroup_replication_recovery.Фильтр репликации, заданный параметром
--replicate-wild-do-table, применяется к таблицам, представлениям и триггерам. Он не применяется к хранимым процедурам, функциям или событиям. Для фильтрации операций, выполняемых над последними объектами, используйте один или несколько параметров--replicate-*-db.Например,
--replicate-wild-do-table=foo%.bar%реплицирует только обновления, использующие таблицу, где имя базы данных начинается сfoo, а имя таблицы — сbar.Если шаблон имени таблицы —
%, он соответствует любому имени таблицы, и этот параметр также применяется к операциям на уровне базы данных (CREATE DATABASE,DROP DATABASEиALTER DATABASE). Например, если используется--replicate-wild-do-table=foo%.%, операции на уровне базы данных реплицируются, если имя базы данных соответствует шаблонуfoo%.ВажноФильтры репликации на уровне таблиц применяются только к таблицам, которые явно упоминаются и используются в запросе. Они не применяются к таблицам, которые неявно обновляются запросом. Например, оператор
GRANT, который обновляет системную таблицуmysql.user, но не упоминает эту таблицу, не затрагивается фильтром, в которомmysql.%указан как шаблон подстановки.Чтобы включить буквальные символы подстановки в шаблоны имени базы данных или таблицы, экранируйте их обратным слэшем. Например, чтобы реплицировать все таблицы базы данных с именем
my_own%db, но не реплицировать таблицы из базы данныхmy1ownAABCdb, необходимо экранировать символы_и%следующим образом:--replicate-wild-do-table=my\_own\%db. При использовании параметра в командной строке вам может потребоваться удвоить обратные слэши или заключить значение параметра в кавычки, в зависимости от вашего интерпретатора команд. Например, в оболочке bash необходимо ввести--replicate-wild-do-table=my\\_own\\%db. -
--replicate-wild-ignore-table=db_name.tbl_nameФормат командной строки --replicate-wild-ignore-table=nameТип Строка Создаёт фильтр репликации, предотвращающий репликацию SQL-потоком оператора, в котором любая таблица соответствует заданному шаблону. Для указания более одной таблицы для игнорирования используйте этот параметр несколько раз, по одному для каждой таблицы. Это работает для межбазовых обновлений. См. Раздел 19.2.5, «Как серверы оценивают правила фильтрации репликации». Вы также можете создать такой фильтр, выполнив оператор
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE.Этот параметр поддерживает канальные фильтры репликации, позволяя репликам с несколькими источниками использовать специфические фильтры для разных источников. Для настройки канального фильтра репликации на канале с именем
channel_1используйте--replicate-wild-ignore:. В этом случае первая двоеточие интерпретируется как разделитель, а последующие двоеточия — как буквальные двоеточия. Подробнее см. Раздел 19.2.5.4, «Фильтры репликации на основе каналов».channel_1:db_name.tbl_nameВажноГлобальные фильтры репликации не могут использоваться на экземпляре сервера MySQL, настроенном для Group Replication, так как фильтрация транзакций на некоторых серверах сделает группу неспособной достичь согласия по согласованному состоянию. Канальные фильтры репликации могут использоваться на каналах репликации, которые не участвуют непосредственно в Group Replication, например, когда член группы также выступает в роли реплики для источника, находящегося вне группы. Они не могут использоваться на каналах
group_replication_applierилиgroup_replication_recovery.Например,
--replicate-wild-ignore-table=foo%.bar%не реплицирует обновления, использующие таблицу, где имя базы данных начинается сfoo, а имя таблицы — сbar. Сведения о том, как работает сопоставление, см. в описании параметра--replicate-wild-do-table. Правила включения буквальных символов подстановки в значение параметра такие же, как и для--replicate-wild-ignore-table.ВажноФильтры репликации на уровне таблиц применяются только к таблицам, которые явно упоминаются и используются в запросе. Они не применяются к таблицам, которые неявно обновляются запросом. Например, оператор
GRANT, который обновляет системную таблицуmysql.user, но не упоминает эту таблицу, не затрагивается фильтром, в которомmysql.%указан как шаблон подстановки.Если требуется отфильтровать операторы
GRANTили другие административные операторы, возможным решением является использование фильтра--replicate-ignore-db. Этот фильтр действует на базу данных по умолчанию, установленную в настоящее время с помощью оператораUSE. Таким образом, можно создать фильтр для игнорирования операций для базы данных, которая не реплицируется, а затем выполнить операторUSE, чтобы сразу переключить базу данных по умолчанию на эту базу перед выполнением любых административных операций, которые нужно игнорировать. В административной операции укажите фактическую базу данных, где применяется операция.Например, если
--replicate-ignore-db=nonreplicatedнастроен на сервере реплики, следующая последовательность операторов приводит к тому, что операторGRANTигнорируется, потому что в действии находится база данных по умолчаниюnonreplicated:USE nonreplicated; GRANT SELECT, INSERT ON replicated.t1 TO 'someuser'@'somehost';
-
Формат командной строки --skip-replica-start[={OFF|ON}]Системная переменная skip_replica_startОбласть Глобальная Динамическая Нет SET_VARПрименимо ли подсказкаНет Тип Булево Значение по умолчанию OFF--skip-replica-startуказывает серверу репликации не запускать потоки ввода-вывода репликации (приемник) и SQL (применитель) при запуске сервера. Чтобы запустить потоки позже, используйте операторSTART REPLICA.Вы можете использовать системную переменную
skip_replica_startвместо параметра командной строки, чтобы получить доступ к этой функции с помощью структуры привилегий MySQL Server, чтобы администраторам баз данных не требовался какой-либо доступ с привилегиями к операционной системе. -
Формат командной строки --skip-slave-start[={OFF|ON}]Устаревший Да Системная переменная skip_slave_startОбласть Глобальная Динамическая Нет SET_VARПрименимо ли подсказкаНет Тип Булево Значение по умолчанию OFFУстаревшее псевдоним для
--skip-replica-start. -
--slave-skip-errors=[err_code1,err_code2,...|all|ddl_exist_errors]Формат командной строки --slave-skip-errors=nameУстаревший Да Системная переменная slave_skip_errorsОбласть Глобальная Динамическая Нет SET_VARПрименимо ли подсказкаНет Тип Строка Значение по умолчанию OFFДопустимые значения OFF[list of error codes]allddl_exist_errorsУстаревший синоним для
--replica-skip-errors. -
--slave-sql-verify-checksum={0|1}Формат командной строки --slave-sql-verify-checksum[={OFF|ON}]Тип Булево Значение по умолчанию ONУстаревший синоним для
--replica-sql-verify-checksum
Системные переменные, используемые на серверах реплики
В следующем списке описываются системные переменные для управления серверами реплики. Их можно задать при запуске сервера, а некоторые из них можно изменить во время работы, используя SET. Параметры сервера, используемые с репликами, перечислены ранее в этом разделе.
-
Формат командной строки --init-replica=nameСистемная переменная init_replicaОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Строка init_replicaпохож наinit_connect, но представляет собой строку, которая выполняется сервером реплики каждый раз при запуске потока SQL репликации. Формат строки такой же, как для переменнойinit_connect. Настройка этой переменной вступает в силу для последующих инструкцийSTART REPLICA.ПримечаниеПоток SQL репликации отправляет подтверждение клиенту перед выполнением
init_replica. Поэтому не гарантируется, чтоinit_replicaбудет выполнен, когда возвращаетсяSTART REPLICA. Дополнительную информацию см. в разделе 15.4.2.4, «Инструкция START REPLICA». -
Формат командной строки --init-slave=nameУстарело Да Системная переменная init_slaveОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Строка Устаревшее псевдоним для
init_replica. -
Формат командной строки --log-slow-replica-statements[={OFF|ON}]Системная переменная log_slow_replica_statementsОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFFПри включенном журнале медленных запросов
log_slow_replica_statementsвключает ведение журнала для запросов, выполнение которых заняло болееlong_query_timeсекунд на сервере реплики. Обратите внимание, что если используется репликация на основе строк (binlog_format=ROW),log_slow_replica_statementsне имеет эффекта. Запросы добавляются в журнал медленных запросов реплики только тогда, когда они регистрируются в формате оператора в двоичном журнале, то есть когдаbinlog_format=STATEMENTустановлено или когдаbinlog_format=MIXEDустановлено, и оператор регистрируется в формате оператора. Медленные запросы, которые регистрируются в формате строк, когдаbinlog_format=MIXEDустановлено или которые регистрируются, когдаbinlog_format=ROWустановлено, не добавляются в журнал медленных запросов реплики, даже еслиlog_slow_replica_statementsвключено.Установка
log_slow_replica_statementsне имеет немедленного эффекта. Состояние переменной применяется ко всем последующим операциямSTART REPLICA. Также обратите внимание, что глобальная настройка дляlong_query_timeприменяется на протяжении всего времени существования потока SQL. Если вы измените эту настройку, необходимо остановить и перезапустить поток SQL репликации, чтобы внести изменения (например, выполнив инструкцииSTOP REPLICAиSTART REPLICAс опциейSQL_THREAD). -
Формат командной строки --log-slow-slave-statements[={OFF|ON}]Устарело Да Системная переменная log_slow_slave_statementsОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFFУстаревшее псевдоним для
log_slow_replica_statements. -
Формат командной строки --max-relay-log-size=#Системная переменная max_relay_log_sizeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое Значение по умолчанию 0Минимальное значение 0Максимальное значение 1073741824Единица измерения байты Размер блока 4096Если запись реплики в ее журнал пересылок приводит к превышению текущего размера файла журнала, реплика вращает журналы пересылок (закрывает текущий файл и открывает следующий). Если
max_relay_log_sizeравно 0, сервер используетmax_binlog_sizeкак для двоичного журнала, так и для журнала пересылок. Еслиmax_relay_log_sizeбольше 0, он ограничивает размер журнала пересылок, что позволяет задавать разные размеры для двух журналов. Вы должны установитьmax_relay_log_sizeв диапазоне от 4096 байт до 1 ГБ (включительно) или 0. Значение по умолчанию — 0. См. раздел 19.2.3, «Потоки репликации».
-
Формат командной строки --relay-log=file_nameСистемная переменная relay_logОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Имя файла Базовое имя файлов журнала репликации. Для канала репликации по умолчанию базовое имя журнала репликации по умолчанию —
. Для каналов репликации, отличных от канала по умолчанию, базовое имя журнала репликации по умолчанию —host_name-relay-bin, гдеhost_name-relay-bin-channelchannel— имя канала репликации, записанного в этом журнале репликации.Сервер записывает файл в директорию данных, если базовое имя не задано с абсолютным путем, чтобы указать другую директорию. Сервер создаёт файлы журнала репликации последовательно, добавляя числовой суффикс к базовому имени.
Журнал репликации и индекс журнала репликации на сервере репликации не могут иметь тех же имён, что и двоичный журнал и индекс двоичного журнала, имена которых задаются опциями
--log-binи--log-bin-index. Если базовое имя двоичного журнала и базовое имя журнала репликации совпадают, сервер выводит сообщение об ошибке и не запускается.Из-за способа, которым MySQL обрабатывает параметры сервера, если вы задаёте эту переменную при запуске сервера, вы должны указать значение; базовое имя по умолчанию используется только в том случае, если параметр фактически не указан. Если вы задаёте системную переменную
relay_logпри запуске сервера без указания значения, вероятно, возникнет неожиданное поведение; это поведение зависит от других используемых параметров, порядка их указания и того, указаны ли они в командной строке или в файле параметров. Более подробную информацию о том, как MySQL обрабатывает параметры сервера, см. в Разделе 6.2.2, «Указание параметров программы».Если вы задаёте эту переменную, заданное значение также используется в качестве базового имени для файла индекса журнала репликации. Вы можете переопределить это поведение, указав другое базовое имя файла индекса журнала репликации с помощью системной переменной
relay_log_index.Когда сервер считывает запись из файла индекса, он проверяет, содержит ли запись относительный путь. Если содержит, относительная часть пути заменяется абсолютным путем, установленным с помощью системной переменной
relay_log. Абсолютный путь остаётся неизменным; в этом случае индекс необходимо отредактировать вручную, чтобы использовать новые путь или пути.Системная переменная
relay_logможет быть полезна для выполнения следующих задач:Создание журналов репликации, имена которых независимы от имён хостов.
Если вам нужно поместить журналы репликации в область, отличную от каталога данных, потому что журналы репликации имеют тенденцию быть очень большими, и вы не хотите уменьшать
max_relay_log_size.Для увеличения скорости путём использования балансировки нагрузки между дисками.
Вы можете получить имя файла журнала репликации (и путь) из системной переменной
relay_log_basename. -
Системная переменная relay_log_basenameОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Имя файла Значение по умолчанию datadir + '/' + hostname + '-relay-bin'Содержит базовое имя и полный путь к файлу журнала репликации. Максимальная длина переменной — 256. Эта переменная устанавливается сервером и является только для чтения.
-
Формат командной строки --relay-log-index=file_nameСистемная переменная relay_log_indexОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Имя файла Значение по умолчанию *host_name*-relay-bin.indexИмя файла индекса журнала репликации. Максимальная длина переменной — 256. Если вы не задаёте эту переменную, но задаёте системную переменную
relay_log, её значение используется в качестве базового имени по умолчанию для файла индекса журнала репликации. Если также не задана переменнаяrelay_log, то для канала репликации по умолчанию имя по умолчанию —, используя имя машины-хоста. Для каналов репликации, отличных от канала по умолчанию, имя по умолчанию —host_name-relay-bin.index, гдеhost_name-relay-bin-channel.indexchannel— имя канала репликации, записанного в этом индексе журнала репликации.По умолчанию журналы репликации находятся в директории данных или в любой другой директории, указанной с помощью системной переменной
relay_log. Вы можете использовать системную переменнуюrelay_log_index, чтобы указать альтернативную директорию, добавив абсолютный путь к базовому имени, чтобы указать другую директорию.Журнал репликации и индекс журнала репликации на сервере репликации не могут иметь тех же имён, что и двоичный журнал и индекс двоичного журнала, имена которых задаются опциями
--log-binи--log-bin-index. Если базовое имя двоичного журнала и базовое имя журнала репликации совпадают, сервер выводит сообщение об ошибке и не запускается.Из-за способа, которым MySQL обрабатывает параметры сервера, если вы задаёте эту переменную при запуске сервера, вы должны указать значение; базовое имя по умолчанию используется только в том случае, если параметр фактически не указан. Если вы задаёте системную переменную
relay_log_indexпри запуске сервера без указания значения, вероятно, возникнет неожиданное поведение; это поведение зависит от других используемых параметров, порядка их указания и того, указаны ли они в командной строке или в файле параметров. Более подробную информацию о том, как MySQL обрабатывает параметры сервера, см. в Разделе 6.2.2, «Указание параметров программы». -
Формат командной строки --relay-log-purge[={OFF|ON}]Системная переменная relay_log_purgeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию ONОтключает или включает автоматическое удаление файлов журнала репликации, как только они больше не нужны. Значение по умолчанию — 1 (
ON).
-
Формат командной строки --relay-log-recovery[={OFF|ON}]Системная переменная relay_log_recoveryОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Boolean Значение по умолчанию OFFЕсли включена, эта переменная включает автоматическое восстановление журнала ретрансляции сразу после запуска сервера. Процесс восстановления создает новый файл журнала ретрансляции, устанавливает позицию потока SQL (применителя) в этот новый журнал ретрансляции и устанавливает позицию потока ввода-вывода (приемника) в позицию потока применителя. Затем продолжается чтение журнала ретрансляции из источника. Если
SOURCE_AUTO_POSITION=1был установлен для канала репликации с помощью оператораCHANGE REPLICATION SOURCE TO, используемая для запуска репликации исходная позиция может быть получена в соединении, а не назначена в этом процессе.Когда
relay_log_recoveryотключена, сервер очищает журнал ретрансляции при запуске, выполняя следующие действия:Удаление любых транзакций, которые остаются незавершенными в конце журнала
Удаление любого файла журнала ретрансляции, который содержит только части незавершенных транзакций
Удаление любой ссылки из файла индекса журнала ретрансляции на любой файл журнала ретрансляции, который был удален
При получении допустимой исходной позиции и имени исходного файла из журнала ретрансляции обновление позиции потока приемника до совпадения с этим файлом и позицией; в противном случае обновление позиции потока приемника до совпадения с позицией применителя
Эта глобальная переменная доступна только для чтения во время выполнения. Ее значение можно установить с помощью параметра
--relay-log-recoveryпри запуске сервера реплики, который следует использовать после неожиданной остановки реплики, чтобы гарантировать, что не будут обработаны потенциально поврежденные журналы ретрансляции, и который должен использоваться для обеспечения отказоустойчивой реплики. Значение по умолчанию равно 0 (отключено). Информацию о наиболее устойчивой к неожиданным остановкам комбинации параметров на реплике см. в Разделе 19.4.2, «Обработка неожиданной остановки реплики».Для многопоточной реплики (где
replica_parallel_workersбольше 0) установка--relay-log-recoveryпри запуске автоматически обрабатывает любые несоответствия и пробелы в последовательности транзакций, которые были выполнены из журнала ретрансляции. Эти пробелы могут возникнуть при использовании репликации на основе позиции файла. (Более подробную информацию см. в Разделе 19.5.1.35, «Репликация и несоответствия транзакций».) Процесс восстановления журнала ретрансляции обрабатывает пробелы тем же способом, что и операторSTART REPLICA UNTIL SQL_AFTER_MTS_GAPS. Когда реплика достигает согласованного состояния без пробелов, процесс восстановления журнала ретрансляции переходит к получению дальнейших транзакций из источника, начиная с позиции потока SQL (применителя). Когда используется репликация на основе GTID, многопоточная реплика сначала проверяет, установлено лиSOURCE_AUTO_POSITIONвON, и если это так, пропускает шаг вычисления транзакций, которые следует пропустить или не пропускать, чтобы старые журналы ретрансляции не требовались для процесса восстановления.ПримечаниеЭта переменная не влияет на следующие каналы групповой репликации:
group_replication_appliergroup_replication_recovery
Любые другие каналы, работающие в группе, затрагиваются, например, канал, который реплицируется из внешнего источника или другой группы.
-
Формат командной строки --relay-log-space-limit=#Системная переменная relay_log_space_limitОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 18446744073709551615Единица измерения байты Максимальный объем пространства для использования всеми журналами ретрансляции.
-
Формат командной строки --replica-checkpoint-group=#Системная переменная replica_checkpoint_groupОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 512Минимальное значение 32Максимальное значение 524280Размер блока 8replica_checkpoint_groupустанавливает максимальное количество транзакций, которые могут быть обработаны многопоточной репликой, прежде чем будет вызван операция контрольной точки для обновления ее состояния, как показано вSHOW REPLICA STATUS. Установка этой переменной не влияет на реплики, для которых многопоточность не включена. Установка этой переменной не оказывает немедленного эффекта. Состояние переменной применяется ко всем последующим операторамSTART REPLICA.Эта переменная работает в сочетании с системной переменной
replica_checkpoint_periodтаким образом, что когда превышен любой из лимитов, выполняется контрольная точка, и счетчики, отслеживающие как количество транзакций, так и время, прошедшее с момента последней контрольной точки, сбрасываются.Минимально допустимое значение для этой переменной равно 32, если только сервер не был собран с использованием
-DWITH_DEBUG, в этом случае минимальное значение равно 1. Эффективное значение всегда кратно 8; вы можете установить его на значение, которое не является таким кратным, но сервер округляет его до ближайшего меньшего кратного 8 перед сохранением значения. (Исключение: Такое округление не выполняется отладочным сервером.) Независимо от того, как был собран сервер, значение по умолчанию равно 512, а максимально допустимое значение равно 524280. -
Формат командной строки --replica-checkpoint-period=#Системная переменная replica_checkpoint_periodОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 300Минимальное значение 1Максимальное значение 4294967295Единица измерения миллисекунды replica_checkpoint_periodустанавливает максимальное время (в миллисекундах), которое может пройти до вызова операции контрольной точки для обновления состояния многопоточной реплики, как показано вSHOW REPLICA STATUS. Установка этой переменной не влияет на реплики, для которых многопоточность не включена. Установка этой переменной вступает в силу для всех каналов репликации немедленно, включая запущенные каналы.Эта переменная работает в сочетании с системной переменной
replica_checkpoint_groupтаким образом, что когда превышен любой из лимитов, выполняется контрольная точка, и счетчики, отслеживающие как количество транзакций, так и время, прошедшее с момента последней контрольной точки, сбрасываются.Минимально допустимое значение для этой переменной равно 1, если только сервер не был собран с использованием
-DWITH_DEBUG, в этом случае минимальное значение равно 0. Независимо от того, как был собран сервер, значение по умолчанию равно 300 миллисекундам, а максимально возможное значение составляет 4294967295 миллисекунд (приблизительно 49,7 дня).
-
Формат командной строки --replica-compressed-protocol[={OFF|ON}]Системная переменная replica_compressed_protocolОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFFreplica_compressed_protocolуказывает, следует ли использовать сжатие протокола подключения источника/реплики, если обе стороны (источник и реплика) его поддерживают. Если эта переменная отключена (по умолчанию), подключения не сжимаются. Изменения в этой переменной вступают в силу при последующих попытках подключения; это включает в себя выполнение оператораSTART REPLICA, а также повторные подключения, выполняемые активной репликацией I/O (приёмником).Сжатие транзакций журнала двоичных логов, включённое системной переменной
binlog_transaction_compression, также может использоваться для экономии пропускной способности. Если вы используете сжатие транзакций журнала двоичных логов в сочетании со сжатием протокола, сжатие протокола имеет меньше возможностей воздействия на данные, но всё равно может сжимать заголовки и те события и загрузки транзакций, которые не сжаты. Дополнительную информацию о сжатии транзакций журнала двоичных логов см. в разделе 7.4.4.5 «Сжатие транзакций журнала двоичных логов».Если
replica_compressed_protocolвключён, он имеет приоритет над любымSOURCE_COMPRESSION_ALGORITHMSпараметром, указанным для оператораCHANGE REPLICATION SOURCE TO. В этом случае подключения к источнику используютzlibсжатие, если оба источни и реплика поддерживают этот алгоритм. Еслиreplica_compressed_protocolотключён, применяется значениеSOURCE_COMPRESSION_ALGORITHMS. Дополнительную информацию см. в разделе 6.2.8 «Управление сжатием подключений». -
Формат командной строки --replica-exec-mode=modeСистемная переменная replica_exec_modeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию IDEMPOTENT(NDB)STRICT(Другие)Допустимые значения STRICTIDEMPOTENTreplica_exec_modeуправляет тем, как репликационный поток разрешает конфликты и ошибки во время репликации. РежимIDEMPOTENTприводит к подавлению ошибок дублирующихся ключей и отсутствия ключей;STRICTозначает, что такого подавления не происходит.Режим
IDEMPOTENTпредназначен для использования в сценариях репликации с несколькими источниками, циклической репликации и некоторых других специальных сценариях репликации для NDB Cluster Replication. (См. раздел 25.7.10 «NDB Cluster Replication: Взаимная и циклическая репликация» и раздел 25.7.12 «NDB Cluster Replication Разрешение конфликтов» для получения дополнительной информации.) NDB Cluster игнорирует любое явно заданное значение дляreplica_exec_modeи всегда обрабатывает его какIDEMPOTENT.В MySQL Server 9.2,
STRICTрежим является значением по умолчанию.Установка этой переменной вступает в силу немедленно для всех репликационных каналов, включая работающие каналы.
Для хранилищ данных, отличных от
NDB, режимIDEMPOTENTследует использовать только в том случае, если вы абсолютно уверены, что ошибки дублирующихся ключей и ошибки отсутствия ключей можно безопасно игнорировать. Он предназначен для использования в сценариях отказоустойчивости для NDB Cluster, где используется многоисточниковая или циклическая репликация, и не рекомендуется использовать в других случаях. -
Формат командной строки --replica-load-tmpdir=dir_nameСистемная переменная replica_load_tmpdirОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Имя каталога Значение по умолчанию Value of --tmpdirreplica_load_tmpdirуказывает имя каталога, в котором реплика создаёт временные файлы. Установка этой переменной вступает в силу немедленно для всех репликационных каналов, включая работающие каналы. Значение переменной по умолчанию равно значению системной переменнойtmpdirили значению по умолчанию, если эта системная переменная не указана.При репликации оператора
LOAD DATASQL-потоком репликации он извлекает файл, который должен быть загружен из журнала ретрансляции, во временные файлы, а затем загружает их в таблицу. Если загружаемый на источник файл очень большой, временные файлы на реплике тоже будут очень большими. Поэтому может быть целесообразно использовать этот параметр, чтобы указать реплике поместить временные файлы в каталог, расположенный в файловой системе с большим количеством свободного места. В этом случае журналы ретрансляции тоже будут очень большими, поэтому вы также можете установить системную переменнуюrelay_log, чтобы поместить журналы ретрансляции в эту файловую систему.Каталог, указанный этим параметром, должен быть расположен в файловой системе на диске (а не в файловой системе в памяти), чтобы временные файлы, используемые для репликации операторов
LOAD DATA, могли сохраняться при перезагрузке машины. Каталог также не должен быть тем, который очищается операционной системой во время процесса запуска системы. Однако репликация теперь может продолжаться после перезагрузки, если временные файлы были удалены. -
Формат командной строки --replica-max-allowed-packet=#Системная переменная replica_max_allowed_packetОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое Значение по умолчанию 1073741824Минимальное значение 1024Максимальное значение 1073741824Единица измерения байты Размер блока 1024replica_max_allowed_packetустанавливает максимальный размер пакета в байтах, который могут обрабатывать репликационные SQL (применитель) и I/O (приёмник) потоки. Установка этой переменной вступает в силу немедленно для всех репликационных каналов, включая работающие каналы. Возможно, что источник запишет события журнала двоичных логов, превышающие значениеmax_allowed_packetпосле добавления заголовка события. Значениеreplica_max_allowed_packetдолжно быть больше значенияmax_allowed_packetна источнике, чтобы большие обновления с помощью репликации по строкам не приводили к сбою репликации.Эта глобальная переменная всегда имеет значение, которое является положительным целым кратным 1024; если вы установите её на какое-либо значение, которое им не является, значение округляется вниз до ближайшего большего кратного 1024 при сохранении или использовании; установка
replica_max_allowed_packetв 0 приводит к использованию 1024. (В таких случаях выводится предупреждение об усечении.) Значение по умолчанию и максимальное значение — 1073741824 (1 ГБ); минимальное значение — 1024.
-
Формат командной строки --replica-net-timeout=#Системная переменная replica_net_timeoutОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию 60Минимальное значение 1Максимальное значение 31536000Единица измерения секунды replica_net_timeoutуказывает количество секунд, в течение которых нужно ожидать дополнительные данные или сигнал о состоянии от источника, прежде чем реплика посчитает соединение разорванным, отменит чтение и попытается повторно подключиться. Изменение этой переменной немедленно не повлияет. Состояние переменной применяется ко всем последующим командамSTART REPLICA.Значение по умолчанию составляет 60 секунд (одна минута). Первая попытка повторного подключения происходит сразу после истечения срока ожидания. Интервал между повторными попытками контролируется опцией
SOURCE_CONNECT_RETRYдля оператораCHANGE REPLICATION SOURCE TO, а количество попыток повторного подключения ограничено опциейSOURCE_RETRY_COUNT.Интервал для сигналов о состоянии, предотвращающий истечение срока ожидания соединения при отсутствии данных, если соединение всё ещё активно, управляется опцией
SOURCE_HEARTBEAT_PERIODдля оператораCHANGE REPLICATION SOURCE TO. Интервал сигналов о состоянии по умолчанию составляет половину значенияreplica_net_timeout, и он записывается в хранилище метаданных подключений реплики и отображается в таблице Performance Schemareplication_connection_configuration. Обратите внимание, что изменение значения или значения по умолчаниюreplica_net_timeoutне автоматически изменяет интервал сигналов о состоянии, независимо от того, был ли он явно задан или вычислялся по умолчанию. Если срок ожидания соединения изменён, необходимо также выполнить операторCHANGE REPLICATION SOURCE TO, чтобы скорректировать интервал сигналов о состоянии до соответствующего значения, чтобы он произошёл до истечения срока ожидания соединения. -
Формат командной строки --replica-parallel-type=valueУстаревший Да Системная переменная replica_parallel_typeОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Перечисление Значение по умолчанию LOGICAL_CLOCKДопустимые значения DATABASELOGICAL_CLOCKДля реплик с несколькими потоками (реплики, для которых
replica_parallel_workersустановлено значение больше 0),replica_parallel_typeопределяет политику, используемую для определения транзакций, которые разрешается выполнять параллельно на реплике. Переменная не влияет на реплики, для которых многопоточность не включена. Возможные значения:LOGICAL_CLOCK: Транзакции применяются параллельно на реплике на основе временных меток, которые источник репликации записывает в двоичный журнал. Зависимости между транзакциями отслеживаются на основе их временных меток, чтобы обеспечить дополнительную возможность параллелизации при необходимости.DATABASE: Транзакции, обновляющие разные базы данных, применяются параллельно. Это значение применимо только в том случае, если данные разделены на несколько баз данных, которые обновляются независимо и одновременно в источнике. Не должно быть межбазовых ограничений, так как на реплике они могут быть нарушены.
Когда
replica_preserve_commit_orderвключено, необходимо использоватьLOGICAL_CLOCK. Многопоточность включена по умолчанию для серверов репликации (replica_parallel_workers=4по умолчанию), иLOGICAL_CLOCKпо умолчанию. (replica_preserve_commit_orderтакже включено по умолчанию.)При использовании репликации с несколькими уровнями реплик,
LOGICAL_CLOCKможет обеспечить меньшую параллельность на каждом уровне, удалённом от источника.При включении сжатия транзакций двоичного журнала с использованием системной переменной
binlog_transaction_compression, еслиreplica_parallel_typeустановлено вDATABASE, все базы данных, затронутые транзакцией, отображаются до планирования транзакции. Использование сжатия транзакций двоичного журнала с политикойDATABASEможет уменьшить параллельность по сравнению с несжатыми транзакциями, которые отображаются и планируются для каждого события.replica_parallel_typeустарело, как и поддержка параллелизации транзакций с помощью разбиения баз данных. Ожидайте удаления поддержки этих функций в будущих выпусках, иLOGICAL_CLOCKбудет использоваться исключительно в дальнейшем.
-
Формат командной строки --replica-parallel-workers=#Системная переменная replica_parallel_workersОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Целое число Значение по умолчанию 4Минимальное значение 0Максимальное значение 1024replica_parallel_workersпозволяет использовать многопоточность на реплике и устанавливает количество потоков обработчиков для одновременного выполнения транзакций репликации. Когда значение равно или больше 1, реплика использует указанное количество рабочих потоков для выполнения транзакций плюс один координатор, который считывает транзакции из журнала ретрансляции и расставляет их по очереди для рабочих потоков. Когда значение равно 0, существует только один поток, который последовательно считывает и применяет транзакции. Если используется несколько каналов репликации, значение этой переменной применяется к потокам, используемым каждым каналом.Значение по умолчанию равно 4, что означает, что реплики по умолчанию многопоточные.
Установка этой переменной в 0 устарела, вызывает предупреждение и может быть удалена в будущих релизах MySQL. Для одного рабочего потока установите
replica_parallel_workersв 1.Когда
replica_preserve_commit_orderимеет значениеON(по умолчанию), транзакции на реплике экстернализируются на реплике в том же порядке, в котором они появляются в журнале ретрансляции реплики. Способ распределения транзакций среди потоков обработчиков определяетсяreplica_parallel_type. Эти системные переменные также имеют соответствующие значения по умолчанию для многопоточности.Чтобы отключить параллельное выполнение, установите
replica_parallel_workersв 1, в этом случае реплика использует один поток координатора для чтения транзакций и один рабочий поток для их применения, что означает, что транзакции применяются последовательно. Когдаreplica_parallel_workersравно 1, системные переменныеreplica_parallel_typeиreplica_preserve_commit_orderне имеют эффекта и игнорируются. Еслиreplica_parallel_workersравно 0, а опцияCHANGE REPLICATION SOURCE TOGTID_ONLYвключена, реплика имеет один поток координатора и один рабочий поток, точно так же, как если быreplica_parallel_workersбыло установлено в 1. С одним рабочим потоком системная переменнаяreplica_preserve_commit_orderтакже не имеет эффекта.Установка
replica_parallel_workersне имеет немедленного эффекта, а применяется ко всем последующим операциямSTART REPLICA.Многопоточные реплики также поддерживаются NDB Cluster 9.2. Дополнительную информацию см. в Разделе 25.7.11, «Репликация NDB Cluster с использованием многопоточного обработчика».
Увеличение числа рабочих потоков улучшает возможность параллелизма. Как правило, это улучшает производительность до определенного момента, после чего увеличение числа рабочих потоков снижает производительность из-за эффектов одновременного выполнения, таких как конкуренция за блокировки. Идеальное число зависит как от оборудования, так и от рабочей нагрузки; его сложно предсказать и обычно приходится находить путем тестирования. Таблицы без первичных ключей, которые всегда ухудшают производительность, могут оказывать еще более негативное влияние на производительность реплик, имеющих
replica_parallel_workers> 1; поэтому убедитесь, что все таблицы имеют первичные ключи перед включением этой опции. -
Формат командной строки --replica-pending-jobs-size-max=#Системная переменная replica_pending_jobs_size_maxОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Целое число Значение по умолчанию 128MМинимальное значение 1024Максимальное значение 16EiBЕдиница измерения байты Размер блока 1024Для многопоточных реплик эта переменная устанавливает максимальное количество памяти (в байтах), доступное для очередей обработчиков, содержащих события, которые еще не применены. Установка этой переменной не влияет на реплики, для которых многопоточность не включена. Установка этой переменной не имеет немедленного эффекта. Состояние переменной применяется ко всем последующим командам
START REPLICA.Минимальное возможное значение этой переменной составляет 1024 байта; значение по умолчанию — 128 МБ. Максимальное возможное значение — 18446744073709551615 (16 эксибибайт). Значения, которые не являются точными кратными 1024 байтам, округляются вниз до ближайшего меньшего кратного 1024 байт перед сохранением.
Значение этой переменной является мягким ограничением и может быть установлено в соответствии с обычной рабочей нагрузкой. Если необычно большое событие превышает этот размер, транзакция удерживается до тех пор, пока все потоки обработчиков не опустошат свои очереди, и затем обрабатывается. Все последующие транзакции удерживаются до тех пор, пока большая транзакция не будет завершена.
-
Формат командной строки --replica-preserve-commit-order[={OFF|ON}]Системная переменная replica_preserve_commit_orderОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Булево Значение по умолчанию ONДля многопоточных реплик (реплик, для которых
replica_parallel_workersустановлено значение больше 0), установкаreplica_preserve_commit_order=ONгарантирует, что транзакции выполняются и подтверждаются на реплике в том же порядке, в котором они появляются в журнале переадресации реплики. Это предотвращает пробелы в последовательности выполненных транзакций из журнала переадресации реплики и сохраняет ту же историю транзакций на реплике, что и на источнике (с ограничениями, указанными ниже). Эта переменная не влияет на реплики, для которых многопоточность не включена.Многопоточность включена по умолчанию в MySQL 9.2 для серверов реплик (
replica_parallel_workers=4по умолчанию), поэтомуreplica_preserve_commit_order=ONтакже является значением по умолчанию, и настройкаreplica_parallel_type=LOGICAL_CLOCKтакже имеет значение по умолчанию. Кроме того, настройкаreplica_preserve_commit_orderигнорируется, еслиreplica_parallel_workersустановлено в 1, поскольку в этом случае порядок транзакций сохраняется в любом случае.Для настройки
replica_preserve_commit_order=ONне требуется ведение бинарных журналов и журналирование обновлений реплики на реплике, и их можно отключить при необходимости. Для установкиreplica_preserve_commit_order=ONтребуется, чтобыreplica_parallel_typeбыло установлено в значениеLOGICAL_CLOCK, являющееся значением по умолчанию в MySQL 9.2. Перед изменением значенияreplica_preserve_commit_orderиreplica_parallel_typeнеобходимо остановить репликационный SQL поток (для всех каналов репликации, если вы используете несколько каналов репликации).При установке
replica_preserve_commit_order=OFF, транзакции, которые многопоточная реплика применяет параллельно, могут подтверждаться вне порядка. Поэтому проверка самой последней выполненной транзакции не гарантирует, что все предыдущие транзакции из источника были выполнены на реплике. Существует вероятность пробелов в последовательности выполненных транзакций из журнала переадресации реплики. Это имеет последствия для ведения журнала и восстановления при использовании многопоточной реплики. Дополнительную информацию см. в Разделе 19.5.1.35, “Replication and Transaction Inconsistencies”.При установке
replica_preserve_commit_order=ON, выполняющий поток ожидает, пока все предыдущие транзакции не будут подтверждены, прежде чем подтвердить текущую. Пока данный поток ожидает, пока другие потоки не подтвердят свои транзакции, он сообщает свой статус какWaiting for preceding transaction to commit. В этом режиме многопоточная реплика никогда не попадает в состояние, которого не было у источника. Это поддерживает использование репликации для масштабирования чтения. Дополнительную информацию см. в Разделе 19.4.5, “Using Replication for Scale-Out”.Примечаниеreplica_preserve_commit_order=ONне предотвращает отставание позиции бинарного журнала источника, гдеExec_master_log_posотстает от позиции, до которой были выполнены транзакции. Дополнительную информацию см. в Разделе 19.5.1.35, “Replication and Transaction Inconsistencies”.replica_preserve_commit_order=ONне сохраняет порядок подтверждения и историю транзакций, если реплика использует фильтры для своего бинарного журнала, такие как--binlog-do-db.replica_preserve_commit_order=ONне сохраняет порядок нетранзакционных обновлений DML. Они могут подтверждаться до транзакций, которые предшествуют им в журнале переадресации, что может привести к пробелам в последовательности выполненных транзакций из журнала переадресации реплики.Ограничение сохранения порядка подтверждения на реплике может возникнуть, если используется репликация на основе операторов, и в не-XA транзакции участвуют как транзакционные, так и нетранзакционные движки хранения, которые откатываются на источнике. Обычно не-XA транзакции, которые откатываются на источнике, не реплицируются на реплику, но в этой конкретной ситуации транзакция может быть реплицирована на реплику. Если это произойдет, многопоточная реплика без ведения бинарного журнала не обрабатывает откат транзакции, поэтому порядок подтверждения на реплике расходится с порядком транзакций в журнале переадресации в этом случае.
Групповая репликация—MySQL 8.0.41 и более поздние версии: Когда первичный сервер группы получает и применяет транзакции из внешнего источника через асинхронный канал и новый член присоединяется к группе,
replica_preserve_commit_order=ONне гарантирует соблюдение порядка подтверждения для неконфликтующих транзакций. Из-за этого на вторичном сервере могут быть временные состояния, которых никогда не было на источнике; поскольку это происходит только в отношении неконфликтующих транзакций, фактического расхождения нет.
-
Формат командной строки --replica-sql-verify-checksum[={OFF|ON}]Системная переменная replica_sql_verify_checksumОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Булево Значение по умолчанию ONreplica_sql_verify_checksumзаставляет репликационный SQL (применяющий) поток проверять данные с помощью контрольных сумм, считанных из журнала переадресации. В случае несоответствия реплика останавливается с ошибкой. Настройка этой переменной вступает в силу для всех каналов репликации немедленно, включая работающие каналы.ПримечаниеРепликационный I/O (приемный) поток всегда считывает контрольные суммы, если это возможно, при приеме событий из сети.
-
Формат командной строки --replica-transaction-retries=#Системная переменная replica_transaction_retriesОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 10Минимальное значение 0Максимальное значение 18446744073709551615replica_transaction_retriesустанавливает максимальное количество попыток для потоков репликации SQL на однопоточной или многопоточной реплике автоматически повторить неудачные транзакции, прежде чем остановиться. Установка этой переменной вступает в силу для всех каналов репликации немедленно, включая запущенные каналы. Значение по умолчанию равно 10. Установка переменной в 0 отключает автоматический повтор транзакций.Если поток репликации SQL не может выполнить транзакцию из-за
InnoDBвзаимной блокировки или потому что время выполнения транзакции превысилоInnoDBinnodb_lock_wait_timeoutилиNDBTransactionDeadlockDetectionTimeoutилиTransactionInactiveTimeout, он автоматически повторяет попыткиreplica_transaction_retriesраз, прежде чем остановиться с ошибкой. Транзакции с непостоянной ошибкой не повторяются.Таблица Performance Schema
replication_applier_statusпоказывает количество повторных попыток, которые имели место на каждом канале репликации, в столбцеCOUNT_TRANSACTIONS_RETRIES. Таблица Performance Schemareplication_applier_status_by_workerпоказывает подробную информацию о повторных попытках транзакций отдельными потоками приложения на однопоточной или многопоточной реплике и определяет ошибки, которые привели к повторной попытке последней транзакции и транзакции, которая в настоящее время выполняется. -
Формат командной строки --replica-type-conversions=setСистемная переменная replica_type_conversionsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Множество Значение по умолчанию Допустимые значения ALL_LOSSYALL_NON_LOSSYALL_SIGNEDALL_UNSIGNEDreplica_type_conversionsуправляет режимом преобразования типов, действующим на реплике при использовании репликации на основе строк. Его значение представляет собой разделённое запятыми множество из нуля или более элементов из списка:ALL_LOSSY,ALL_NON_LOSSY,ALL_SIGNED,ALL_UNSIGNED. Установите эту переменную в пустую строку, чтобы запретить преобразование типов между источником и репликой. Установка этой переменной вступает в силу для всех каналов репликации немедленно, включая запущенные каналы.Для получения дополнительной информации о режимах преобразования типов, применимых к повышению и понижению атрибутов в репликации на основе строк, см. Репликация на основе строк: повышение и понижение атрибутов.
-
replication_optimize_for_static_plugin_configФормат командной строки --replication-optimize-for-static-plugin-config[={OFF|ON}]Системная переменная replication_optimize_for_static_plugin_configОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFИспользуйте общие блокировки и избегайте ненужных приобретений блокировок для повышения производительности полусинхронной репликации. Эта настройка и
replication_sender_observe_commit_onlyпомогают по мере увеличения числа реплик, поскольку конкуренция за блокировки может замедлить производительность. Пока эта системная переменная включена, плагин полусинхронной репликации не может быть удален, поэтому необходимо отключить системную переменную, прежде чем завершится удаление.Эта системная переменная может быть включена до или после установки плагина полусинхронной репликации и может быть включена во время работы репликации. Исходные серверы полусинхронной репликации также могут получить преимущества в производительности от включения этой системной переменной, поскольку они используют те же механизмы блокировки, что и реплики.
replication_optimize_for_static_plugin_configможет быть включена, когда на сервере используется групповая репликация. В этом случае это может улучшить производительность при наличии конкуренции за блокировки из-за высоких нагрузок. -
replication_sender_observe_commit_onlyФормат командной строки --replication-sender-observe-commit-only[={OFF|ON}]Системная переменная replication_sender_observe_commit_onlyОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFОграничьте обратные вызовы для повышения производительности полусинхронной репликации. Эта настройка и
replication_optimize_for_static_plugin_configпомогают по мере увеличения числа реплик, поскольку конкуренция за блокировки может замедлить производительность.Эта системная переменная может быть включена до или после установки плагина полусинхронной репликации и может быть включена во время работы репликации. Исходные серверы полусинхронной репликации также могут получить преимущества в производительности от включения этой системной переменной, поскольку они используют те же механизмы блокировки, что и реплики.
-
Формат командной строки --report-host=host_nameСистемная переменная report_hostОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Имя хоста или IP-адрес реплики, о которой необходимо сообщить источнику во время регистрации реплики. Это значение отображается в выводе
SHOW REPLICASна исходном сервере. Оставьте значение не заданным, если вы не хотите, чтобы реплика регистрировалась в источнике.ПримечаниеНедостаточно, чтобы источник просто считывал IP-адрес сервера реплики из сокета TCP/IP после подключения реплики. Из-за NAT и других проблем маршрутизации этот IP-адрес может быть недействительным для подключения к реплике из источника или других хостов.
-
Формат командной строки --report-password=nameСистемная переменная report_passwordОбласть действия Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Пароль учетной записи реплики, который должен быть сообщен источнику во время регистрации реплики. Это значение отображается в выводе
SHOW REPLICASна сервере источника, если источник был запущен с помощью--show-replica-auth-info.Несмотря на то, что название этой переменной может говорить об обратном,
report_passwordне связана с системой привилегий пользователей MySQL и поэтому необязательно (и даже маловероятно) совпадает с паролем для учетной записи пользователя репликации MySQL. -
Формат командной строки --report-port=port_numСистемная переменная report_portОбласть действия Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию [slave_port]Минимальное значение 0Максимальное значение 65535Номер порта TCP/IP для подключения к реплике, который должен быть сообщен источнику во время регистрации реплики. Установите это только в том случае, если реплика прослушивает нестандартный порт или если у вас есть специальный туннель от источника или других клиентов к реплике. Если вы не уверены, не используйте этот параметр.
Значение по умолчанию для этого параметра — это номер порта, фактически используемый репликой. Это также значение по умолчанию, отображаемое командой
SHOW REPLICAS. -
Формат командной строки --report-user=nameСистемная переменная report_userОбласть действия Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Имя пользователя учетной записи реплики, которое должно быть сообщено источнику во время регистрации реплики. Это значение отображается в выводе
SHOW REPLICASна сервере источника, если источник был запущен с помощью--show-replica-auth-info.Несмотря на то, что название этой переменной может говорить об обратном,
report_userне связана с системой привилегий пользователей MySQL и поэтому необязательно (и даже маловероятно) совпадает с именем учетной записи пользователя репликации MySQL. -
Формат командной строки --rpl-read-size=#Системная переменная rpl_read_sizeОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 8192Минимальное значение 8192Максимальное значение 4294959104Единица измерения байты Размер блока 8192Системная переменная
rpl_read_sizeуправляет минимальным объемом данных в байтах, считываемых из файлов двоичного журнала и файлов ретрансляционного журнала. Если интенсивное использование дискового ввода/вывода для этих файлов препятствует производительности базы данных, увеличение размера чтения может уменьшить количество чтений файлов и простоев ввода/вывода, когда данные файла в данный момент не кэшируются операционной системой.Минимальное и значение по умолчанию для
rpl_read_sizeсоставляет 8192 байта. Значение должно быть кратно 4 КБ. Обратите внимание, что буфер размером с это значение выделяется для каждого потока, который считывает данные из файлов двоичного журнала и файлов ретрансляционного журнала, включая потоки дампа на источниках и потоки координатора на репликах. Поэтому установка большого значения может повлиять на потребление памяти серверами. -
Формат командной строки --rpl-semi-sync-replica-enabled[={OFF|ON}]Системная переменная rpl_semi_sync_replica_enabledОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFrpl_semi_sync_replica_enabledуправляет тем, включена ли полусинхронная репликация на сервере реплики. Чтобы включить или отключить подключаемый модуль, установите для этой переменной значениеONилиOFF(или 1 или 0) соответственно. Значение по умолчанию —OFF.Эта переменная доступна только в том случае, если установлен подключаемый модуль полусинхронной репликации на стороне реплики.
-
rpl_semi_sync_replica_trace_levelФормат командной строки --rpl-semi-sync-replica-trace-level=#Системная переменная rpl_semi_sync_replica_trace_levelОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 32Минимальное значение 0Максимальное значение 4294967295rpl_semi_sync_replica_trace_levelуправляет уровнем трассировки отладки полусинхронной репликации на сервере реплики. См.rpl_semi_sync_master_trace_levelдля допустимых значений.Эта переменная доступна только в том случае, если установлен подключаемый модуль полусинхронной репликации на стороне реплики.
-
Формат командной строки --rpl-semi-sync-slave-enabled[={OFF|ON}]Системная переменная rpl_semi_sync_slave_enabledОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFУстаревший синоним для
rpl_semi_sync_replica_enabled. -
rpl_semi_sync_slave_trace_levelФормат командной строки --rpl-semi-sync-slave-trace-level=#Системная переменная rpl_semi_sync_slave_trace_levelОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 32Минимальное значение 0Максимальное значение 4294967295Устаревший синоним для
rpl_semi_sync_replica_trace_level.
-
Формат командной строки --rpl-stop-replica-timeout=#Системная переменная rpl_stop_replica_timeoutОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 31536000Минимальное значение 2Максимальное значение 31536000Единица измерения секунды Вы можете управлять длительностью времени (в секундах), в течение которого
STOP REPLICAожидает, прежде чем истечет время ожидания, установив эту переменную. Это можно использовать для предотвращения взаимных блокировок междуSTOP REPLICAи другими операторами SQL, использующими разные клиентские соединения с репликой.Максимальное и значение по умолчанию для
rpl_stop_replica_timeoutсоставляет 31536000 секунд (1 год). Минимальное значение — 2 секунды. Изменения этой переменной вступают в силу для последующих операторовSTOP REPLICA.Эта переменная влияет только на клиента, который выдает оператор
STOP REPLICA. По истечении времени ожидания клиент, его выдавший, возвращает сообщение об ошибке, указывающее на то, что выполнение команды не завершено. Затем клиент прекращает ожидание остановки потоков репликации ввода-вывода (приемник) и SQL (применители), но потоки репликации продолжают пытаться остановиться, и операторSTOP REPLICAостается в силе. После того, как потоки репликации больше не заняты, операторSTOP REPLICAвыполняется, и реплика останавливается. -
Формат командной строки --rpl-stop-slave-timeout=#Устарело Да Системная переменная rpl_stop_slave_timeoutОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 31536000Минимальное значение 2Максимальное значение 31536000Единица измерения секунды Устаревший синоним для
rpl_stop_replica_timeout. -
Формат командной строки --skip-replica-start[={OFF|ON}]Системная переменная skip_replica_startОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFskip_replica_startуказывает серверу реплики не запускать потоки репликации ввода-вывода (приемник) и SQL (применители) при запуске сервера. Чтобы запустить потоки позже, используйте операторSTART REPLICA.Эта системная переменная доступна только для чтения и может быть установлена с помощью ключевого слова
PERSIST_ONLYили квалификатора@@persist_onlyс операторомSET. Параметр командной строки--skip-replica-startтакже устанавливает эту системную переменную. Вы можете использовать системную переменную вместо параметра командной строки, чтобы обеспечить доступ к этой функции с использованием структуры привилегий сервера MySQL, чтобы администраторам баз данных не требовался привилегированный доступ к операционной системе. -
Формат командной строки --skip-slave-start[={OFF|ON}]Устарело Да Системная переменная skip_slave_startОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFУстаревший синоним для
--skip-replica-start. -
Формат командной строки --slave-checkpoint-group=#Устарело Да Системная переменная slave_checkpoint_groupОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 512Минимальное значение 32Максимальное значение 524280Размер блока 8Устаревший синоним для
replica_checkpoint_group. -
Формат командной строки --slave-checkpoint-period=#Устарело Да Системная переменная slave_checkpoint_periodОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 300Минимальное значение 1Максимальное значение 4294967295Единица измерения миллисекунды Устаревший синоним для
replica_checkpoint_period. -
Формат командной строки --slave-compressed-protocol[={OFF|ON}]Устарело Да Системная переменная slave_compressed_protocolОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFУстаревший псевдоним для
replica_compressed_protocol. -
Формат командной строки --slave-exec-mode=modeСистемная переменная slave_exec_modeОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию IDEMPOTENT(NDB)STRICT(Другое)Допустимые значения STRICTIDEMPOTENTУстаревший псевдоним для
replica_exec_mode.
-
Формат командной строки --slave-load-tmpdir=dir_nameУстарело Да Системная переменная slave_load_tmpdirОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Имя каталога Значение по умолчанию Value of --tmpdirУстаревший псевдоним для
replica_load_tmpdir. -
Формат командной строки --slave-max-allowed-packet=#Устарело Да Системная переменная slave_max_allowed_packetОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1073741824Минимальное значение 1024Максимальное значение 1073741824Единица измерения байты Размер блока 1024Устаревший псевдоним для
replica_max_allowed_packet. -
Формат командной строки --slave-net-timeout=#Устарело Да Системная переменная slave_net_timeoutОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 60Минимальное значение 1Максимальное значение 31536000Единица измерения секунды Устаревший псевдоним для
replica_net_timeout. -
Формат командной строки --slave-parallel-type=valueУстарело Да Системная переменная slave_parallel_typeОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию LOGICAL_CLOCKДопустимые значения DATABASELOGICAL_CLOCKУстаревший псевдоним для
replica_parallel_type. -
Формат командной строки --slave-parallel-workers=#Устарело Да Системная переменная slave_parallel_workersОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 4Минимальное значение 0Максимальное значение 1024Устаревший псевдоним для
replica_parallel_workers. -
Формат командной строки --slave-pending-jobs-size-max=#Устарело Да Системная переменная slave_pending_jobs_size_maxОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 128MМинимальное значение 1024Максимальное значение 16EiBЕдиница измерения байты Размер блока 1024Устаревший псевдоним для
replica_pending_jobs_size_max. -
Формат командной строки --slave-preserve-commit-order[={OFF|ON}]Устарело Да Системная переменная slave_preserve_commit_orderОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию ONУстаревший псевдоним для
replica_preserve_commit_order. -
Формат командной строки --slave-skip-errors=nameУстарело Да Системная переменная slave_skip_errorsОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию OFFДопустимые значения OFF[list of error codes]allddl_exist_errorsУстаревший псевдоним для
replica_skip_errors. -
Формат командной строки --replica-skip-errors=nameСистемная переменная replica_skip_errorsОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию OFFДопустимые значения OFF[list of error codes]allddl_exist_errorsОбычно репликация останавливается, когда на реплике возникает ошибка, что дает вам возможность вручную устранить несоответствие в данных. Эта переменная заставляет поток SQL репликации продолжить репликацию, когда оператор возвращает любую из ошибок, перечисленных в значении переменной.
-
Формат командной строки --slave-sql-verify-checksum[={OFF|ON}]Устарело Да Системная переменная slave_sql_verify_checksumОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Boolean Значение по умолчанию ONУстаревший псевдоним для
replica_sql_verify_checksum. -
Формат командной строки --slave-transaction-retries=#Устарело Да Системная переменная slave_transaction_retriesОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 10Минимальное значение 0Максимальное значение (64-битные платформы) 18446744073709551615Максимальное значение (32-битные платформы) 4294967295Устаревший псевдоним для
replica_transaction_retries. -
Формат командной строки --slave-type-conversions=setУстарело Да Системная переменная slave_type_conversionsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Set Значение по умолчанию Допустимые значения ALL_LOSSYALL_NON_LOSSYALL_SIGNEDALL_UNSIGNEDУстаревший псевдоним для
replica_type_conversions. -
Системная переменная sql_replica_skip_counterОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295sql_replica_skip_counterуказывает количество событий из источника, которые реплика должна пропустить. Установка параметра не оказывает немедленного действия. Переменная применяется к следующему операторуSTART REPLICA; следующий операторSTART REPLICAтакже возвращает значение к 0. Когда эта переменная установлена в ненулевое значение и настроено несколько каналов репликации, операторSTART REPLICAможет использоваться только с предложениемFOR CHANNEL.channelЭтот параметр несовместим с репликацией на основе GTID и не должен устанавливаться в ненулевое значение, когда установлено
gtid_mode=ON. Если необходимо пропустить транзакции при использовании GTID, используйтеgtid_executedиз источника. Если вы включили назначение GTID на канале репликации с помощью параметраASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONSоператораCHANGE REPLICATION SOURCE TO, доступнаsql_replica_skip_counter. См. Раздел 19.1.7.3, «Пропуск транзакций».ВажноЕсли пропуск количества событий, указанного при установке этой переменной, приведет к тому, что реплика начнет работу в середине группы событий, реплика продолжит пропуск, пока не найдет начало следующей группы событий, и начнет работу с этого момента. Для получения дополнительной информации см. Раздел 19.1.7.3, «Пропуск транзакций».
-
Устарело Да Системная переменная sql_slave_skip_counterОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Устаревший псевдоним для
sql_replica_skip_counter. -
Формат командной строки --sync-master-info=#Устарело Да Системная переменная sync_master_infoОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 10000Минимальное значение 0Максимальное значение 4294967295Устаревший псевдоним для
sync_source_info. -
Формат командной строки --sync-relay-log=#Системная переменная sync_relay_logОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Integer Значение по умолчанию 10000Минимальное значение 0Максимальное значение 4294967295Если значение этой переменной больше 0, сервер MySQL синхронизирует свой релейный журнал с диском (используя
fdatasync()) после записи каждогоsync_relay_logсобытий в релейный журнал. Установка этой переменной вступает в силу для всех каналов репликации немедленно, включая запущенные каналы.Установка
sync_relay_logв 0 приводит к тому, что синхронизация с диском не выполняется; в этом случае сервер полагается на операционную систему для периодической очистки содержимого релейного журнала, как и для любого другого файла.Значение 1 является наиболее безопасным выбором, поскольку в случае неожиданной остановки вы теряете максимум одно событие из релейного журнала. Однако это также самый медленный выбор (если диск не имеет резервного питания кэша, что делает синхронизацию очень быстрой). Информацию о сочетании параметров на реплике, которая наиболее устойчива к неожиданным остановкам, см. в Разделе 19.4.2, «Обработка неожиданной остановки реплики».
-
Формат командной строки --sync-relay-log-info=#Устаревший Да Системная переменная sync_relay_log_infoОбласть действия Глобальная Динамический Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 10000Минимальное значение 0Максимальное значение 4294967295Количество транзакций после которого реплика обновляет хранилище метаданных прикладного модуля. Когда хранилище метаданных прикладного модуля хранится в виде таблицы
InnoDB, что является стандартным вариантом, оно обновляется после каждой транзакции, и эта системная переменная игнорируется. Если хранилище метаданных прикладного модуля хранится в файле (устаревший вариант), реплика синхронизирует свой файлrelay-log.infoна диск (с использованиемfdatasync()) после указанного количества транзакций. Значение0(ноль) означает, что содержимое файла сбрасывается в операционную систему только операционной системой. Изменение этой переменной вступает в силу для всех каналов репликации немедленно, включая работающие каналы.Поскольку хранение метаданных прикладного модуля в файле устарело, эта переменная также устарела, и сервер выводит предупреждение всякий раз, когда вы устанавливаете или читаете ее значение. Вы должны ожидать, что
sync_relay_log_infoбудет удалено в будущей версии MySQL, и мигрировать приложения, которые могут зависеть от нее. -
Формат командной строки --sync-source-info=#Системная переменная sync_source_infoОбласть действия Глобальная Динамический Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 10000Минимальное значение 0Максимальное значение 4294967295sync_source_infoопределяет количество событий после которых реплика обновляет хранилище метаданных соединения. Когда хранилище метаданных соединения хранится в виде таблицыInnoDB(по умолчанию, оно обновляется после этого числа событий. Если хранилище метаданных соединения хранится в файле (устаревший вариант), реплика синхронизирует свой файлmaster.infoна диск (используяfdatasync()) после этого числа событий. Значение по умолчанию составляет 10000, а нулевое значение означает, что хранилище никогда не обновляется. Изменение этой переменной вступает в силу для всех каналов репликации немедленно, включая работающие каналы. -
Формат командной строки --terminology-use-previous=#Системная переменная terminology_use_previousОбласть действия Глобальная, Сессия Динамический Да SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию NONEДопустимые значения NONEBEFORE_8_0_26BEFORE_8_2_0В MySQL 8.0 были внесены несовместимые изменения в имена инструментов, содержащие термины
master,slaveиmts(для «Многопоточного раба»), которые были соответственно изменены наsource,replicaиmta(для «Многопоточного прикладного модуля»). Если эти несовместимые изменения влияют на ваши приложения, установитеterminology_use_previousвBEFORE_8_0_26, чтобы заставить сервер MySQL использовать старые версии имен для объектов, указанных в предыдущем списке. Это позволяет инструментам мониторинга, которые полагаются на старые имена, продолжить работу, пока они не будут обновлены для использования новых имен.MySQL 9.2 обычно отображает
REPLICA_SIDE_DISABLEDвместоSLAVESIDE_DISABLEDв выводеSHOW CREATE EVENT,SHOW EVENTSи запросов к таблице схемы данных Information SchemaEVENTS. Вы можете заставить отобразитьSLAVESIDE_DISABLEDвместо этого, установивterminology_use_previousвBEFORE_8_0_26илиBEFORE_8_2_0.Установите системную переменную
terminology_use_previousс областью действия сессии для поддержки отдельных пользователей или с глобальной областью действия, чтобы сделать ее значение по умолчанию для всех новых сессий. Когда используется глобальная область действия, журнал медленных запросов содержит старые версии имен.Список затронутых имен инструментов приведён ниже. Системная переменная
terminology_use_previousвлияет только на эти элементы. Она не влияет на новые псевдонимы системных переменных, переменных состояния и опций командной строки, которые также были введены в MySQL 8.0, и эти псевдонимы по-прежнему могут использоваться, когда она включена.Инструментированные блокировки (мьютексы), видимые в таблицах схемы производительности
mutex_instancesиevents_waits_*с префиксомwait/synch/mutex/Блокировки чтения/записи, видимые в таблицах схемы производительности
rwlock_instancesиevents_waits_*с префиксомwait/synch/rwlock/Инструментированные условия, видимые в таблицах схемы производительности
cond_instancesиevents_waits_*с префиксомwait/synch/cond/Инструментированные выделения памяти, видимые в таблицах схемы производительности
memory_summary_*с префиксомmemory/sql/Имена потоков, видимые в таблице схемы производительности
threadsс префиксомthread/sql/Этапы потоков, видимые в таблицах схемы производительности
events_stages_*с префиксомstage/sql/, и без префикса в таблицахthreadsиprocesslistсхемы производительности, вывод из оператораSHOW PROCESSLIST, таблица схемы данных Information Schemaprocesslistи журнал медленных запросовКоманды потоков, видимые в таблицах схемы производительности
events_statements_history*иevents_statements_summary_*_by_event_nameс префиксомstatement/com/, и без префикса в таблицахthreadsиprocesslistсхемы производительности, вывод из оператораSHOW PROCESSLIST, таблица схемы данных Information Schemaprocesslistи вывод из оператораSHOW REPLICA STATUS
© 2025 Oracle
Licensed under the GPLv2 License.