Replicarea MySQL după o cădere de VPN: citiți mai întâi ambele etape
O cale întreruptă nu înseamnă tranzacții pierdute. Citiți separat receptorul și aplicatorul, apoi verificați ce mai păstrează sursa.
Monitorizarea replicării devine roșie când cade VPN-ul, iar instinctul este să resetezi o poziție. Acest instinct este modul în care o întrerupere de rețea devine o problemă de date. O cale căzută nu spune nimic despre ce a primit sau a aplicat replica, iar acestea sunt două etape cu două stări. Citiți-le separat înainte de a schimba ceva.
Două etape, două răspunsuri separate
O replică asincronă obișnuită face două treburi. Receptorul se conectează la sursă, extrage evenimente și le scrie local în jurnalul de retransmitere. Aplicatorul citește acel jurnal și execută evenimentele pe replică. Când calea se rupe, receptorul se oprește imediat, în timp ce aplicatorul continuă să lucreze restanța care este deja pe disc. O întrerupere produce așadar două întrebări diferite: a revenit conexiunea și a fost aplicată munca acumulată? Tratarea lor ca o singură întrebare mediază două stări într-un răspuns înșelător.
Faptul că receptorul își revine vă spune că calea este activă. Nu spune nimic despre cât de mult rămâne aplicatorul în urmă sau dacă a întâlnit o eroare în timpul deconectării.
Citiți canalul cu instrucțiunea corectă
În MySQL 8.4, SHOW REPLICA STATUS returnează un rând pentru fiecare canal configurat, așa că citiți rândul canalului pe care îl aveți în vedere, nu pe primul din listă. Replica_IO_Running distinge un receptor conectat de unul care se conectează sau este oprit, iar Replica_SQL_Running descrie aplicatorul. Citiți coloanele de eroare alături, pentru că un receptor care se reconectează și eșuează imediat lasă un mesaj pe care nicio steag de stare nu îl va arăta. Versiunile mai vechi folosesc alte nume de coloane, așa că nu traduceți o rețetă veche doar redenumind comenzile.
Verificați și identitatea sursei și filtrele configurate. O replică îndreptată spre sursa greșită, sau filtrată mai îngust decât credeți, raportează sănătate în timp ce replică altceva decât vă așteptați.
De ce un zero la întârziere poate minți
Valoarea întârzierii compară marcajul de timp al ultimului eveniment aplicat cu ora curentă. Când receptorul a fost oprit o oră, aplicatorul poate procesa restanța și poate ajunge la sfârșitul a ceea ce a primit, iar atunci numărul scade la zero deși replica este cu o oră în urma sursei. Metrica măsoară coada aplicatorului, nu actualitatea replicii.
Comparați în schimb tranzacțiile executate cu ce are sursa disponibil. Acea comparație rezistă unui receptor blocat.
Retenția stabilește fereastra reală de recuperare
Recuperarea cere ca sursa să mai păstreze tranzacțiile de care are nevoie replica. Odată ce acestea sunt șterse, replica nu le mai poate obține, iar nicio reconectare nu schimbă asta.
Cu poziționarea automată GTID, eșecul este explicit: replica cere un istoric pe care sursa nu îl mai păstrează și refuză să continue. Opțiunile sunt atunci să obțineți evenimentele lipsă de la o sursă care încă le are, sau să reconstruiți dintr-o copie de siguranță și să o lăsați să recupereze. A sări peste gol nu este recuperare și lasă o replică ale cărei date sunt discret incomplete. Planificați fereastra comparând durata estimată a întreruperii cu retenția jurnalului binar pe sursă și ritmul de schimbare, pentru că aceste trei numere decid dacă o întrerupere este recuperabilă.
Verificați recuperarea, nu culoarea unui indicator
Restabiliți calea, inclusiv rezoluția numelor și securitatea transportului, apoi observați dacă canalul existent se reconectează conform propriei politici. Dați-i un interval definit înainte de a interveni și înregistrați progresul recepției și al aplicării la ambele capete ale acelui interval. Un canal care repornește și un canal care este la zi sunt constatări diferite.
Confirmați că aplicatorul a ajuns la poziția curentă a sursei, nu doar la sfârșitul restanței vechi. Verificați că nu așteaptă nicio eroare în aplicator, pentru că un singur eveniment eșuat oprește progresul în timp ce receptorul continuă să raporteze conexiune. Apoi înregistrați dovezile: numele canalului, ambele stări de etapă, poziția executată și ora. Un indicator verde este o afirmație; poziția este un fapt.