Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jakie są kluczowe ustawienia konfiguracji do optymalizacji replikacji MySQL dla dużego ruchu


Jakie są kluczowe ustawienia konfiguracji do optymalizacji replikacji MySQL dla dużego ruchu


Kluczowe ustawienia konfiguracji w celu optymalizacji replikacji MySQL dla środowisk o dużym natężeniu ruchu obejmują staranne dostrojenie różnych parametrów replikacji i serwera w celu zrównoważenia wydajności, niezawodności i spójności danych.

Użyj konfiguracji aktywnej/pasywnej:
W scenariuszach o wysokim ruchu zaleca się użycie architektury replikacji aktywnej/pasywnej, w której jeden główny serwer MySQL (Master) obsługuje wszystkie operacje zapisu i wiele pasywnych replików (niewolników) obsługujących operacje odczytu. To skutecznie dzieli obciążenie, umożliwiając repliki obsługi ruchu tylko do odczytu, podczas gdy mistrz pisze. Ta konfiguracja pozwala uniknąć złożoności i konfliktów aktywnych/aktywnych konfiguracji. Jednak replikacja asynchroniczna, powszechna w tej konfiguracji, może wprowadzić pewne opóźnienie między głównymi a replikami, dlatego logika aplikacji powinna uwzględniać wymagania spójności odczytu po napisaniu.

Tryb replikacji:
Replikacja MySQL obsługuje tryby replikacji asynchronicznych i półsynchronicznych. Replikacja asynchroniczna jest domyślna i oferuje wysoką wydajność, ale z potencjalnym opóźnieniem replikacji. Półsynchroniczna replikacja poprawia spójność danych, sprawiając, że główny poczekał, aż co najmniej jedna replika potwierdzi otrzymanie transakcji przed kontynuowaniem. Zmniejsza to ryzyko utraty danych w sytuacjach przełączania awaryjnego, ale zwiększa opóźnienie. W przypadku wysokiego ruchu ustawienia limitu czasu półsynchronicznego należy dostosowywać (domyślnie 10 sekund), aby zapewnić odpowiednie kompromisy między spójnością a wydajnością. Czasami stosuje się tryby mieszane, w których replika krytyczna wykorzystuje półsynchronizację, a inne używają async do równoważenia dostępności i wydajności.

Konfiguracja rejestrowania binarnego:
Włącz rejestrowanie binarne na Master, ustawiając `log-bin` i przypisz unikalny„ serwer-id ”. Wybierz `binlog_format = wiersz, aby zarejestrować poszczególne zmiany wierszy, a nie instrukcje dotyczące dokładności i spójności, szczególnie w złożonych obciążeniach. Mądrze skonfiguruj binarne zasady retencji dziennika, aby zrównoważyć zdolność odzyskiwania i wymagania przechowywania. Również włącz `gtid_mode = on` i` `` `` `` `` `` USDce_gtid_consistency = on 'dla globalnych identyfikatorów transakcji w celu uproszczenia zarządzania replikacją i przełączania awaryjnego, zwiększając automatyzację.

