MySQL репликација по прекин на VPN: прво прочитајте двете фази
Прекината патека не значи изгубени трансакции. Прочитајте го примачот и применувачот одделно, па проверете што сѐ уште чува изворот.
Следењето на репликацијата станува црвено кога VPN ќе падне, а инстинктот е да се ресетира позиција. Токму тој инстинкт го претвора мрежниот прекин во проблем со податоци. Прекинатата патека не кажува ништо за тоа што репликата го примила или применила, а тоа се две фази со две состојби. Прочитајте ги одделно пред да промените нешто.
Две фази, два одделни одговори
Вообичаената асинхрона реплика врши две работи. Примачот се поврзува со изворот, влече настани и ги запишува локално во преносниот дневник. Применувачот го чита тој дневник и ги извршува настаните врз репликата. Кога патеката се прекинува, примачот веднаш запира, додека применувачот продолжува да го обработува заостатокот што веќе е на дискот. Затоа еден прекин создава две различни прашања: дали врската се врати и дали натрупаната работа е применета? Ако ги третираме како едно прашање, две состојби се просекуваат во погрешен одговор.
Опоравувањето на примачот ви кажува дека патеката е активна. Тоа не кажува ништо за тоа колку применувачот заостанува, ниту дали налетал на грешка додека бил исклучен.
Читајте го каналот со точната наредба
Во MySQL 8.4, SHOW REPLICA STATUS враќа еден ред по конфигуриран канал, затоа читајте го редот на каналот што го мислите, а не првиот на списокот. Replica_IO_Running разликува поврзан примач од оној што се поврзува или е запрен, а Replica_SQL_Running го опишува применувачот. Читајте ги и колоните за грешки до нив, бидејќи примач што повторно се поврзува и веднаш не успева остава порака што ниту едно знаменце за состојба нема да ја покаже. Постарите изданија користат други имиња на колони, затоа не преведувајте стар рецепт само со преименување на наредбите.
Проверете го и идентитетот на изворот и сите конфигурирани филтри. Реплика насочена кон погрешен извор или филтрирана потесно отколку што мислите пријавува здравје додека реплицира нешто друго од она што го очекувате.
Зошто нулто заостанување може да лаже
Вредноста на заостанувањето го споредува временскиот печат на последниот применет настан со тековното време. Кога примачот бил запрен еден час, применувачот може да го обработи заостатокот и да стигне до крајот на она што го примил, и тогаш бројот паѓа на нула иако репликата заостанува еден час зад изворот. Метриката ја мери редицата на применувачот, не ажурноста на репликата.
Наместо тоа споредете ги извршените трансакции со она што изворот го има на располагање. Тоа споредување го преживува застанатиот примач.
Вистинскиот прозорец за обнова го одредува чувањето
За да се стигне, потребно е изворот сѐ уште да ги чува трансакциите што на репликата ѝ требаат. Откако ќе бидат исчистени, репликата не може да ги преземе, и никакво повторно поврзување не го менува тоа.
Со автоматско позиционирање GTID, неуспехот е јасен: репликата бара историја што изворот веќе не ја чува и одбива да продолжи. Тогаш опциите се да се земат настаните што недостигаат од извор што сѐ уште ги има, или да се изгради одново од резервна копија и да се остави да стигне. Прескокнувањето на празнината не е стигнување и остава реплика чии податоци се тивко нецелосни. Планирајте го прозорецот споредувајќи го очекуваното траење на прекинот со чувањето на бинарниот дневник на изворот и темпото на промени, бидејќи тие три броја одлучуваат дали прекинот воопшто е обновлив.
Проверете го стигнувањето, не бојата на показателот
Вратете ја патеката, вклучително резолуцијата на имиња и безбедноста на транспортот, потоа гледајте дали постојниот канал повторно се поврзува според сопствената политика. Дајте му одреден интервал пред да интервенирате и забележете го напредокот на примањето и примената на двата краја на тој интервал. Канал што се рестартира и канал што е ажурен се различни наоди.
Потврдете дека применувачот ја достигнал тековната позиција на изворот, а не само крајот на стариот заостаток. Проверете дали во применувачот не чека грешка, бидејќи еден неуспешен настан го запира напредокот додека примачот продолжува да пријавува поврзаност. Потоа забележете ги доказите: име на каналот, состојбите на двете фази, извршената позиција и времето. Зелениот показател е тврдење; позицијата е факт.