16.1.6 Опции и переменные репликации и двоичного журналирования
В следующих разделах содержится информация об опциях mysqld и переменных сервера, используемых в репликации и для управления двоичным журналом. Опции и переменные для использования на источниках и репликах рассматриваются отдельно, как и опции и переменные, относящиеся к двоичному журналированию и глобальным идентификаторам транзакций (GTID). Также включена таблица быстрого доступа для получения базовой информации об этих опциях и переменных.
Особое значение имеет системная переменная server_id.
| Формат командной строки | --server-id=# |
|---|---|
| Системная переменная | server_id |
| Область действия | Глобальная |
| Динамическая | Да |
| Тип | Целое число |
| Значение по умолчанию | 0 |
| Минимальное значение | 0 |
| Максимальное значение | 4294967295 |
Эта переменная задает идентификатор сервера. В MySQL 5.7, server_id необходимо задать, если включено двоичное журналирование, в противном случае сервер не сможет запуститься.
server_id устанавливается по умолчанию в 0. На сервере источнике репликации и каждой реплике, вы обязаны указать server_id для определения уникального идентификатора репликации в диапазоне от 1 до 232 − 1. «Уникальный» означает, что каждый идентификатор должен отличаться от любого другого идентификатора, используемого любым другим источником или репликой в топологии репликации. Дополнительную информацию см. в разделе 16.1.6.2 «Опции и переменные источника репликации» и разделе 16.1.6.3 «Опции и переменные сервера-реплики».
Если идентификатор сервера установлен в 0, двоичное журналирование происходит, но источник с идентификатором сервера 0 отклоняет любые подключения от реплик, а реплика с идентификатором сервера 0 отказывается подключиться к источнику. Обратите внимание, что хотя вы можете динамически изменить идентификатор сервера на ненулевое значение, это не сразу позволит начать репликацию. Вы должны изменить идентификатор сервера и перезапустить сервер, чтобы инициализировать реплику.
Дополнительную информацию см. в разделе 16.1.2.5.1 «Настройка конфигурации реплики».
В MySQL 5.7 сервер генерирует настоящий UUID в дополнение к значению server_id, предоставленному пользователем. Это доступно как глобальная, только для чтения, системная переменная server_uuid.
Наличие системной переменной server_uuid в MySQL 5.7 не меняет требования к установке уникального значения server_id для каждого сервера MySQL в рамках подготовки и запуска репликации MySQL, как описано ранее в этом разделе.
| Системная переменная | server_uuid |
|---|---|
| Область действия | Глобальная |
| Динамическая | Нет |
| Тип | Строка |
При запуске сервер MySQL автоматически получает UUID следующим образом:
Попытаться прочитать и использовать UUID, записанный в файле
(гдеdata_dir/auto.cnfdata_dir— каталог данных сервера).Если
не найден, сгенерировать новый UUID и сохранить его в этом файле, создав файл при необходимости.data_dir/auto.cnf
Файл auto.cnf имеет формат, аналогичный формату, используемому для файлов my.cnf или my.ini. В MySQL 5.7, auto.cnf содержит только один раздел [auto], содержащий одно значение server_uuid; содержимое файла примерно такое:
[auto]
server_uuid=8a94f357-aab4-11df-86ab-c80aa9429562
Файл auto.cnf генерируется автоматически; не пытайтесь его писать или изменять.
При использовании репликации MySQL источники и реплики знают UUID друг друга. Значение UUID реплики можно увидеть в выводе SHOW SLAVE HOSTS. После выполнения START SLAVE, значение UUID источника доступно на реплике в выводе SHOW SLAVE STATUS.
Выполнение команды STOP SLAVE или RESET SLAVE не сбрасывает UUID источника, используемый репликой.
Идентификатор server_uuid сервера также используется в GTID для транзакций, начатых на этом сервере. Дополнительную информацию см. в разделе 16.1.3 «Репликация с глобальными идентификаторами транзакций».
При запуске поток ввода/вывода репликации генерирует ошибку и прерывает работу, если UUID источника равен его собственному, если опция --replicate-same-server-id не была установлена. Кроме того, поток ввода/вывода репликации генерирует предупреждение, если выполняется одно из следующих условий:
Нет источника, имеющего ожидаемый
server_uuid.UUID источника
server_uuidизменился, хотя ни одна командаCHANGE MASTER TOникогда не выполнялась.
© 2025 Oracle
Licensed under the GPLv2 License.