Topologia replikacji dla wydajności:
W celu skalowania replikacji w scenariuszach o dużym natężeniu ruchu zaleca się hierarchiczną topologię replikacji (zwaną także replikacją łączoną lub przekaźnikową). Master replikuje na serwerze pośrednie (przekaźnik), który z kolei powtarza się z innymi replikami. Zmniejsza to obciążenie Master poprzez delegowanie ruchu sieciowego i replikacji do replik pośrednich. Ta topologia łagodzi wąskie gardła i poprawia ogólną przepustowość replikacji. Konieczne jest jednak włączenie „log_slave_updates` na serwerach przekaźnika, co przenosi koszty wydajności i wymaga starannego monitorowania, aby zapobiec kaskadowemu opóźnieniu replikacji.

Równoległa replikacja niewolników:
Włącz równoległą replikację w replikach, aby poprawić wydajność replikacji. MySQL 5.6+ obsługuje wykonanie SQL o wielokrotnym niewolniku. Konfigurowalne opcje, takie jak `Slave_parallel_Workers` pozwalają wielokrotnym replikacji wątków SQL na stosowanie transakcji równolegle, zmniejszając opóźnienie replikacji dla obciążeń z niezależnymi transakcjami. Konieczne jest staranne strojenie, aby ustawić optymalną liczbę wątków na podstawie właściwości procesora i obciążenia bez powodowania rywalizacji.

Optymalizacja sieci i połączenia:
Zoptymalizuj konfigurację sieci w ramach ruchu replikacji przez:
- Korzystanie z dedykowanych interfejsów sieciowych do replikacji.
- Włączanie kompresji strumieni replikacji w celu zmniejszenia wykorzystania przepustowości.
- Prawidłowo konfigurowanie reguł zapory, aby umożliwić ruch replikacji.
-Korzystanie z szyfrowania SSL (włącz opcje `--ssl`) dla bezpiecznej transmisji danych, choć dodaje ono narzut procesora.
- Połączenie połączeń może zmniejszyć koszty ogólne z częstych konfiguracji połączeń.

Optymalizacja przechowywania i we/wy:
Użyj szybkiego przechowywania (preferowanego SSD) na Master dla binarnych zapisów dziennika, ponieważ binarne rejestrowanie bezpośrednio wpływa na replikację. W Replicach rozważ oddzielne urządzenia pamięci masowej dla dzienników przekaźników, aby uniknąć rywalizacji we/wy. Zoptymalizuj ustawienia harmonogramu we/wy i parametry systemu plików dla zapisów, ponieważ dzienniki replikacji obejmują sekwencyjne zapisy z okresowymi fsyncs. Opóźnienie dysku bezpośrednio wpływa na opóźnienie replikacji i ogólną wydajność.

Ustawienia limitu czasu i ponownej próby:
Dostosuj ustawienia limitu czasu replikacji, takie jak `slave_net_timeout`, aby upewnić się, że połączenia replikacji nie spadają przedwcześnie w sieciach o wysokim ruchu lub o wysokim opóźnieniu. Dodatkowo Tune `master_retry_count` i powiązane parametry ponownego ponownego odporności podczas przejściowych awarii sieci.

Monitorowanie i ostrzeganie:
Wdrożenie monitorowania opóźnienia replikacji, przepustowości sieci, we/wy dysku i wykorzystania procesora. Narzędzia mogą ostrzec o progach opóźnienia replikacji i innych anomalii, które mogą wskazywać na degradację wydajności. Proaktywne monitorowanie ma kluczowe znaczenie w środowiskach o wysokim ruchu w celu utrzymania zdrowia replikacji.

Strategie awaryjne i tworzenia kopii zapasowych:
Repliki muszą być regularnie tworzone oprócz stosowania replikacji w celu uzyskania wysokiej dostępności. Często testuj procedury przełączania awaryjnego. Użyj GTIDS, aby uprościć odzyskiwanie przełączania awaryjnego, łatwo identyfikując ostatnią wykonaną transakcję i zapewnienie nadrabiania zaległości bez utraty danych. W topologiach replikacji łączonej upewnij się, że niewolnicy przekaźnikowe i repliki liści są w pełni zsynchronizowane przed przełączaniem awaryjnym.

Dodatkowe ustawienia:
- Wyłącz niepotrzebne rejestrowanie i monitorowanie replik, aby zmniejszyć koszty ogólne.
- Użyj `sync_binlog = 1` na master dla trwałości, z świadomością wpływa na wydajność dysku.
- Dostosuj `max_allowed_packet`, aby obsługiwać duże transakcje w replikacji bez błędów.

Podsumowanie kluczowych parametrów konfiguracji:
- O Master:
- `Server-Id` (unikalny)
-`log-bin = mysql-bin`
- `binlog_format = row`
- `gtid_mode = on`
- `Enforce_gtid_consistency = on`
- `sync_binlog = 1` (dla trwałości)
- na replikach:
- `Server-Id` (unikalny różni się od głównego)
- `relay_log`
- `log_slave_updates` (jeśli używany jako przekaźnik pośredni)
- `Slave_parallel_workers` (> 1 dla równoległych replikacji)
-`` Slave-Net Timeout 'dostrojone do warunków sieciowych
- Tryb replikacji:
- Włącz półsynchroniczną replikację dla krytycznych replik (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Sieć:
- Włączono SSL do replikacji
- Włączona kompresja, jeśli ogranicza się przepustowość
- Składowanie:
- SSD dla dzienników binarnych i przekaźników
- Jeśli to możliwe, oddzielne dyski dla dzienników przekaźnika
- Topologia:
- Użyj powł. Lub hierarchicznej replikacji, aby rozpowszechniać obciążenie.

Wdrożenie tych ustawień, w połączeniu z infrastrukturą zdolną do obsługi wysokiej przepustowości sieci i dysku, zapewni optymalnie replikację MySQL w środowiskach o dużym natężeniu ruchu z lepszym zarządzaniem opóźnieniem, tolerancją błędów i spójnością danych.