VPN үзілгенде репликация мониторингі қызылға айналады, ал бірінші түйсік — позицияны қалпына келтіру. Дәл осы түйсік желілік үзілісті деректер мәселесіне айналдырады. Құлаған жол репликаның нені қабылдағаны немесе нені қолданғаны туралы ештеңе айтпайды, ал бұл екі күйі бар екі кезең. Бірдеңені өзгертуден бұрын оларды бөлек оқыңыз.

Екі кезең, екі бөлек жауап

Кәдімгі асинхронды реплика екі жұмыс атқарады. Қабылдағыш дереккөзге қосылады, оқиғаларды тартып алады және оларды жергілікті түрде жіберу журналына жазады. Қолданушы сол журналды оқып, оқиғаларды репликада орындайды. Жол үзілгенде қабылдағыш бірден тоқтайды, ал қолданушы дискіде бұрыннан бар қалдықты өңдеуді жалғастырады. Сондықтан бір үзіліс екі түрлі сұрақ тудырады: байланыс қайтты ма, және жиналған жұмыс қолданылды ма? Оларды бір сұрақ ретінде қарастыру екі күйді орташалап, жаңылыстыратын жауапқа айналдырады.

Қабылдағыштың қалпына келуі жолдың жұмыс істеп тұрғанын айтады. Ол қолданушының қаншалықты артта қалғанын немесе ажыратылған кезде қатеге тап болғанын айтпайды.

Арнаны дұрыс мәлімдемемен оқыңыз

MySQL 8.4-те SHOW REPLICA STATUS әр конфигурацияланған арна үшін бір жол қайтарады, сондықтан тізімдегі бірінші жолды емес, өзіңіз көздеген арнаның жолын оқыңыз. Replica_IO_Running қосылған қабылдағышты қосылып жатқан немесе тоқтаған қабылдағыштан ажыратады, ал Replica_SQL_Running қолданушыны сипаттайды. Олардың жанындағы қате бағандарын да оқыңыз, өйткені қайта қосылып, бірден сәтсіздікке ұшыраған қабылдағыш ешбір күй жалауы көрсетпейтін хабарлама қалдырады. Ескі шығарылымдар басқа баған атауларын пайдаланады, сондықтан ескі рецептіні тек командалардың атын өзгерту арқылы аудармаңыз.

Дереккөздің сәйкестігін және конфигурацияланған сүзгілерді де тексеріңіз. Қате дереккөзге бағытталған немесе сіз ойлағаннан тар сүзілген реплика денсаулық туралы хабарлайды, бірақ күткеніңізден өзге нәрсені репликациялайды.

Неліктен нөлдік кідіріс саны өтірік айта алады

Кідіріс мәні соңғы қолданылған оқиғаның уақыт белгісін ағымдағы уақытпен салыстырады. Қабылдағыш бір сағат тоқтап тұрса, қолданушы қалдықты өңдеп, қабылданғанның соңына жетуі мүмкін, сонда сан нөлге түседі, бірақ реплика дереккөзден бір сағат артта қалады. Өлшем қолданушының кезегін өлшейді, репликаның өзектілігін емес.

Оның орнына орындалған транзакцияларды дереккөзде қолжетімді нәрсемен салыстырыңыз. Бұл салыстыру тоқтап қалған қабылдағышқа төтеп береді.

Нақты қалпына келтіру терезесін сақтау мерзімі анықтайды

Қуып жету үшін дереккөз репликаға қажет транзакцияларды әлі ұстауы керек. Олар тазаланғаннан кейін реплика оларды ала алмайды, және қанша рет қайта қосылса да бұл өзгермейді.

GTID авто-позициялау кезінде сәтсіздік анық: реплика дереккөзде енді жоқ тарихты сұрайды және жалғастырудан бас тартады. Сонда нұсқалар — жоғалған оқиғаларды әлі ұстап тұрған дереккөзден алу немесе сақтық көшірмеден қайта құрып, оны қуып жетуге жіберу. Олқылықты аттап өту қуып жету емес, және ол деректері үнсіз толық емес реплика қалдырады. Терезені күтілетін үзіліс ұзақтығын дереккөздегі бинарлық журналдың сақталу мерзімімен және өзгеріс қарқынымен салыстыру арқылы жоспарлаңыз, өйткені сол үш сан үзілістің мүлдем қалпына келетінін шешеді.

Қуып жетуді тексеріңіз, көрсеткіштің түсін емес

Жолды қалпына келтіріңіз, оның ішінде атауды шешу және тасымалдау қауіпсіздігі, содан кейін бар арна өз саясаты бойынша қайта қосыла ма, соны бақылаңыз. Араласуға дейін оған белгілі аралық беріңіз және сол аралықтың екі шетінде қабылдау мен қолдану прогресін жазып алыңыз. Қайта іске қосылған арна мен өзекті арна — әртүрлі тұжырымдар.

Қолданушының дереккөздің ағымдағы позициясына жеткенін растаңыз, тек ескі қалдықтың соңына емес. Қолданушыда қате күтіп тұрмағанын тексеріңіз, өйткені бір сәтсіз оқиға ілгерілеуді тоқтатады, ал қабылдағыш қосылғаны туралы хабарлауды жалғастырады. Содан кейін дәлелдерді жазыңыз: арна атауы, екі кезеңнің күйі, орындалған позиция және уақыт. Жасыл көрсеткіш — мәлімдеме; позиция — факт.

Қатысты мақалалар