Hacker News

MySQL արտասահմանյան բանալիների կասկադային գործողությունները վերջապես հարվածեցին երկուական մատյան

MySQL արտասահմանյան բանալիների կասկադային գործողությունները վերջապես հարվածեցին երկուական մատյան Mysql-ի այս համապարփակ վերլուծությունը առաջարկում է դրա հիմնական բաղադրիչների մանրամասն ուսումնասիրություն և ավելի լայն հետևանքներ: Ուշադրության հիմնական ոլորտները Քննարկումը կենտրոնացած է. Հիմնական մեխանիկական...

1 min read Via readyset.io

Mewayz Team

Editorial Team

Hacker News

MySQL օտար բանալիների կասկադային գործողություններն այժմ հայտնվում են երկուական մատյանում՝ նշելով երկար սպասված փոփոխությունը, որն ուղղակիորեն ազդում է տվյալների բազայի վրա հիմնված հավելվածների կրկնօրինակման, աուդիտի և տվյալների վերականգնման վրա: Այս վարքագծային փոփոխությունը, որն աստիճանաբար ներդրվում է MySQL տարբերակներում, փակում է կարևոր բացը, որը նախկինում առաջացնում էր տվյալների լուռ անհամապատասխանություններ կրկնվող միջավայրերում:

Որո՞նք են արտաքին բանալիների կասկադային գործողությունները և ինչու են դրանք դուրս մնացել Երկուական մատյանից:

Օտարերկրյա հիմնական սահմանափակումներն ապահովում են աղյուսակների միջև հղումների ամբողջականությունը: Երբ դուք սահմանում եք Ջնջել ԿԱՍԿԱԴԸ կամ ԹԱՐՄԱՑՆԵԼՈՒ ԿԱՍԿԱԴԸ, MySQL-ն ինքնաբերաբար տարածում է փոփոխությունները մայր աղյուսակից հարակից զավակների տողերում: Տարիներ շարունակ այս կասկադային փոփոխությունները գործում էին որպես անտեսանելի կողմնակի էֆեկտներ. գործարկող հայտարարությունը գրանցվում էր, բայց կասկադի ազդեցության տակ գտնվող ներքևի տողերը որպես անկախ իրադարձություններ չէին գրանցվում երկուական մատյանում:

Սա թերացում չէր: MySQL թիմն ի սկզբանե պատճառաբանել էր, որ կրկնօրինակները, որոնք կիսում են նույն սխեման և արտասահմանյան բանալիների սահմանումները, ավտոմատ կերպով կվերարտադրեն կասկադները, երբ առաջնային հայտարարությունը վերարտադրվի: Տրամաբանությունը պահպանվում էր, քանի դեռ չի եղել: Սխեմայի դրեյֆը, մասնակի կրկնօրինակման զտիչները, պահեստավորման շարժիչի տարբեր կոնֆիգուրացիաները և ժամանակի վերականգնման սցենարները բոլորը բացահայտեցին այս ենթադրության փխրունությունը: Մեկ բաց թողնված կասկադը կարող է առաջացնել տարբերվող կրկնօրինակներ, որոնք առողջ են թվում, քանի դեռ արտադրության համար կարևոր հարցումները սխալ արդյունքներ չեն տվել:

Ինչպե՞ս է իրականում գործում նոր կասկադի գրանցման վարքագիծը:

Թարմացված վարքագծով MySQL-ը գրում է կասկադային գործողություններից ազդված տողերը որպես բացահայտ տողերի իրադարձություններ երկուական մատյանում՝ անմիջապես գործարկվող DML-ի ցուցումներից հետո: Եթե դուք ջնջում եք ծնողի գրառումը, և երեք երեխայի գրառումները հեռացվում են կասկադից, բոլոր չորս տողերի փոփոխություններն այժմ կհայտնվեն որպես առանձին, ստուգման ենթակա գրանցամատյաններ:

Այստեղ կարևոր է գրանցման ձևաչափը: Տողերի վրա հիմնված երկուական գրանցումը (RBL) այն ձևաչափն է, որը դա հնարավոր է դարձնում լիարժեք հավատարմությամբ: Քաղվածքի վրա հիմնված գրանցումը չի կարող հուսալիորեն գրանցել դինամիկ կասկադի արդյունքները, քանի որ արդյունքը կախված է կատարման պահին տվյալների վիճակից, այլ ոչ թե SQL տեքստից: Խառը ռեժիմով գրանցումն այս իրավիճակներում ընտրովի է կիրառում տողի ձևաչափը:

Հիմնական պատկերացում. Տողերի վրա հիմնված երկուական մատյանների ակտիվացումը պարզապես կրկնօրինակման նախապատվություն չէ, այլ այն այժմ նախապայման է տվյալների ցանկացած փոփոխության ամբողջական, ստուգելի աուդիտի հետքը գրանցելու համար, որոնք օգտագործում են արտաքին բանալիների սահմանափակումներ: Առանց դրա, կասկադի էֆեկտները մասամբ անտեսանելի են մնում ձեր գործիքակազմի համար:

Տվյալների բազայի ադմինիստրատորները պետք է ստուգեն իրենց binlog_format կարգավորումները և վերանայեն իրենց վերարտադրման տոպոլոգիայի ենթադրությունները, եթե նրանք պատմականորեն հիմնվել են կրկնօրինակի կողմից կասկադի կատարման վրա՝ հետևողականության երաշխիքների համար:

Ի՞նչ իրական աշխարհի խնդիրներ է լուծում սա կիրառական թիմերի համար:

Արդյունքները գերազանցում են տեսական կրկնօրինակման ճիշտությունը: Հարաբերական տվյալների մոդելներով բարդ բիզնես պլատֆորմներ աշխատող թիմերը՝ բազմաբնակարան վարձակալող SaaS արտադրանք, էլեկտրոնային առևտրի շարժիչներ, առողջապահական գրառումների համակարգեր, բախվել են կոնկրետ ձախողման ռեժիմների, որոնք վերաբերում են այս փոփոխությունին՝

  • Վերականգնման կետային ճշգրտություն. Զանգվածային ջնջումից առաջ մի պահ տվյալների բազայի վերականգնումն այժմ ֆիքսում է բոլոր կասկադային ջնջումները, ոչ միայն գործարկող հարցումը, ինչը թույլ չի տալիս վերականգնել ֆանտոմային տողերը վերականգնելուց հետո:
  • Փոխեք տվյալների հավաքագրման (CDC) խողովակաշարերը. Գործիքները, ինչպիսիք են Debezium-ը և Maxwell-ը, որոնք հեռարձակում են երկուական գրանցամատյանների իրադարձությունները դեպի Kafka կամ այլ խորշեր, այժմ ստանում են տվյալների յուրաքանչյուր մուտացիայի ամբողջական պատկերը, ինչը հնարավորություն է տալիս ճշգրիտ կանխատեսումներ կատարել:
  • Աուդիտ և համապատասխանության գրանցում. Կարգավորվող արդյունաբերությունները, որոնք պահանջում են տվյալների ամբողջական շարք, այժմ կարող են հստակորեն հետևել, թե որ երեխայի գրառումներն են հեռացվել ծնողական գործունեության արդյունքում՝ բավարարելով աուդիտի պահանջները՝ առանց կիրառական շերտի լուծումների:
  • Կրկնօրինակների տարաձայնությունների հայտնաբերում. Մոնիտորինգի գործիքները, որոնք համեմատում են կրկնօրինակների տողերի քանակը կամ ստուգման գումարները առաջնայինի հետ, այժմ ունեն ճշգրիտ գրանցամատյաններ՝ ցանկացած տարաձայնություն արագ հայտնաբերելու և ախտորոշելու համար:
  • Բազմաղբյուր և շրջանաձև կրկնօրինակում. Կոմպլեքս տոպոլոգիաները, որոնք նախկինում պահանջում էին անջատել արտասահմանյան ստեղները կրկնօրինակների վրա՝ կասկադների կրկնակի կիրառումից խուսափելու համար, ստանում են ավելի կառուցվածքային, կանխատեսելի իրադարձությունների հոսք, որի մասին կարելի է պատճառաբանել:

Ինչպե՞ս պետք է տվյալների բազայի ճարտարապետները կարգավորեն իրենց կրկնօրինակման և վերականգնման ռազմավարությունները:

Կասկադային երկուական գրանցման ընդունումը պասիվ արդիականացում չէ, այն պահանջում է առկա ենթակառուցվածքի կանխամտածված վերանայում: Կասկադների կողմից առաջացած լրացուցիչ մատյան իրադարձությունները մեծացնում են երկուական մատյանների ծավալը, երբեմն զգալիորեն՝ կախված նրանից, թե որքան ագրեսիվ է ձեր սխեման օգտագործում կասկադային սահմանափակումները: Ճարտարապետները պետք է հաշվի առնեն սկավառակի I/O-ի ավելացումը, ցանցի վերարտադրման թողունակությունը և գրանցամատյանի ռոտացիայի հաճախականությունը:

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Կրկնօրինակների դեպքում թիմերը պետք է ստուգեն՝ արդյոք օտարերկրյա բանալիների սահմանափակումները միացված են կամ անջատված: Տարածված պատմական պրակտիկա էր արտասահմանյան բանալիների անջատումը կրկնօրինակների վրա (foreign_key_checks=OFF)՝ թույլ տալու համար, որ հիմնական կարգավորիչը կիրառի: Եթե ​​կասկադներն այժմ բացահայտորեն գրանցված են, այդ գրանցված կասկադային իրադարձությունները կիրառելը կրկնօրինակի վրա, որը նաև մշակում է իր արտաքին բանալիների սահմանափակումները, կարող է հանգեցնել կրկնակի ջնջումների կամ հակասությունների: Կազմաձևման հավասարեցումը կրկնօրինակման շղթայում այժմ ավելի կարևոր է, քան երբևէ:

Թիմերի համար, որոնք օգտագործում են տրամաբանական պահուստավորման գործիքներ, ինչպիսիք են mysqldump-ը կամ ֆիզիկական պահուստավորման լուծումներ, ինչպիսին է Percona XtraBackup-ը, վերականգնման ընթացակարգերի վերանայումը նոր տեղեկամատյան կառուցվածքի նկատմամբ երաշխավորում է, որ վերականգնման runbook-երը կմնան ճշգրիտ: Վերականգնման սցենարների փորձարկումը փուլային միջավայրերում՝ համեմատած արտադրության ներկայացուցչական տվյալների ծավալների հետ, պետք է լինի ստանդարտ եռամսյակային վարժություն:

Ինչպե՞ս է սա համեմատվում PostgreSQL-ի և այլ տվյալների շտեմարանների հետ կասկադային գրանցման հետ:

PostgreSQL-ը երկար ժամանակ գրանցել է արտասահմանյան բանալիների կասկադային էֆեկտները որպես առաջին կարգի WAL (Write-Ahead Log) գրառումներ: Յուրաքանչյուր տող, որին դիպչում է կասկադային գործարկիչը, գրվում է WAL-ին առանձին՝ դարձնելով PostgreSQL կրկնօրինակումը և տրամաբանական վերծանումը կասկադային իրազեկ: Դիզայնի այս փիլիսոփայությունը՝ գրանցել բոլոր էֆեկտները, ոչ միայն պատճառները, այն է, ինչ MySQL-ի տողերի վրա հիմնված երկուական գրանցամատյանը այժմ ավելի մոտ է:

Microsoft SQL Server-ը նմանապես ֆիքսում է կասկադային փոփոխությունները տողերի մակարդակում իր գործարքների գրանցամատյանի միջոցով՝ դարձնելով CDC լուծումները SQL Server-ի վրա նույնիսկ բարդ հարաբերական սխեմաների համար: MySQL-ի թարմացումն այն ավելի մոտեցնում է ճարտարապետական հավասարությանն այս համակարգերի հետ՝ նվազեցնելով հիմնական առարկությունը, որը բարձրացրել են տվյալների բազայի ինժեներները MySQL-ը բարձր ամբողջականության հարաբերական ծանրաբեռնվածության համար գնահատելիս:

Կազմակերպությունների համար, որոնք աշխատում են բազմաբազային միջավայրեր կամ գնահատում են միգրացիոն ուղիները, այս մերձեցումը կարևոր է: Այն նվազեցնում է հարթակների միջև վարքային մակերեսը, որը գործառնական թիմերը պետք է հասկանան և հաշվի առնեն գործիքների և ընթացակարգերի մեջ:

Հաճախակի տրվող հարցեր

Այս փոփոխությունը ազդում է MySQL 5.7-ի, թե՞ միայն MySQL 8.x-ի վրա:

Կասկադային գրանցման վարքագծային բարելավումները հիմնականում կապված են MySQL 8.0 և ավելի ուշ թողարկումների հետ՝ 8.0.x սերիայի առանձին կետերի թողարկումների հետ կապված հատուկ բարելավումներով: MySQL 5.7-ն ավարտվել է 2023 թվականի հոկտեմբերին, և այն թիմերը, որոնք դեռ աշխատում են, պետք է այնտեղ կասկադային լոգերի վարքագիծը համարեն անվստահելի՝ կրկնօրինակման հետևողականության նպատակներով: MySQL 8.0-ի կամ MySQL 8.4 LTS-ի թարմացումը առաջարկվում է երկուական մատյանների ընթացիկ վարքագիծ մուտք գործելու համար:

Արդյո՞ք ամբողջական կասկադային գրանցումը միացնելը զգալիորեն կնվազեցնի գրելու արդյունավետությունը:

Վերավճարը իրական է, բայց սովորաբար համեստ է լավ ինդեքսավորված արտաքին բանալիների հարաբերություններով սխեմաների համար: Լրացուցիչ գրանցամատյանները ուղղակիորեն փոխկապակցված են յուրաքանչյուր կասկադի ազդեցության տակ գտնվող երեխայի տողերի քանակի հետ: Խորը տեղադրված կասկադային շղթաներով կամ շատ մեծ մանկական սեղաններով սխեմաները կարող են տեսնել չափելի թողունակության ազդեցություն: Իրատեսական տվյալների ծավալներով պրոֆիլավորումը բեմադրման միջավայրում, նախքան արտադրության դուրս գալը, ճիշտ մոտեցում է ձեր կոնկրետ ծանրաբեռնվածության համար ծախսերը քանակականացնելու համար:

Կարո՞ղ եմ օգտագործել երկուական տեղեկամատյանների կասկադային տվյալները իրական ժամանակի վերլուծական խողովակաշարերը կերակրելու համար:

Այո, և սա օգտագործման ամենագրավիչ դեպքերից մեկն է: Երկուական մատյանում ամբողջական կասկադային իրադարձություններով CDC գործիքներն այժմ կարող են ստեղծել ճշգրիտ նյութականացված դիտումներ, որոնման ինդեքսներ և իրադարձությունների հոսքեր՝ առանց կիրառական մակարդակի կեռիկներ պահանջելու՝ ձեռքով կասկադային էֆեկտներ հրապարակելու համար: Իրական ժամանակում վահանակներ, խարդախության հայտնաբերման համակարգեր կամ գործառնական վերլուծական շերտեր կառուցող թիմերը կգտնեն, որ տեղեկամատյանների հոսքի ամբողջականությունը զգալիորեն նվազեցնում է խողովակաշարի բարդությունը:


Աճող բիզնես հարթակի կառավարումը նշանակում է, որ ձեր հիմքում ընկած ենթակառուցվածքային որոշումները բարդանում են ժամանակի ընթացքում. տվյալների բազայի վերարտադրման ռազմավարության բացն այսօր կդառնա վաղը մասշտաբային միջադեպ: Mewayz-ը 207 մոդուլից բաղկացած բիզնես օպերացիոն համակարգ է, որը ստեղծվել է այն թիմերի համար, որոնք հրաժարվում են փոխզիջման գնալ հուսալիության կամ կարողությունների հարցում, որին վստահում են ավելի քան 138,000 օգտատերեր, որոնք աշխատում են ամեն ինչ՝ սկսած CRM-ից և էլեկտրոնային առևտուրից մինչև բովանդակության կառավարում և վերլուծություն, բոլորը մեկ միասնական հարթակում՝ սկսած ընդամենը $19/ամսական արժեքից:

Սկսեք ձեր Mewayz աշխատանքային տարածքն այսօր app.mewayz.com-ում և կառուցեք ձեր բիզնեսը ենթակառուցվածքի վրա, որը համապատասխանում է ձեր իմացածին:

:

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime