Hacker News

MySQL ārējās atslēgas kaskādes operācijas beidzot nokļuva binārajā žurnālā

MySQL ārējās atslēgas kaskādes operācijas beidzot nokļuva binārajā žurnālā Šī visaptverošā mysql analīze piedāvā detalizētu tā galveno komponentu un plašākas ietekmes pārbaudi. Galvenās fokusa jomas Diskusijas centrā ir: Pamatmehānisms...

11 min read Via readyset.io

Mewayz Team

Editorial Team

Hacker News

MySQL ārējās atslēgas kaskādes operācijas tagad tiek rādītas binārajā žurnālā, iezīmējot ilgi gaidītās izmaiņas, kas tieši ietekmē datubāzes vadītu lietojumprogrammu replikāciju, auditēšanu un datu atkopšanu. Šī uzvedības maiņa, kas pakāpeniski ieviesta MySQL versijās, novērš kritisko plaisu, kas iepriekš izraisīja klusu datu neatbilstības replicētās vidēs.

Kas ir svešās atslēgas kaskādes operācijas un kāpēc tās netika iekļautas binārajā žurnālā?

Svešo taustiņu ierobežojumi nodrošina atsauces integritāti starp tabulām. Ja definējat ON DELETE CASCADE vai ON UPDATE CASCADE, MySQL automātiski izplata izmaiņas no vecāktabulas uz saistītām pakārtotajām rindām. Gadiem ilgi šīs kaskādes izmaiņas darbojās kā neredzamas blakusparādības — palaišanas paziņojums tika reģistrēts, bet pakārtotās rindas, kuras ietekmēja kaskāde, netika reģistrētas kā neatkarīgi notikumi binārajā žurnālā.

Tā nebija nolaidība. MySQL komanda sākotnēji uzskatīja, ka kopijas, kurām ir viena un tā pati shēma un ārējās atslēgas definīcijas, automātiski reproducēs kaskādes, kad tiks atskaņots primārais paziņojums. Loģika pastāvēja līdz brīdim, kad tā nenotika. Shēmas novirze, daļējas replikācijas filtri, dažādas uzglabāšanas programmas konfigurācijas un tūlītējas atkopšanas scenāriji atklāja šī pieņēmuma trauslumu. Viena nokavēta kaskāde var radīt atšķirīgas kopijas, kas šķita veselīgas, līdz ražošanai svarīgie vaicājumi atgrieza nepareizus rezultātus.

Kā faktiski darbojas jaunā kaskādes reģistrēšanas darbība?

Izmantojot atjaunināto darbību, MySQL ieraksta rindas, kuras ietekmē kaskādes darbības, kā skaidrus rindu notikumus binārajā žurnālā tūlīt pēc aktivizējošā DML priekšraksta. Ja izdzēšat vecāku ierakstu un trīs pakārtotie ieraksti tiek pārvietoti, visas četras rindu izmaiņas tagad tiek rādītas kā atšķirīgi, pārbaudāmi žurnāla ieraksti.

Šeit svarīgs ir reģistrēšanas formāts. Rindu bāzes binārā reģistrēšana (RBL) ir formāts, kas to nodrošina ar pilnu precizitāti. Uz paziņojumiem balstīta reģistrēšana nevar droši tvert dinamiskās kaskādes rezultātus, jo rezultāts ir atkarīgs no datu stāvokļa izpildes laikā, nevis no paša SQL teksta. Jauktā režīma reģistrēšana šajās situācijās selektīvi piemēro rindas formātu.

Atslēgas ieskats: uz rindu balstītas binārās reģistrēšanas iespējošana nav tikai replikācijas preference — tagad tā ir priekšnoteikums, lai iegūtu pilnīgu, pārbaudāmu audita izsekojamību par katru datu izmaiņu sistēmās, kurās tiek izmantoti ārējās atslēgas ierobežojumi. Bez tā kaskādes efekti jūsu rīkiem paliek daļēji neredzami.

Datu bāzes administratoriem ir jāpārbauda savs binlog_format iestatījums un jāpārskata replikācijas topoloģijas pieņēmumi, ja viņi vēsturiski ir paļāvušies uz replikācijas puses kaskādes izpildi, lai nodrošinātu konsekvenci.

Kādas reālās problēmas tas atrisina lietojumprogrammu komandām?

