Replicatiemonitoring wordt rood wanneer de VPN wegvalt, en de reflex is een positie te resetten. Die reflex is hoe een netwerkonderbreking een dataprobleem wordt. Een weggevallen pad zegt niets over wat de replica heeft ontvangen of toegepast, en dat zijn twee fasen met twee toestanden. Lees ze apart voordat u iets wijzigt.

Twee fasen, twee aparte antwoorden

Een conventionele asynchrone replica doet twee taken. De ontvanger verbindt met de bron, haalt gebeurtenissen op en schrijft ze lokaal naar het relay-log. De toepasser leest dat log en voert de gebeurtenissen uit op de replica. Wanneer het pad breekt, stopt de ontvanger onmiddellijk terwijl de toepasser de achterstand blijft wegwerken die al op schijf staat. Eén storing levert dus twee verschillende vragen op: is de verbinding terug, en is het opgelopen werk toegepast? Ze als één vraag behandelen middelt twee toestanden tot een misleidend antwoord.

Dat de ontvanger herstelt, zegt u dat het pad actief is. Het zegt niets over hoeveel de toepasser achterloopt, of over of die tijdens de onderbreking een fout tegenkwam.

Lees het kanaal met de juiste instructie

Op MySQL 8.4 geeft SHOW REPLICA STATUS één rij per geconfigureerd kanaal, dus lees de rij van het kanaal dat u bedoelt en niet de eerste in de lijst. Replica_IO_Running onderscheidt een verbonden ontvanger van een die verbindt of gestopt is, en Replica_SQL_Running beschrijft de toepasser. Lees de foutkolommen ernaast, want een ontvanger die opnieuw verbindt en meteen faalt, laat een bericht achter dat geen enkele statusvlag toont. Oudere versies gebruiken andere kolomnamen, dus vertaal een oud recept niet door alleen de opdrachten te hernoemen.

Controleer ook de identiteit van de bron en alle geconfigureerde filters. Een replica die naar de verkeerde bron wijst, of strakker is gefilterd dan u denkt, meldt gezondheid terwijl hij iets anders repliceert dan u verwacht.

Waarom een nulvertraging kan liegen

De vertragingswaarde vergelijkt de tijdstempel van de laatst toegepaste gebeurtenis met de huidige tijd. Wanneer de ontvanger een uur heeft stilgelegen, kan de toepasser de achterstand wegwerken en het einde bereiken van wat hij ontving, en dan zakt het getal naar nul terwijl de replica een uur achterloopt op de bron. De metriek meet de wachtrij van de toepasser, niet de actualiteit van de replica.

Vergelijk in plaats daarvan uitgevoerde transacties met wat de bron beschikbaar heeft. Die vergelijking overleeft een vastgelopen ontvanger.

De bewaartermijn bepaalt het echte herstelvenster

Bijwerken vereist dat de bron de transacties nog bewaart die de replica nodig heeft. Zodra die zijn opgeruimd, kan de replica ze niet meer ophalen, en geen enkele herverbinding verandert dat.

Met GTID-autopositionering is de fout expliciet: de replica vraagt om geschiedenis die de bron niet meer bewaart en weigert verder te gaan. De opties zijn dan de ontbrekende gebeurtenissen halen bij een bron die ze nog heeft, of opnieuw opbouwen uit een back-up en die laten bijwerken. De kloof overslaan is niet bijwerken, en het laat een replica achter waarvan de gegevens stilzwijgend onvolledig zijn. Plan het venster door de verwachte storingsduur te vergelijken met de binlog-bewaring op de bron en het wijzigingstempo, want die drie getallen bepalen of een storing überhaupt herstelbaar is.

Verifieer het bijwerken, niet de kleur van een indicator

Herstel het pad, inclusief naamresolutie en transportbeveiliging, en kijk dan of het bestaande kanaal zich volgens zijn eigen beleid opnieuw verbindt. Geef het een bepaald interval voordat u ingrijpt, en leg de voortgang van ontvangst en toepassing vast aan beide uiteinden van dat interval. Een kanaal dat herstart en een kanaal dat actueel is, zijn verschillende bevindingen.

Bevestig dat de toepasser de huidige positie van de bron heeft bereikt, en niet alleen het einde van de oude achterstand. Controleer dat er geen fout in de toepasser wacht, want één mislukte gebeurtenis stopt de voortgang terwijl de ontvanger verbonden blijft melden. Leg daarna het bewijs vast: kanaalnaam, beide fasestanden, de uitgevoerde positie en de tijd. Een groene indicator is een bewering; de positie is een feit.

Gerelateerde artikelen