Hacker News

Kaskadne operacije tujih ključev MySQL so končno dosegle binarni dnevnik

Kaskadne operacije tujih ključev MySQL so končno dosegle binarni dnevnik Ta obsežna analiza mysqla ponuja podrobno preučitev njegovih ključnih komponent in širših posledic. Ključna področja fokusa Razprava se osredotoča na: Osnovni mehanizem ...

9 min read Via readyset.io

Mewayz Team

Editorial Team

Hacker News

Kaskadne operacije tujih ključev MySQL so zdaj prikazane v binarnem dnevniku, kar označuje dolgo pričakovano spremembo, ki neposredno vpliva na replikacijo, revizijo in obnovitev podatkov za aplikacije, ki jih poganja baza podatkov. Ta vedenjski premik – postopoma uveden v različicah MySQL – zapolnjuje kritično vrzel, ki je prej povzročala tihe nedoslednosti podatkov v repliciranih okoljih.

Kaj so kaskadne operacije tujih ključev in zakaj niso bile vključene v binarni dnevnik?

Omejitve tujih ključev uveljavljajo referenčno celovitost med tabelami. Ko definirate ON DELETE CASCADE ali ON UPDATE CASCADE, MySQL samodejno prenese spremembe iz nadrejene tabele v povezane podrejene vrstice. Dolga leta so te kaskadne spremembe delovale kot nevidni stranski učinki – sprožilni stavek je bil zabeležen, vendar spodnje vrstice, na katere je kaskada vplivala, niso bile zabeležene kot neodvisni dogodki v binarnem dnevniku.

To ni bila napaka. Ekipa MySQL je prvotno razmišljala, da bodo replike, ki si delijo isto shemo in definicije tujih ključev, samodejno reproducirale kaskade, ko bo primarni stavek ponovno predvajan. Logika je držala - dokler ni. Premik sheme, filtri za delno podvajanje, različne konfiguracije mehanizmov za shranjevanje in scenariji obnovitve v trenutku so razkrili krhkost te predpostavke. Ena sama zgrešena kaskada bi lahko ustvarila različne replike, ki so bile videti zdrave, dokler poizvedbe, ki so kritične za proizvodnjo, niso vrnile napačnih rezultatov.

Kako dejansko deluje novo kaskadno beleženje?

S posodobljenim vedenjem MySQL zapiše vrstice, na katere vplivajo kaskadne operacije, kot eksplicitne dogodke vrstic v binarni dnevnik, takoj za sprožilnim stavkom DML. Če izbrišete nadrejeni zapis in se trije podrejeni zapisi kaskadno združijo, so vse štiri spremembe vrstic zdaj prikazane kot ločeni vnosi v dnevnik, ki jih je mogoče revidirati.

Tu je pomembna oblika beleženja. Binarno beleženje na podlagi vrstic (RBL) je oblika, ki to omogoča s popolno zvestobo. Beleženje na podlagi stavkov ne more zanesljivo zajeti dinamičnih kaskadnih rezultatov, ker je rezultat odvisen od stanja podatkov v času izvajanja, ne od samega besedila SQL. Beleženje v mešanem načinu v teh situacijah selektivno uporablja obliko vrstice.

Ključni vpogled: Omogočanje binarnega beleženja na podlagi vrstic ni le preferenca replikacije – zdaj je predpogoj za zajem popolne, preverljive revizijske sledi vsake spremembe podatkov v sistemih, ki uporabljajo omejitve tujega ključa. Brez tega kaskadni učinki ostanejo deloma nevidni za vaše orodje.

Skrbniki baz podatkov bi morali preveriti svojo nastavitev binlog_format in pregledati svoje predpostavke o topologiji podvajanja, če so se v preteklosti za zagotavljanje doslednosti zanašali na kaskadno izvajanje na strani podvajanja.

Katere težave v resničnem svetu to odpravi za skupine aplikacij?

