Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Які налаштування конфігурації ключа для оптимізації реплікації MySQL для високого трафіку


Які налаштування конфігурації ключа для оптимізації реплікації MySQL для високого трафіку


Налаштування конфігурації ключів для оптимізації реплікації MySQL для середовищ високого трафіку передбачає ретельну настройку різних реплікацій та параметрів сервера для збалансування продуктивності, надійності та узгодженості даних.

Використовуйте активну/пасивну конфігурацію:
У сценаріях високого руху рекомендується використовувати архітектуру активної/пасивної реплікації, де один первинний сервер MySQL (Master) обробляє всі операції запису та кілька пасивних реплік (рабів) обробляють операції зчитування. Це ефективно розбиває навантаження, що дозволяє реплікам обслуговувати трафік лише для читання, поки майстер обробляє. Ця установка дозволяє уникнути складності та конфліктних проблем активних/активних конфігурацій. Однак асинхронна реплікація, поширена в цій установці, може ввести певну затримку між майстром та репліками, тому логіка додатків повинна враховувати вимоги про узгодженість, що відповідає за запису.

Режим реплікації:
Реплікація MySQL підтримує асинхронні та напівсинхронні режими реплікації. Асинхронна реплікація - це за замовчуванням і пропонує високу продуктивність, але з потенційним відставанням реплікації. Напівсинхронна реплікація покращує узгодженість даних, змушуючи голову чекати, поки принаймні одна репліка не визнає отримання транзакції перед тим, як продовжувати. Це знижує ризик втрати даних у ситуаціях відмови, але додає затримку. Для високого трафіку налаштування тайм-ауту напівсинхронного режиму слід відрегулювати (за замовчуванням 10 секунд), щоб забезпечити належні компроміси між послідовністю та продуктивністю. Іноді змішані режими використовуються там, де критична репліка використовує напівсинхрату, а інші використовують Async для збалансування доступності та продуктивності.

Бінарна конфігурація журналу:
Увімкнути двійкове вхід на майстер, встановивши `log-bin` та призначити унікальний` server-id`. Виберіть `binlog_format = row` для реєстрації окремих змін рядків, а не твердження для точності та послідовності, особливо у складних навантаженнях. Налаштуйте двійкові політики утримання журналу з розумом для збалансування можливостей відновлення та потреб у зберіганнях. Також увімкніть `gtid_mode = on` і` enforce_gtid_consistency = on`, щоб ідентифікатори глобальних транзакцій спростити управління реплікацією та відмову, вдосконалення автоматизації.

Топологія реплікації для продуктивності:
Для масштабування реплікації у сценаріях високого трафіку рекомендується ієрархічна топологія реплікації (яку також називають прикутою або реле реплікації). Майстер повторюється на проміжний сервер (ретранслятор), який, в свою чергу, повторює інші репліки. Це зменшує навантаження на майстер шляхом делегування мережі та реплікаційного трафіку до проміжних реплік. Ця топологія полегшує вузькі місця мережі та покращує загальну пропускну здатність реплікації. Однак необхідно включити `log_slave_updates` на реле -серверах, що містить накладні витрати та вимагає ретельного моніторингу, щоб запобігти відставанням реплікації каскадної реплікації.

Паралельна реплікація на рабах:
Увімкнути паралельну реплікацію на репліках для підвищення продуктивності реплікації. MySQL 5.6+ підтримує багатопотоку рабського виконання SQL. Налаштовані параметри, такі як `slave_parallel_workers`, дозволяють паралельно застосовувати транзакції декілька реплікаційних потоків SQL застосовувати транзакції, зменшуючи відставання реплікації для навантажень з незалежними транзакціями. Необхідна ретельна настройка для встановлення оптимальних підрахунків потоків на основі характеристик процесора та робочого навантаження, не викликаючи суперечки.