Iespējas pārsniedz teorētisko replikācijas pareizību. Komandas, kas izmanto sarežģītas biznesa platformas ar relāciju datu modeļiem — vairāku nomnieku SaaS produkti, e-komercijas dzinēji, veselības aprūpes ierakstu sistēmas — ir saskārušās ar konkrētiem atteices režīmiem, kurus šīs izmaiņas novērš:

  • Vienlaika atkopšanas precizitāte: datu bāzes atjaunošana uz brīdi pirms masveida dzēšanas tagad tver visus kaskādes pakārtotos dzēšanas gadījumus, ne tikai aktivizēšanas vaicājumu, tādējādi novēršot fantoma rindu atkārtotu parādīšanos pēc atkopšanas.
  • Mainīt datu tveršanas (CDC) konveijerus: tādi rīki kā Debezium un Maxwell, kas straumē bināros žurnāla notikumus uz Kafka vai citām krātuvēm, tagad saņem pilnu priekšstatu par katru datu mutāciju, nodrošinot precīzas pakārtotās projekcijas.
  • Audita un atbilstības reģistrēšana: reglamentētās nozares, kurām nepieciešama pilnīga datu līnija, tagad var precīzi izsekot, kuri pakārtotie ieraksti tika noņemti kādas vecākoperācijas rezultātā, izpildot audita prasības bez lietojumprogrammas līmeņa risinājumiem.
  • Reprodukcijas atšķirību noteikšana: pārraudzības rīki, kas salīdzina replikas rindu skaitu vai kontrolsummas ar primāro, tagad nodrošina precīzus žurnāla datus, lai ātri identificētu un diagnosticētu jebkādas novirzes.
  • Vairāku avotu un cirkulārā replikācija. Sarežģītas topoloģijas, kurām iepriekš bija jāatspējo ārējās atslēgas replikām, lai izvairītos no divkāršas kaskāžu lietošanas, iegūst strukturētāku, paredzamāku notikumu straumi, lai to pamatotu.

Kā datu bāzu arhitektiem vajadzētu pielāgot savas replikācijas un atkopšanas stratēģijas?

Kaskādes binārās reģistrēšanas pieņemšana nav pasīvs jauninājums — tas prasa apzinātu esošās infrastruktūras pārskatīšanu. Papildu žurnāla notikumi, ko ģenerē kaskādes, palielina bināro žurnālu apjomu, dažreiz ievērojami, atkarībā no tā, cik agresīvi jūsu shēmā tiek izmantoti kaskādes ierobežojumi. Arhitektiem ir jāņem vērā palielināts diska I/O, tīkla replikācijas joslas platums un žurnāla rotācijas frekvence.

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

Replikās komandām jāpārbauda, vai ārējās atslēgas ierobežojumi ir iespējoti vai atspējoti. Izplatīta vēsturiska prakse bija ārējo atslēgu atspējošana replikās (foreign_key_checks=OFF), lai ļautu primārajai veikt izpildi. Ja kaskādes tagad ir skaidri reģistrētas, šo reģistrēto kaskādes notikumu lietošana replikā, kas apstrādā arī savus ārējās atslēgas ierobežojumus, var izraisīt dublētu dzēšanu vai konfliktus. Konfigurācijas izlīdzināšana visā replikācijas ķēdē tagad ir svarīgāka nekā jebkad agrāk.

Komandām, kuras izmanto loģiskus dublēšanas rīkus, piemēram, mysqldump vai fiziskus dublēšanas risinājumus, piemēram, Percona XtraBackup, atjaunošanas procedūru pārskatīšana, izmantojot jauno žurnāla struktūru, nodrošina, ka atkopšanas izpildgrāmatas joprojām ir precīzas. Standarta ceturkšņa uzdevumam ir jābūt atkopšanas scenāriju pārbaudei stadiju vidēs, salīdzinot ar ražošanu reprezentatīviem datu apjomiem.

Kā tas ir salīdzinājumā ar to, kā PostgreSQL un citas datu bāzes apstrādā kaskādes reģistrēšanu?

PostgreSQL jau sen ir reģistrējis ārējo atslēgu kaskādes efektus kā pirmās klases WAL (Write-Ahead Log) ierakstus. Katra rinda, kurai pieskaras kaskādes aktivizētājs, tiek ierakstīta WAL atsevišķi, padarot PostgreSQL replikāciju un loģisko dekodēšanu kaskādes ziņā. Šī dizaina filozofija — reģistrēt visus efektus, nevis tikai cēloņus — tagad vairāk atbilst MySQL rindu binārajam žurnālam.

Microsoft SQL Server līdzīgi tver kaskādes izmaiņas, izmantojot darījumu žurnālu rindu līmenī, padarot CDC risinājumus SQL serverī vienkāršus pat sarežģītām relāciju shēmām. MySQL atjauninājums nodrošina to ciešāku arhitektūras līdzību ar šīm sistēmām, samazinot galveno iebildumu, ko izvirzīja datu bāzes inženieri, novērtējot MySQL augstas integritātes relāciju darba slodzes.

Organizācijām, kas izmanto vairāku datu bāzu vidi vai novērtē migrācijas ceļus, šī konverģence ir svarīga. Tas samazina uzvedības virsmas laukumu starp platformām, kas operāciju komandām ir jāsaprot un jāņem vērā rīkos un procedūrās.

Bieži uzdotie jautājumi

Vai šīs izmaiņas ietekmē MySQL 5.7 vai tikai MySQL 8.x?

Kaskādes reģistrēšanas uzvedības uzlabojumi galvenokārt ir saistīti ar MySQL 8.0 un jaunākām versijām, ar īpašiem uzlabojumiem, kas saistīti ar atsevišķiem 8.0.x sērijas punktu laidieniem. MySQL 5.7 darbības beigas sasniedza 2023. gada oktobrī, un komandām, kas to joprojām izmanto, replicēšanas konsekvences nolūkos kaskādes reģistrēšanas darbība ir jāuzskata par neuzticamu. Jaunināšana uz MySQL 8.0 vai MySQL 8.4 LTS ir ieteicamais ceļš, lai piekļūtu pašreizējai binārā žurnāla darbībai.

Vai pilnas kaskādes reģistrēšanas iespējošana būtiski pasliktinās rakstīšanas veiktspēju?

Pieskaitāmās izmaksas ir reālas, bet parasti pieticīgas shēmām ar labi indeksētām ārējās atslēgas attiecībām. Papildu žurnāla ieraksti tieši korelē ar katras kaskādes ietekmēto pakārtoto rindu skaitu. Shēmām ar dziļi ligzdotām kaskādes ķēdēm vai ļoti lielām pakārtotajām tabulām var būt izmērāma caurlaidspējas ietekme. Profilēšana ar reālistisku datu apjomu iestudēšanas vidē pirms ieviešanas ražošanā ir pareizā pieeja, lai noteiktu izmaksas jūsu konkrētajai darba slodzei.

Vai es varu izmantot bināro žurnālu kaskādes datus, lai ievadītu reāllaika analītikas cauruļvadus?

Jā, un šis ir viens no pārliecinošākajiem lietošanas gadījumiem. Izmantojot pilnīgus kaskādes notikumus binārajā žurnālā, CDC rīki tagad var izveidot precīzus materializētus skatus, meklēšanas indeksus un notikumu straumes, nepieprasot lietojumprogrammas līmeņa āķus, lai manuāli publicētu kaskādes efektus. Komandas, kas veido reāllaika informācijas paneļus, krāpšanas atklāšanas sistēmas vai operatīvās analīzes slāņus, konstatēs, ka žurnālu straumes pilnīgums ievērojami samazina konveijera sarežģītību.


Pieaugošas biznesa platformas pārvaldība nozīmē, ka jūsu pamatā esošie lēmumi par infrastruktūru laika gaitā tiek apvienoti — šodienas datu bāzes replikācijas stratēģijas trūkums rīt kļūs par liela mēroga incidentu. Mewayz ir 207 moduļu biznesa operētājsistēma, kas izstrādāta komandām, kuras atsakās no kompromisiem attiecībā uz uzticamību vai iespējām, un kurai uzticas vairāk nekā 138 000 lietotāju, kuri izmanto visu, sākot no CRM un e-komercijas līdz satura pārvaldībai un analītikai — viss vienā vienotā platformā, sākot no tikai USD 19 mēnesī.

Sāciet savu Mewayz darbvietu jau šodien vietnē app.mewayz.com un izveidojiet savu biznesu, izmantojot infrastruktūru, kas seko līdzi tam, ko zināt.

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