Posledice daleč presegajo teoretično pravilnost podvajanja. Ekipe, ki izvajajo kompleksne poslovne platforme z relacijskimi podatkovnimi modeli – produkti SaaS za več najemnikov, mehanizmi za e-trgovino, sistemi zdravstvenih evidenc – so naletele na konkretne načine napak, ki jih obravnava ta sprememba:

  • Natančnost obnovitve v trenutku: Obnovitev zbirke podatkov na trenutek pred množičnim izbrisom zdaj zajame vse kaskadne podrejene izbrise, ne le sprožilne poizvedbe, kar preprečuje, da bi se fantomske vrstice po obnovitvi znova pojavile.
  • Spremenite cevovode za zajemanje podatkov (CDC): Orodja, kot sta Debezium in Maxwell, ki pretakajo dogodke binarnega dnevnika v Kafko ali druge ponore, zdaj prejmejo celotno sliko vsake mutacije podatkov, kar omogoča natančne projekcije navzdol.
  • Beleženje revizije in skladnosti: Regulirane panoge, ki zahtevajo popolno podatkovno linijo, lahko zdaj natančno izsledijo, kateri podrejeni zapisi so bili odstranjeni zaradi katere nadrejene operacije, s čimer izpolnjujejo zahteve revizije brez rešitev na ravni aplikacije.
  • Zaznavanje razhajanj replik: Orodja za spremljanje, ki primerjajo število vrstic ali kontrolne vsote replik s primarnimi, imajo zdaj natančne podatke dnevnika za hitro prepoznavanje in diagnosticiranje morebitnih razhajanj.
  • Večvirna in krožna replikacija: Kompleksne topologije, ki so prej zahtevale onemogočanje tujih ključev na replikah, da bi se izognili dvojni uporabi kaskad, pridobijo bolj strukturiran, predvidljiv tok dogodkov, o katerem lahko razmišljajo.

Kako naj arhitekti baz podatkov prilagodijo svoje strategije podvajanja in obnovitve?

Uvajanje binarnega beleženja, ki upošteva kaskado, ni pasivna nadgradnja – zahteva premišljen pregled obstoječe infrastrukture. Dodatni dogodki dnevnika, ki jih ustvarijo kaskade, povečajo obseg binarnega dnevnika, včasih znatno, odvisno od tega, kako agresivno vaša shema uporablja kaskadne omejitve. Arhitekti morajo upoštevati povečan V/I disk, pasovno širino replikacije omrežja in frekvenco vrtenja dnevnika.

💡 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 →

Pri replikah morajo ekipe preveriti, ali so omejitve tujih ključev omogočene ali onemogočene. Običajna zgodovinska praksa je bila onemogočanje tujih ključev na replikah (foreign_key_checks=OFF), da se primarni izvaja uveljavitev. S kaskadami, ki se zdaj izrecno beležijo, lahko uporaba teh zabeleženih kaskadnih dogodkov na replici, ki obdeluje tudi lastne omejitve tujega ključa, povzroči podvojene izbrise ali konflikte. Usklajevanje konfiguracije v verigi replikacije je zdaj pomembnejše kot kdaj koli prej.

Za ekipe, ki uporabljajo logična orodja za varnostno kopiranje, kot je mysqldump, ali fizične rešitve za varnostno kopiranje, kot je Percona XtraBackup, pregled obnovitvenih postopkov v primerjavi z novo strukturo dnevnika zagotavlja, da obnovitveni programi ostanejo točni. Preizkušanje scenarijev obnovitve v uprizoritvenih okoljih glede na količine podatkov, ki so reprezentativni za proizvodnjo, bi moralo biti standardna četrtletna vaja.

Kako je to v primerjavi s tem, kako PostgreSQL in druge zbirke podatkov obravnavajo kaskadno beleženje?

PostgreSQL že dolgo beleži kaskadne učinke tujih ključev kot prvorazredne zapise WAL (Write-Ahead Log). Vsaka vrstica, ki se je dotakne kaskadni sprožilec, se posebej zapiše v WAL, zaradi česar sta replikacija in logično dekodiranje PostgreSQL inherentno kaskadno zaznavna. Ta filozofija načrtovanja – beleženje vseh učinkov, ne le vzrokov – je tisto, čemur se MySQL-ov binarni dnevnik, ki temelji na vrstici, zdaj bolj približa.

