Galvenie konfigurācijas iestatījumi, lai optimizētu MySQL replikāciju augstas satiksmes vidē, ir rūpīga dažādu replikācijas un servera parametru noregulēšana, lai līdzsvarotu veiktspēju, uzticamību un datu konsekvenci.
Izmantojiet aktīvu/pasīvu konfigurāciju:
Scenārijos ar augstu satiksmi ieteicams izmantot aktīvo/pasīvo replikācijas arhitektūru, kur viens primārais MySQL serveris (Master) apstrādā visas rakstīšanas operācijas un vairākas pasīvas kopijas (vergi) apstrādā lasīšanas operācijas. Tas efektīvi sadala darba slodzi, ļaujot replikām apkalpot tikai lasāmu trafiku, kamēr kapteinis raksta. Šī iestatīšana izvairās no aktīvās/aktīvās konfigurāciju sarežģītības un konfliktu jautājumiem. Tomēr asinhronā replikācija, kas ir izplatīta šajā iestatījumā, var ieviest zināmu kavēšanos starp galveno un replikām, tāpēc lietojumprogrammu loģikai jāņem vērā lasīšanas pēcapraksta konsekvences prasības.
Replikācijas režīms:
MySQL replikācija atbalsta asinhronos un daļēji sinhronos replikācijas režīmus. Asinhronā replikācija ir noklusējums un tas piedāvā augstu veiktspēju, bet ar iespējamu replikācijas nobīdi. Daļēji sinhronā replikācija uzlabo datu konsekvenci, liekot galvenajam gaidīt, līdz vismaz viena replika atzīst darījuma saņemšanu pirms turpināšanas. Tas samazina datu zaudēšanas risku kļūmjpārlēces situācijās, bet palielina latentumu. Lai nodrošinātu pareizus kompromisus starp konsekvenci un veiktspēju, ir jāpielāgo daļēji sinhrona režīma taimauta iestatījumi (noklusējuma 10 sekundes). Dažreiz tiek izmantoti jaukti režīmi, ja kritiskā replika izmanto daļēji sync, bet citi izmanto async, lai līdzsvarotu pieejamību un veiktspēju.
Binārā mežizstrādes konfigurācija:
Iespējot bināro reģistrēšanu galvenajā daļā, iestatot `log-bin` un piešķiriet unikālu" Server-ID ". Izvēlieties `binlog_format = rinda`, lai reģistrētu individuālas rindas izmaiņas, nevis precizitātes un konsekvences paziņojumus, it īpaši sarežģītās darba slodzēs. Gudri konfigurējiet bināro žurnālu saglabāšanas politiku, lai līdzsvarotu atkopšanas spējas un uzglabāšanas prasības. Iespējot arī `gTID_MODE = ON` un` ENFORCE_GTID_CONSISTENCY = ON on` Globālā darījuma identifikatoriem, lai vienkāršotu replikācijas pārvaldību un kļūmjpārlieus, uzlabojot automatizāciju.
Replikācijas topoloģija veiktspējai:
Lai palielinātu replikāciju augstas satiksmes scenārijos, ieteicama hierarhiskas replikācijas topoloģija (ko sauc arī par ķēdes vai releja replikāciju). Galvenais atkārtojas starpposma serverī (releja vergs), kas savukārt atkārtojas citām replikām. Tas samazina galveno slodzi, deleģējot tīklu un replikācijas trafiku, lai starpposma replikām. Šī topoloģija mazina tīkla sašaurinājumus un uzlabo kopējo replikācijas caurlaidspēju. Tomēr ir nepieciešams iespējot `log_slave_updates` uz releju serveriem, kam ir veiktspējas pieskaitāmās izmaksas un nepieciešama rūpīga uzraudzība, lai novērstu kaskādes replikācijas nobīdi.
Paralēla replikācija vergiem:
Iespējot paralēlu replikāciju replikās, lai uzlabotu replikācijas veiktspēju. MySQL 5.6+ atbalsta vairāku vītņu vergu SQL izpildi. Konfigurējamas opcijas, piemēram, vergs_parallel_workers`, ļauj vairākām replikācijas SQL pavedieniem paralēli izmantot darījumus, samazinot replikācijas nobīdi darba slodzēm ar neatkarīgiem darījumiem. Nepieciešama rūpīga noregulēšana, lai iestatītu optimālu pavedienu skaitu, pamatojoties uz CPU un darba slodzes īpašībām, neizraisot strīdus.
Tīkla un savienojuma optimizācija:
Optimizējiet tīkla konfigurāciju replikācijas trafikai pēc:
- Īpašu tīkla saskarņu izmantošana replikācijai.
- Iespējojot saspiešanu replikācijas plūsmās, lai samazinātu joslas platuma izmantošanu.
- Pareiza ugunsmūra noteikumu konfigurēšana, lai droši varētu replikācijas satiksmi.
-SSL šifrēšanas izmantošana (iespējot `--SSL` OPTIONS) drošai datu pārraidei, lai gan tā pievieno dažus CPU virs galvas.
- Savienojuma apvienošana var samazināt pieskaitāmās izmaksas no biežām savienojuma iestatījumiem.
Uzglabāšana un I/O optimizācija:
Izmantojiet ātru krātuvi (SSD vēlamo) uz Binary Log Writes Master, jo binārā reģistrēšana tieši ietekmē replikāciju. Replicas apsveriet atsevišķas uzglabāšanas ierīces releju žurnāliem, lai izvairītos no I/O apgalvojuma. Optimizējiet I/O plānotāja iestatījumus un failu sistēmas parametrus rakstiem, jo replikācijas žurnāli ir saistīti ar secīgiem rakstiem ar periodiskiem FSYNC. Diska latentums tieši ietekmē replikācijas nobīdi un vispārējo veiktspēju.
Noildzes un atkārtotas atkārtotas iestatījumi:
Pielāgojiet replikācijas taimauta iestatījumus, piemēram, `Slave_net_timeout`, lai pārliecinātos, ka replikācijas savienojumi priekšlaicīgi nenokrīt ar lielu satiksmes vai augstas latentuma tīkliem. Turklāt noskaņojums `master_retry_count` un ar to saistītie atkārtošanas parametri, lai labāk noturētu pārejošu tīkla kļūmju laikā.
Uzraudzība un brīdināšana:
Ievietojiet replikācijas nobīdes, tīkla caurlaides, diska I/O un CPU izmantošanas uzraudzību. Rīki var brīdināt par replikācijas kavēšanās sliekšņiem un citām anomālijām, kas var norādīt uz veiktspējas sadalīšanos. Proaktīva uzraudzība ir kritiska vidē ar lielu satiksmi, lai saglabātu replikācijas veselību.
Kļūmjpārlēces un rezerves stratēģijas:
Replicas regulāri jāaptver papildus replikācijas izmantošanai augstai pieejamībai. Pārbaudes kļūmjpārlēces procedūras bieži. Izmantojiet GTID, lai vienkāršotu kļūmjpārlēces atkopšanu, viegli identificējot pēdējo izpildīto darījumu un nodrošinot, ka replikas panākumi nav datu zuduma. Sarakstu replikācijas topoloģijās pārliecinieties, ka releju vergi un lapu kopijas ir pilnībā sinhronizētas pirms kļūmjpārlēces.
Papildu iestatījumi:
- Atspējojiet nevajadzīgu reģistrēšanu un replikāciju uzraudzību, lai samazinātu pieskaitāmās izmaksas.
- Izmantojiet `sync_binlog = 1` uz Master, lai iegūtu izturību, ar izpratni tas ietekmē diska veiktspēju.
- Noskaņojiet `max_allowed_packet`, lai bez kļūdām apstrādātu lielus darījumus replikācijā.
Galveno konfigurācijas parametru kopsavilkums:
- par meistaru:
- "Server-id" (unikāls)
-`log-bin = mysql-bin`
- `binlog_format = rinda`
- `GTID_MODE = ON`
- `Purforce_gtid_consistency = on`
- `sync_binlog = 1` (izturībai)
- uz replikām:
- "serveris-id" (unikāls atšķirīgs no kapteiņa)
- `relay_log`
- `log_slave_updates` (ja to izmanto kā starpposma releju)
- `vergs_parallel_workers` (> 1 paralēlai replikācijai)
-`Slave-Net-Timeout` noregulēts tīkla apstākļiem
- Replikācijas režīms:
- Iespējot daļēji sinhrono replikāciju kritiskām replikām (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Tīkls:
- SSL iespējota replikācijai
- iespējota saspiešana, ja caurlaidspēja ir ierobežota
- uzglabāšana:
- SSD binārajiem un releju žurnāliem
- Ja iespējams, atsevišķi diski releju žurnāliem
- topoloģija:
- Lai sadalītu slodzi, izmantojiet ķēdes vai hierarhisku replikāciju.