19.4.10.2 Настройка полусинхронной репликации
При установке плагинов источника и реплики для полусинхронной репликации (см. Раздел 19.4.10.1, «Установка полусинхронной репликации») доступны системные переменные для управления поведением плагинов.
Для проверки текущих значений переменных состояния полусинхронной репликации используйте SHOW
VARIABLES:
mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
Все rpl_semi_sync_ системные переменные описаны в Разделе 19.1.6.2, «Параметры и переменные источника репликации» и Разделе 19.1.6.3, «Параметры и переменные сервера реплики». Некоторые ключевые системные переменные:xxx
-
rpl_semi_sync_source_enabled Управляет включением полусинхронной репликации на сервере-источнике. Для включения или выключения плагина установите эту переменную соответственно в 1 или 0. По умолчанию значение 0 (выключено).
-
rpl_semi_sync_replica_enabled Управляет включением полусинхронной репликации на реплике.
-
rpl_semi_sync_source_timeout Значение в миллисекундах, которое управляет временем ожидания источника подтверждения от реплики перед таймаутом и переходом на асинхронную репликацию. Значение по умолчанию 10000 (10 секунд).
-
rpl_semi_sync_source_wait_for_replica_count Управляет количеством подтверждений от реплик, которые должен получить источник в рамках одной транзакции, прежде чем завершить сеанс. По умолчанию 1, то есть источник ожидает подтверждения от одной реплики о получении событий транзакции.
Переменная rpl_semi_sync_source_wait_point управляет точкой, в которой сервер-источник полусинхронной репликации ожидает подтверждения от реплики о получении транзакции перед возвратом статуса клиенту, который выполнил транзакцию. Допустимые значения:
AFTER_SYNC(значение по умолчанию): Источник записывает каждую транзакцию в свой бинарный журнал и в реплику, и синхронизирует бинарный журнал на диск. Источник ожидает подтверждения от реплики о получении транзакции после синхронизации. После получения подтверждения источник фиксирует транзакцию в хранилище данных и возвращает результат клиенту, который затем может продолжить работу.AFTER_COMMIT: Источник записывает каждую транзакцию в свой бинарный журнал и в реплику, синхронизирует бинарный журнал и фиксирует транзакцию в хранилище данных. Источник ожидает подтверждения от реплики о получении транзакции после фиксации. После получения подтверждения источник возвращает результат клиенту, который затем может продолжить работу.
Характеристики репликации для этих настроек различаются следующим образом:
-
При использовании
AFTER_SYNCвсе клиенты видят зафиксированную транзакцию одновременно, после того как она была подтверждена репликой и зафиксирована в хранилище данных на источнике. Таким образом, все клиенты видят одинаковые данные на источнике.В случае сбоя источника, все транзакции, зафиксированные на источнике, были реплицированы на реплику (сохранены в её релейном журнале). Непредвиденный выход источника и переход на реплику не приводит к потере данных, потому что реплика актуальна. Как отмечалось выше, после переключения на реплику источник повторно использовать не следует.
-
При использовании
AFTER_COMMITклиент, выполняющий транзакцию, получает статус только после того, как сервер зафиксирует транзакцию в хранилище данных и получит подтверждение от реплики. После фиксации и до подтверждения от реплики другие клиенты могут увидеть зафиксированную транзакцию до клиента, выполнившего её.Если произойдет сбой, и реплика не обработает транзакцию, то в случае непредвиденного выхода из строя источника и переключения на реплику возможно, что у некоторых клиентов будут потеряны данные по сравнению с тем, что они видели на источнике.
Вы можете повысить производительность полусинхронной репликации, включив системные переменные replication_sender_observe_commit_only, которые ограничивают обратные вызовы, и replication_optimize_for_static_plugin_config, которые добавляют общие блокировки и избегают ненужных блокировок. Эти настройки помогают при увеличении количества реплик, поскольку конкуренция за блокировки может замедлить производительность. Сервера-источники полусинхронной репликации также могут получить выгоду от включения этих системных переменных, поскольку они используют те же механизмы блокировки, что и реплики.
© 2025 Oracle
Licensed under the GPLv2 License.