Nastavení konfigurace klíčů pro optimalizaci replikace MySQL pro prostředí s vysokým provozem zahrnuje pečlivé ladění různých parametrů replikace a serveru pro vyvážení výkonu, spolehlivosti a konzistence dat.
Použijte aktivní/pasivní konfiguraci:
Ve scénářích s vysokým provozem se doporučuje používat aktivní/pasivní replikační architekturu, kde jeden primární server MySQL (MASTER) zpracovává všechny operace zápisu a více pasivních repliky (otroků). To efektivně rozděluje pracovní zátěž, což umožňuje replikům sloužit provozu pouze pro čtení, zatímco hlavní kliky píše. Toto nastavení se vyhýbá složitosti a konfliktním problémům aktivních/aktivních konfigurací. Asynchronní replikace, běžná v tomto nastavení, však může zavést určité zpoždění mezi hlavními a replikami, takže logika aplikace by měla zohlednit požadavky na konzistenci čtení.
Režim replikace:
Replikace MySQL podporuje asynchronní a polosynchronní replikační režimy. Asynchronní replikace je výchozí a nabízí vysoký výkon, ale s potenciálním zpožděním replikace. Semi-synchronní replikace zlepšuje konzistenci dat tím, že Master čeká, až alespoň jedna replika potvrdí přijetí transakce před pokračováním. To snižuje riziko ztráty dat v situacích převzetí služeb při selhání, ale přidává latenci. Pro vysoký provoz by měla být nastavení časového limitu semisynchronního režimu upravena (výchozí 10 sekund), aby se zajistilo správné kompromisy mezi konzistencí a výkonem. Někdy se používají smíšené režimy tam, kde kritická replika používá polosynchn a další používají async k vyvážení dostupnosti a výkonu.
Konfigurace binárního protokolování:
Povolte binární protokolování na Master nastavením `log-bin` a přiřadíte jedinečný` server-id`. Zvolte `binlog_format = řádek` pro protokol individuálních změn řádků spíše než příkazy pro přesnost a konzistenci, zejména ve složité pracovní zátěži. Nakonfigurujte zásady uchovávání binárních protokolů moudře pro vyrovnávání požadavků na zotavení a úložiště. Povolte také `gtid_mode = on` a` vynucovací_gtid_consistency = on` pro globální identifikátory transakcí, aby zjednodušily správu replikace a převzetí služeb při selhání a zlepšily automatizaci.
Topologie replikace pro výkon:
Pro měřítko replikace ve scénářích s vysokým provozem se doporučuje hierarchická replikační topologie (také nazývaná replikace zřetězená nebo relé). Master se replikuje na mezilehlý server (relé slave), který se zase replikuje na jiné repliky. Tím se snižuje zátěž Master delegováním sítě a replikačního provozu na střední repliky. Tato topologie zmírňuje úzká místa v síti a zlepšuje celkovou propustnost replikace. Je však nezbytné povolení `log_slave_updates` na reléových serverech, které nese režii výkonu a vyžaduje pečlivé monitorování, aby se zabránilo kaskádovému zpoždění replikace.
Paralelní replikace na otrokech:
Umožnit paralelní replikaci na replik, aby se zlepšila výkon replikace. MySQL 5,6+ podporuje provedení s více vlákny SLAVE SQL. Konfigurovatelné možnosti, jako je `Slave_Parallel_workers` umožňují více replikačních vláken SQL aplikovat transakce paralelně a snižovat zpoždění replikace pro pracovní zátěž s nezávislými transakcemi. Pro nastavení optimálního počtu vláken je zapotřebí pečlivé ladění na základě charakteristik CPU a pracovního vytížení, aniž by to způsobilo tvrzení.
Optimalizace sítě a připojení:
Optimalizovat konfiguraci sítě pro replikační provoz od:
- Pomocí vyhrazených síťových rozhraní pro replikaci.
- Umožnění komprese na proudech replikace ke snížení využití šířky pásma.
- Správně konfigurace pravidel brány firewall tak, aby umožňovala přenos replikace bezpečně.
-Používání šifrování SSL (povolit možnosti `--SL`) pro zabezpečený přenos dat, i když přidává některé režijní náklady na CPU.
- Sdružování připojení může snížit režii z častého nastavení připojení.
Úložiště a optimalizace I/O:
Použijte rychlé úložiště (preferováno SSD) na Master pro zápisy binárního protokolu, protože binární protokolování přímo ovlivňuje replikaci. Na replikach zvažte samostatná úložná zařízení pro protokoly reléů, abyste se vyhnuli I/O sporu. Optimalizujte nastavení I/O plánovače a parametry systému souborů pro zápisy, protože protokoly replikace zahrnují sekvenční zápisy s periodickými fsyncs. Latence disku přímo ovlivňuje zpoždění replikace a celkový výkon.
Nastavení časového limitu a opakování:
Upravte nastavení časového limitu replikace, jako je `SLAVE_NET_TIMEOUT`, abyste zajistili, že připojení k replikaci předčasně neklesnou ve sítích s vysokou dopravou nebo s vysokou latencí. Kromě toho nalaďte `master_retry_count` a související parametry opakování pro lepší odolnost během přechodných selhání sítě.
Monitorování a varování:
Implementace monitorování pro replikaci zpoždění, propustnost sítě, diskové I/O a CPU. Nástroje mohou upozornit na prahové hodnoty zpoždění replikace a dalších anomálií, které mohou naznačovat degradaci výkonu. Proaktivní monitorování je v prostředí s vysokým provozem rozhodující pro udržení zdraví replikace.
Strategie převzetí služeb a zálohování:
Repliky musí být pravidelně zálohovány kromě použití replikace pro vysokou dostupnost. Zkoušejte postupy převzetí služeb při selhání. Použijte GTID k zjednodušení obnovy převzetí služeb při selhání snadnou identifikací poslední provedené transakce a zajištění dohnání repliky bez ztráty dat. V topologiích zřetězených replikací zajistěte, aby byly reléové otroky a repliky listů plně synchronizovány před převzetí služeb při selhání.
Další nastavení:
- Zakázat zbytečné protokolování a monitorování na replik, abyste snížili režijní náklady.
- Použijte `Sync_Binlog = 1` on Master pro trvanlivost, s vědomím, že ovlivňuje výkon disku.
- Nalaďte `max_allowed_packet` a zvládne velké transakce v replikaci bez chyb.
Shrnutí klíčových konfiguračních parametrů:
- On Master:
- `Server-id` (jedinečný)
-`log-bin = mysql-bin`
- `binlog_format = row`
- `gtid_mode = on`
- `vynutit_gtid_consistence = on`
- `sync_binlog = 1` (pro trvanlivost)
- O replikách:
- `Server-id` (jedinečný odlišný od Master)
- `relay_log`
- `log_slave_updates` (pokud se používá jako střední relé)
- `Slave_Parallel_workers` (> 1 pro paralelní replikaci)
-`Slave-Net-Timeout` naladěno za podmínky sítě
- režim replikace:
- Povolit seminchronní replikaci pro kritické repliky (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Síť:
- SSL povoleno pro replikaci
- Povoleno komprese, pokud je omezena propustnost
- Storage:
- SSD pro binární a reléové protokoly
- Pokud je to možné, samostatné disky pro reléové protokoly
- Topologie:
- K distribuci zatížení použijte připojenou nebo hierarchickou replikaci.