Настройки конфигурации ключей для оптимизации репликации MySQL для среде высокого трафика включают тщательную настройку различных параметров репликации и сервера, чтобы сбалансировать производительность, надежность и согласованность данных.
Используйте активную/пассивную конфигурацию:
В сценариях с высоким трафиком рекомендуется использовать архитектуру активной/пассивной репликации, где один основной сервер MySQL (Master) обрабатывает все операции записи и несколько пассивных реплик (рабы), направляя операции чтения. Это эффективно расщепляет рабочую нагрузку, позволяя репликам обслуживать трафик только для чтения, в то время как Master Handles пишет. Эта настройка позволяет избежать сложности и проблем конфликтов активных/активных конфигураций. Тем не менее, асинхронная репликация, распространенная в этой настройке, может ввести некоторую задержку между основными и репликами, поэтому логика приложения должна принимать во внимание требования к согласованности с чтением-записи.
Режим репликации:
Репликация MySQL поддерживает асинхронные и полусинхронные режимы репликации. Асинхронная репликация - это по умолчанию и обеспечивает высокую производительность, но с потенциальной задержкой репликации. Полусинхронная репликация улучшает согласованность данных, заставляя мастера ожидания, пока хотя бы одна реплика не признает получение транзакции перед продолжением. Это снижает риск потери данных в аварийных ситуациях, но добавляет задержку. Для высокого трафика необходимо скорректироваться настройки тайм-аута полусинхронного режима (по умолчанию 10 секунд), чтобы обеспечить надлежащие компромиссы между последовательности и производительностью. Иногда используются смешанные режимы, где критическая копия использует полусинхродическую синхронизацию, а другие используют Async для баланса доступности и производительности.
Бинарная конфигурация журнала:
Включите двоичный журнал в мастере, установив `log-bin` и назначить уникальный` server-id '. Выберите `binlog_format = row` для регистрации отдельных изменений строк, а не операторов для точности и согласованности, особенно в сложных рабочих нагрузках. Настройте политики сохранения бинарных журналов с умом, чтобы сбалансировать способность к восстановлению и требования к хранению. Кроме того, включите `gtid_mode = on` и` reforce_gtid_consistency = on` для идентификаторов глобальных транзакций для упрощения управления репликацией и отказа, улучшая автоматизацию.
Топология репликации для производительности:
Для масштабирования репликации в сценариях с высоким трафиком рекомендуется иерархическая топология репликации (также называемая цепью или репликацию). Мастер повторяется на промежуточный сервер (реле подчиняется), который, в свою очередь, повторяет другие реплики. Это уменьшает нагрузку на мастер, делегируя сеть и трафик репликации в промежуточные реплики. Эта топология облегчает узкие места сети и улучшает общую пропускную способность репликации. Тем не менее, необходимо включение `log_slave_updates
Параллельная репликация на рабов:
Включите параллельную репликацию на репликах для повышения производительности репликации. MySQL 5.6+ поддерживает многопоточное выполнение SQL SQL. Настраиваемые параметры, такие как `slave_parallel_workers` Разрешить несколько потоков SQL -репликации для применения транзакций параллельно, уменьшая задержку репликации для рабочих нагрузок с независимыми транзакциями. Тщательная настройка необходима для установления оптимального количества потоков на основе характеристик ЦП и рабочей нагрузки, не вызывая спора.
Оптимизация сети и подключения:
Оптимизируйте конфигурацию сети для трафика репликации с помощью:
- Использование выделенных сетевых интерфейсов для репликации.
- Включение сжатия на потоках репликации для уменьшения использования полосы пропускания.
- Правильная настройка правил брандмауэра, чтобы обеспечить безопасное трафик репликации.
-Использование шифрования SSL (включить параметры `--SSL`) для безопасной передачи данных, хотя он добавляет некоторые накладные расходы на ЦП.
- Объединение соединений может уменьшить накладные расходы от частых настроек подключения.
Хранение и оптимизация ввода/вывода:
Используйте быстрое хранилище (SSD Preferred) на Master для бинарных записей журнала, так как бинарное ведение журнала напрямую влияет на репликацию. В Replicas рассмотрите отдельные устройства хранения для ретрансляционных журналов, чтобы избежать спора ввода -вывода. Оптимизировать настройки планировщика ввода/вывода и параметры файловой системы для записей, поскольку журналы репликации включают последовательные записи с периодическими FSYNC. Задержка диска напрямую влияет на отставание репликации и общую производительность.
Тайм -аут и повторные настройки:
Регулируйте настройки тайм-аута репликации, такие как `slave_net_timeout`, чтобы убедиться, что подключения репликации не падают преждевременно в сетях с высокой или высокой задержкой. Кроме того, настройтесь `master_retry_count` и связанные параметры повторной попытки для лучшей устойчивости во время переходных сбоев сети.
Мониторинг и предупреждение:
Реализовать мониторинг для репликации задержки, пропускной способности сети, ввода -вывода диска и использования ЦП. Инструменты могут предупреждать о порогах задержки репликации и других аномалиях, которые могут указывать на снижение производительности. Упреждающий мониторинг имеет решающее значение в средах с высоким трафиком для поддержания здоровья репликации.
Стратегии отремонтирования и резервного копирования:
Реплики должны регулярно резковываться в дополнение к использованию репликации для высокой доступности. Часто тестируйте процедуры отказоустойчивости. Используйте GTID, чтобы упростить восстановление аварийного переключения, легко определив последнюю выполненную транзакцию и обеспечивая наверстывание реплик без потери данных. В топологиях репликации цепных репликаций гарантируйте, что рабы и реплики листьев полностью синхронизированы перед аварийным переключением.
Дополнительные настройки:
- Отключите ненужную регистрацию и мониторинг на репликах, чтобы уменьшить накладные расходы.
- Используйте `sync_binlog = 1` на Master для долговечности, с осознанием, это влияет на производительность диска.
- Настройтесь `max_allowed_packet`, чтобы обрабатывать большие транзакции в репликации без ошибок.
Сводка параметров конфигурации ключей:
- на Мастере:
- `server-id` (уникальный)
-`log-bin = mysql-bin`
- `binlog_format = row`
- `gtid_mode = on`
- `revortue_gtid_consistency = on`
- `sync_binlog = 1` (для долговечности)
- На репликах:
- `server-id` (уникальный отличный от мастера)
- `relay_log`
- `log_slave_updates` (если используется в качестве промежуточного реле)
- `slave_parallel_workers` (> 1 для параллельной репликации)
-`Slave-Net Timeout
- Режим репликации:
- Включите полусинхронную репликацию для критических реплик (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Сеть:
- SSL включен для репликации
- сжатие включено, если пропускная способность ограничена
- Хранилище:
- SSD для бинарных и реле журналов
- отдельные диски для журналов реле, если это возможно
- Топология:
- Используйте цепные или иерархическую репликацию для распределения нагрузки.