Оптимізація мережі та з'єднання:
Оптимізуйте конфігурацію мережі для реплікаційного трафіку:
- Використання спеціальних мережевих інтерфейсів для реплікації.
- Увімкнення стиснення на потоках реплікації для зменшення використання пропускної здатності.
- Правильне налаштування правил брандмауера, щоб забезпечити надійно реплікацію трафіку.
-Використання шифрування SSL (Увімкніть параметри `--SSL`) для безпечної передачі даних, хоча це додає накладні витрати процесора.
- Об'єднання підключення може зменшити накладні витрати від частого налаштування з'єднання.

Оптимізація зберігання та вводу/виводу:
Використовуйте швидке зберігання (SSD бажано) на майстві для запису двійкового журналу, оскільки двійкова журнал безпосередньо впливає на реплікацію. На репліках розгляньте окремі пристрої зберігання для реле журналів, щоб уникнути суперечки вводу/виводу. Оптимізуйте параметри планувальника вводу/виводу та параметри файлової системи для запису, оскільки журнали реплікації включають послідовні записи з періодичними FSYNC. Затримка диска безпосередньо впливає на відставання реплікації та загальну продуктивність.

Налаштування тайм -ауту та повторити:
Відрегулюйте налаштування тайм-ауту реплікації, такі як `slave_net_timeout`, щоб переконатися, що з'єднання реплікації не опускаються передчасно у мережах з високим рухом або високою затримкою. Крім того, налаштуйте `master_retry_count` та пов'язані з цим параметри повторного спроби для кращої стійкості під час перехідних збоїв у мережі.

Моніторинг та оповіщення:
Впроваджуйте моніторинг відставання реплікації, пропускної здатності мережі, утилізації вводу/виводу диска та процесора. Інструменти можуть попередити про пороги затримки реплікації та інші аномалії, які можуть вказувати на зниження продуктивності. Проактивне моніторинг є критичним у середовищах з високим рухом для підтримки реплікаційного здоров'я.

Стратегії виходу з ладу та резервного копіювання:
Репліки повинні регулярно створювати резервні копії на додаток до використання реплікації для високої доступності. Тесті процедури відмови часто. Використовуйте GTID, щоб спростити відновлення відмови, легко визначивши останню виконану транзакцію та забезпечивши репліки наздогнати без втрати даних. У прикутних топологіях реплікації забезпечуйте ретранслятори та репліки листя повністю синхронізовані перед відмовою.

Додаткові налаштування:
- Вимкніть непотрібну реєстрацію та моніторинг на репліках, щоб зменшити накладні витрати.
- Використовуйте `sync_binlog = 1` для майстра для довговічності, з усвідомленням це впливає на продуктивність диска.
- Налаштуйте `max_allowed_packet`, щоб обробляти великі транзакції в реплікації без помилок.

Підсумок параметрів конфігурації ключів:
- на Майстер:
- `Server-id` (унікальний)
-`log-bin = mysql-bin`
- `binlog_format = рядок '
- `gtid_mode = on`
- `entorce_gtid_consistence = on`
- `sync_binlog = 1` (для довговічності)
- на репліках:
- `Server-id` (унікальний відрізняється від Master)
- `reale_log`
- `log_slave_updates` (якщо використовується як проміжне реле)
- `slave_parallel_workers` (> 1 для паралельної реплікації)
-`Раб-сітка-час, налаштований на мережеві умови
- Режим реплікації:
- Увімкніть напівсинхронну реплікацію для критичних репліків (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Мережа:
- SSL увімкнено для реплікації
- стиснення увімкнено, якщо обмежена пропускна здатність
- Зберігання:
- SSD для двійкових та реле журналів
-, якщо це можливо, окремі диски для реле журналів
- Топологія:
- Використовуйте прикуту або ієрархічну реплікацію для розподілу навантаження.

Впровадження цих налаштувань у поєднанні з інфраструктурою, здатною обробляти високу мережу та пропускну здатність диска, забезпечить реплікацію MySQL оптимально у середовищах високого руху з кращою реплікацією відставання, толерантністю до несправностей та послідовністю даних.