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.