Microsoft SQL Server podobno zajame kaskadne spremembe prek svojega dnevnika transakcij na ravni vrstice, zaradi česar so rešitve CDC na SQL Server enostavne tudi za zapletene relacijske sheme. Posodobitev MySQL ga približuje arhitekturni pariteti s temi sistemi, kar zmanjšuje ključni ugovor, ki so ga inženirji baz podatkov izpostavili pri ocenjevanju MySQL za relacijske delovne obremenitve z visoko integriteto.

Za organizacije, ki izvajajo okolja z več zbirkami podatkov ali ocenjujejo migracijske poti, je ta konvergenca pomembna. Zmanjšuje vedenjsko površino med platformami, ki jo morajo operativne ekipe razumeti in upoštevati pri orodjih in postopkih.

Pogosto zastavljena vprašanja

Ali ta sprememba vpliva na MySQL 5.7 ali samo na MySQL 8.x?

Izboljšave vedenja pri kaskadnem beleženju so v prvi vrsti povezane z MySQL 8.0 in novejšimi izdajami, s posebnimi izboljšavami, povezanimi s posameznimi izdajami točk v seriji 8.0.x. MySQL 5.7 je oktobra 2023 dosegel konec življenjske dobe in ekipe, ki ga še izvajajo, bi morale obravnavati kaskadno beleženje tam kot nezanesljivo za namene doslednosti podvajanja. Nadgradnja na izdajo MySQL 8.0 ali MySQL 8.4 LTS je priporočena pot za dostop do trenutnega vedenja binarnega dnevnika.

Ali bo omogočanje popolnega kaskadnega beleženja bistveno poslabšalo zmogljivost pisanja?

Režijski stroški so resnični, vendar običajno skromni za sheme z dobro indeksiranimi odnosi tujih ključev. Dodatni zapisi v dnevnik so neposredno povezani s številom podrejenih vrstic, na katere vpliva vsaka kaskada. Sheme z globoko ugnezdenimi kaskadnimi verigami ali zelo velikimi podrejenimi tabelami lahko opazijo merljiv vpliv na prepustnost. Profiliranje z realnimi količinami podatkov v uprizoritvenem okolju pred uvedbo v produkcijo je pravilen pristop k kvantificiranju stroškov za vašo specifično delovno obremenitev.

Ali lahko uporabim kaskadne podatke binarnega dnevnika za dovajanje analitičnih cevovodov v realnem času?

Da, in to je eden najbolj prepričljivih primerov uporabe. S popolnimi kaskadnimi dogodki v binarnem dnevniku lahko orodja CDC zdaj sestavijo natančne materializirane poglede, iskalne indekse in tokove dogodkov, ne da bi za ročno objavo kaskadnih učinkov potrebovali kljuke na ravni aplikacije. Ekipe, ki gradijo nadzorne plošče v realnem času, sisteme za odkrivanje goljufij ali sloje operativne analitike, bodo ugotovile, da popolnost toka dnevnika znatno zmanjša kompleksnost cevovoda.


Upravljanje rastoče poslovne platforme pomeni, da se vaše osnovne infrastrukturne odločitve sčasoma povečajo – vrzel v vaši strategiji replikacije baze podatkov danes postane jutri incident v velikem obsegu. Mewayz je poslovni operacijski sistem s 207 moduli, ustvarjen za ekipe, ki nočejo sklepati kompromisov glede zanesljivosti ali zmogljivosti, zaupa mu več kot 138.000 uporabnikov, ki poganjajo vse od CRM in e-trgovine do upravljanja vsebine in analitike – vse v eni poenoteni platformi že od 19 $/mesec.

Začnite svoj delovni prostor Mewayz še danes na app.mewayz.com in zgradite svoje podjetje na infrastrukturi, ki je v koraku z vašim znanjem.

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