WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Ég legg til að þú lesir afrit snemma árs 2020 skýrslu Georgy Rylov „WAL-G: ný tækifæri og stækkun samfélagsins“

Opinn uppspretta viðhaldsaðilar standa frammi fyrir mörgum áskorunum þegar þeir vaxa. Hvernig á að skrifa fleiri og fleiri nauðsynlega eiginleika, laga fleiri og fleiri vandamál og ná að skoða fleiri og fleiri dráttarbeiðnir? Með því að nota WAL-G (afritunartól fyrir PostgreSQL) sem dæmi, mun ég segja þér hvernig við leystum þessi vandamál með því að setja af stað námskeið um opinn uppspretta þróun í háskólanum, hverju við náðum og hvert við förum næst.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Halló aftur allir! Ég er Yandex verktaki frá Yekaterinburg. Og í dag mun ég tala um WAL-G.

Fyrirsögn skýrslunnar sagði ekki að það væri eitthvað um öryggisafrit. Veit einhver hvað WAL-G er? Eða vita allir? Réttu upp hönd ef þú veist það ekki. Sjitt, þú komst að skýrslunni og veist ekki um hvað hún snýst.

Leyfðu mér að segja þér hvað mun gerast í dag. Það vill svo til að teymið okkar hefur gert öryggisafrit í nokkuð langan tíma. Og þetta er önnur skýrsla í röð þar sem við tölum um hvernig við geymum gögn á öruggan, öruggan, þægilegan og skilvirkan hátt.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Í fyrri þáttaröðinni voru margar skýrslur eftir Andrei Borodin og Vladimir Leskov. Við vorum mörg. Og við höfum verið að tala um WAL-G í mörg ár.

clck.ru/F8ioz — https://www.highload.ru/moscow/2018/abstracts/3964

clck.ru/Ln8Qw — https://www.highload.ru/moscow/2019/abstracts/5981

Þessi skýrsla verður aðeins frábrugðin hinum að því leyti að hún snerist meira um tæknilega hlutann, en hér mun ég tala um hvernig við lentum í vandamálum tengdum vexti samfélagsins. Og hvernig okkur datt í hug litla hugmynd sem hjálpar okkur að takast á við þetta.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Fyrir nokkrum árum var WAL-G frekar lítið verkefni sem við fengum frá Citus Data. Og við tókum það bara. Og það var þróað af einum einstaklingi.

Og aðeins WAL-G hafði ekki:

  • Afrit af eftirmynd.
  • Það voru engin stigvaxandi öryggisafrit.
  • Það voru engin WAL-Delta öryggisafrit.
  • Og það vantaði enn mikið.

Á þessum fáu árum hefur WAL-G vaxið mikið.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Og árið 2020 hefur allt ofangreint þegar birst. Og við þetta bættist það sem við höfum núna:

  • Meira en 1 stjörnur á GitHub.
  • 150 gafflar.
  • Um 15 opnir PR.
  • Og margir fleiri þátttakendur.
  • Og opin mál allan tímann. Og þetta þrátt fyrir að við bókstaflega förum þangað á hverjum degi og gerum eitthvað í málinu.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Og við komumst að þeirri niðurstöðu að þetta verkefni krefst meiri athygli okkar, jafnvel þegar við sjálf þurfum ekki að innleiða neitt fyrir Stýrða gagnagrunnaþjónustuna okkar í Yandex.

Og einhvers staðar haustið 2018 kom hugmynd upp í huga okkar. Venjulega hefur teymið nokkrar leiðir til að þróa suma eiginleika eða laga villur ef þú hefur ekki nægar hendur. Til dæmis geturðu ráðið annan verktaki og borgað honum peninga. Eða þú getur tekið að þér starfsnema í smá tíma og borgað honum líka laun. En það er samt nokkuð stór hópur fólks, sem sumir kunna nú þegar að skrifa kóða. Maður veit bara ekki alltaf hvaða gæði kóðinn er.

Við veltum því fyrir okkur og ákváðum að reyna að laða að nemendur. En nemendur munu ekki taka þátt í öllu með okkur. Þeir munu aðeins gera hluta af verkinu. Og þeir munu til dæmis skrifa próf, laga villur, innleiða eiginleika sem hafa ekki áhrif á helstu virkni. Helsta virkni er að búa til afrit og endurheimta afrit. Ef við gerum mistök við að búa til öryggisafrit munum við upplifa gagnatap. Og þetta vill auðvitað enginn. Allir vilja að allt sé mjög öruggt. Þess vegna viljum við auðvitað ekki láta kóða sem við treystum minna en okkar eigin. Það er, hvaða kóða sem er ekki mikilvægur er það sem við viljum fá frá viðbótarstarfsmönnum okkar.

Við hvaða skilyrði er tekið á móti PR nemenda?

  • Þeir þurfa að hylja kóðann sinn með prófum. Allt ætti að fara fram í CI.
  • Og við förum líka í gegnum 2 umsagnir. Ein eftir Andrey Borodin og einn eftir mig.
  • Og að auki, til að ganga úr skugga um að þetta muni ekki brjóta neitt í þjónustu okkar, hleð ég upp samkomunni sérstaklega með þessari skuldbindingu. Og við athugum í end-to-end prófum að ekkert mistekst.

Sérstakt námskeið um Open Source

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Smá um hvers vegna þetta er þörf og hvers vegna þetta, að mér sýnist, er flott hugmynd.

Fyrir okkur er hagnaðurinn augljós:

  • Við fáum auka hendur.
  • Og við erum að leita að frambjóðendum í teymið meðal snjallra nemenda sem skrifa snjallkóða.

Hver er ávinningurinn fyrir nemendur?

Þær eru kannski síður augljósar, því nemendur fá að minnsta kosti ekki peninga fyrir kóðann sem þeir skrifa, heldur fá einungis einkunnir fyrir nemendaskrár sínar.

Ég spurði þá um þetta. Og með orðum þeirra:

  • Framlagsreynsla í Open Source.
  • Fáðu línu í ferilskrána þína.
  • Sannaðu sjálfan þig og farðu í viðtal í Yandex.
  • Gerast GSoC meðlimur.
  • +1 sérnámskeið fyrir þá sem vilja skrifa kóða.

Ég ætla ekki að tala um hvernig námið var byggt upp. Ég segi bara að WAL-G hafi verið aðalverkefnið. Við tókum líka inn verkefni eins og Odyssey, PostgreSQL og ClickHouse í þessu námskeiði.

Og þeir gáfu vandamál ekki aðeins í þessu námskeiði, heldur gáfu þeir líka prófskírteini og námskeið.

Hvað með ávinninginn fyrir notendur?

Nú skulum við halda áfram að hlutanum sem vekur mestan áhuga þinn. Hvaða gagn gerir þetta þér? Málið er að nemendur lagfærðu fullt af villum. Og við gerðum beiðnieiginleikana sem þú baðst okkur um að gera.

Og leyfðu mér að segja þér frá hlutunum sem þú hefur lengi langað til og hefur orðið að veruleika.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Stuðningur við borðpláss. Búist hefur verið við töfluplássum í WAL-G líklega síðan WAL-G kom út, því WAL-G er arftaki annars öryggisafritunarverkfæris WAL-E, þar sem öryggisafrit af gagnagrunni með töflurýmum voru studd.

Leyfðu mér að minna þig stuttlega á hvað það er og hvers vegna það er allt nauðsynlegt. Venjulega taka öll Postgres gögnin þín eina möppu á skráarkerfinu, sem kallast grunnurinn. Og þessi mappa inniheldur nú þegar allar skrár og undirmöppur sem krafist er af Postgres.

Tablespaces eru möppur sem innihalda Postgres gögn, en þau eru ekki staðsett utan grunnskrárinnar. Skyggnan sýnir að borðplássarnir eru staðsettir fyrir utan grunnskrána.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Hvernig lítur þetta út fyrir Postgres sjálft? Það er sérstök undirskrá pg_tblspc í grunnskránni. Og það inniheldur tákntengla í möppur sem innihalda í raun Postgres gögn utan grunnskrárinnar.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Þegar þú notar allt þetta, þá gætu þessar skipanir litið eitthvað svona út fyrir þig. Það er, þú býrð til töflu í einhverju tilgreindu borðrými og sérð hvar hún er núna. Þetta eru síðustu tvær línurnar, síðustu tvær skipanir kallaðar. Og þar er ljóst að það er einhver leið. En í raun og veru er þetta ekki raunveruleg leið. Þetta er forskeytsslóðin frá grunnskránni að borðrýminu. Og þaðan er það samræmt við samkennd sem leiðir til raunverulegra gagna þinna.

Við notum þetta ekki allt í teyminu okkar, en það var notað af mörgum öðrum WAL-E notendum sem skrifuðu okkur að þeir vildu flytja til WAL-G, en þetta var að stoppa þá. Þetta er nú stutt.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Annar eiginleiki sem sérnámskeiðið okkar færði okkur er uppnám. Fólk sem hefur líklega unnið meira með Oracle en Postgres veit um catchup.

Stutt um hvað það er. Staðfræði klasa í þjónustu okkar gæti venjulega litið einhvern veginn svona út. Við eigum meistara. Það er eftirlíking sem streymir framskráningarskrá frá henni. Og eftirmyndin segir meistaranum á hvaða LSN hún er núna. Og einhvers staðar samhliða þessu er hægt að geyma annálinn. Og auk þess að geyma skrána í geymslu eru afrit einnig send í skýið. Og delta afrit eru send.

Hvað gæti verið vandamálið? Þegar þú ert með nokkuð stóran gagnagrunn getur komið í ljós að eftirmyndin þín byrjar að vera langt á eftir meistaranum. Og hún er svo aftarlega á eftir að hún getur aldrei náð honum. Þetta vandamál þarf yfirleitt að leysa einhvern veginn.

Og auðveldasta leiðin er að fjarlægja eftirmyndina og hlaða henni upp aftur, því hún mun aldrei ná sér, og það þarf að takast á við vandamálið. En þetta er frekar langur tími, því að endurheimta heilt 10 TB öryggisafrit af gagnagrunni er mjög, mjög langur tími. Og við viljum gera þetta allt eins fljótt og auðið er ef slík vandamál koma upp. Og það er einmitt til þess að ná tökum.

Catchup gerir þér kleift að nota delta afrit, sem eru geymd í skýinu á þennan hátt. Þú segir á hvaða LSN eftirlíkingin er núna og tilgreinir það í catchup skipuninni til að búa til delta öryggisafrit milli þess LSN og LSN sem þyrpingin þín er staðsett á. Og eftir það endurheimtirðu þetta öryggisafrit á eftirmyndina sem var eftir.

Aðrar bækistöðvar

Nemendurnir færðu okkur líka marga eiginleika í einu. Þar sem við hjá Yandex eldum ekki aðeins Postgres, við höfum líka MySQL, MongoDB, Redis, ClickHouse, á einhverjum tímapunkti þurftum við að geta tekið öryggisafrit með endurheimt á tíma fyrir MySQL, og svo að það væri tækifæri til að hlaða upp þá til skýsins.

Og við vildum gera það á einhvern svipaðan hátt og WAL-G gerir. Og við ákváðum að gera tilraunir og sjá hvernig allt myndi líta út.

Og í fyrstu, án þess að deila þessari rökfræði á nokkurn hátt, skrifuðu þeir kóðann í gaffalinn. Þeir sáu að við erum með einhvers konar vinnulíkan og það getur flogið. Þá héldum við að aðalsamfélagið okkar væri postgresists, þeir nota WAL-G. Og þess vegna þurfum við einhvern veginn að aðskilja þessa hluta. Það er að segja, þegar við breytum kóða fyrir Postgres brjótum við ekki MySQL; þegar við breytum MySQL brjótum við ekki Postgres.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Fyrsta hugmyndin um hvernig á að aðskilja þetta var hugmyndin um að nota sömu nálgun og er notuð í PostgreSQL viðbótum. Og í rauninni, til að gera MySQL öryggisafrit, þurftir þú að setja upp einhvers konar kraftmikið bókasafn.

En hér er ósamhverfa þessarar nálgun strax sýnileg. Þegar þú tekur afrit af Postgres seturðu venjulegt öryggisafrit fyrir Postgres á það og allt er í lagi. Og fyrir MySQL kemur í ljós að þú setur upp öryggisafrit fyrir Postgres og setur líka upp kraftmikið bókasafn fyrir MySQL fyrir það. Það hljómar svolítið undarlega. Við héldum það líka og ákváðum að þetta væri ekki lausnin sem við þurftum.

Ýmsar smíðir fyrir Postgres, MySQL, MongoDB, Redis

En þetta gerði okkur kleift, að því er okkur sýnist, að komast að réttri ákvörðun - að úthluta mismunandi þingum fyrir mismunandi bækistöðvar. Þetta gerði það mögulegt að einangra rökfræðina tengda öryggisafritum af ýmsum gagnagrunnum sem munu fá aðgang að sameiginlegu API sem WAL-G útfærir.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Þetta er hluturinn sem við skrifuðum sjálf - áður en við gáfum nemendum vandamálin. Það er, þetta er einmitt sá hluti þar sem þeir gætu gert eitthvað rangt, svo við ákváðum að við ættum að gera eitthvað eins og þetta og allt verður í lagi.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Eftir það gáfum við út vandamál. Þau voru strax tekin í sundur. Nemendum var gert að halda uppi þremur bækistöðvum.

Þetta er MySQL, sem við höfum tekið öryggisafrit af með WAL-G á þennan hátt í meira en ár.

Og nú nálgast MongoDB framleiðslu, þar sem þeir eru að klára hana með skrá. Reyndar skrifuðum við rammann fyrir þetta allt. Síðan skrifuðu nemendur nokkra framkvæmanlega hluti. Og svo komum við þeim í það ástand sem við getum sætt okkur við í framleiðslu.

Þessi vandamál leit ekki út fyrir að nemendur þyrftu að skrifa fullkomin öryggisafritunarverkfæri fyrir hvern þessara gagnagrunna. Við áttum ekki í slíkum vandræðum. Vandamálið okkar var að við vildum endurheimta á tímapunkti og við vildum taka öryggisafrit í skýið. Og þeir báðu nemendur að skrifa kóða sem myndi leysa þetta. Nemendur notuðu þegar fyrirliggjandi öryggisafritunarverkfæri, sem taka afrit á einhvern hátt, og límdu svo allt saman með WAL-G, sem sendi það allt í skýið. Og þeir bættu líka tímabundnum bata við þetta.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Hvað komu nemendur meira með? Þeir færðu Libsodium dulkóðunarstuðning til WAL-G.

Við erum líka með öryggisafritunarstefnu. Nú er hægt að merkja afrit sem varanlegt. Og einhvern veginn er þægilegra fyrir þjónustuna þína að gera sjálfvirkan ferlið við að geyma þær.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Hver var niðurstaða þessarar tilraunar?

Yfir 100 manns skráðu sig upphaflega á námskeiðið. Í fyrstu sagði ég ekki að háskólinn í Yekaterinburg væri Ural Federal University. Þar tilkynntum við allt. 100 manns skráðir. Í raun og veru fóru miklu færri að gera eitthvað, um 30 manns.

Enn færri luku námskeiðinu því það þurfti að skrifa próf fyrir þá kóða sem þegar eru til. Og líka laga einhverja villu eða búa til einhvern eiginleika. Og sumir nemendur lokuðu samt námskeiðinu.

Eins og er, á þessu námskeiði, hafa nemendur lagað um 14 mál og búið til 10 eiginleika af ýmsum stærðum. Og mér sýnist þetta vera fullgild skipti fyrir einn eða tvo forritara.

Við gáfum meðal annars út prófskírteini og námskeið. Og 12 fengu prófskírteini. 6 þeirra hafa þegar varið sig á „5“. Þeir sem eftir voru fengu ekki vernd ennþá en ég held að allt verði í lagi hjá þeim líka.

Áætlanir fyrir framtíðina

Hvaða áætlanir höfum við fyrir framtíðina?

Að minnsta kosti þessar eiginleikabeiðnir sem við höfum þegar heyrt frá notendum og viljum gera. Þetta:

  • Eftirlit með réttmæti tímalínurakningar í öryggisafritasafni HA klasans. Þú getur gert þetta með WAL-G. Og ég held að við verðum með nemendur sem munu taka þetta mál upp.
  • Við erum nú þegar með aðila sem ber ábyrgð á að flytja öryggisafrit og WAL á milli skýja.
  • Og við birtum nýlega hugmynd um að við getum hraðað WAL-G enn meira með því að taka upp stigvaxandi öryggisafrit án þess að endurskrifa síður og fínstilla skjalasafnið sem við sendum þangað.

Þú getur deilt þeim hér

Til hvers var þessi skýrsla? Þar að auki, nú, auk þeirra 4 aðila sem styðja þetta verkefni, höfum við fleiri hendur, sem það eru töluvert margar af. Sérstaklega ef þú skrifar þeim í persónulegum skilaboðum. Og ef þú tekur öryggisafrit af gögnunum þínum og gerir það með WAL-G eða vilt fara yfir í WAL-G, þá getum við auðveldlega komið til móts við óskir þínar.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

Þetta er QR kóða og tengill. Þú getur farið í gegnum þær og skrifað allar óskir þínar. Til dæmis erum við ekki að laga einhverja villu. Eða þú vilt virkilega einhvern eiginleika, en af ​​einhverjum ástæðum er hann ekki enn í neinu afriti, þar með talið okkar. Vertu viss um að skrifa um þetta.

WAL-G: nýir eiginleikar og stækkun samfélagsins. Georgy Rylov

spurningar

Halló! Takk fyrir skýrsluna! Spurning um WAL-G, en ekki um Postgres. WAL-G tekur afrit af MySQL og kallar á auka öryggisafrit. Ef við tökum nútíma uppsetningar á CentOS og ef þú setur upp MySQL, þá verður MariDB sett upp. Frá útgáfu 10.3 er auka öryggisafrit ekki stutt, MariDB öryggisafrit er stutt. Hvernig gengur þér með þetta?

Í augnablikinu höfum við ekki reynt að taka öryggisafrit af MariDB. Við höfum fengið beiðnir um FoundationDB stuðning, en almennt séð, ef það er slík beiðni, þá getum við fundið fólk sem mun gera það. Það er ekki eins langt eða eins erfitt og ég held.

Góðan daginn Takk fyrir skýrsluna! Spurning um hugsanlega nýja eiginleika. Ertu tilbúinn til að láta WAL-G virka með spólum svo þú getir tekið öryggisafrit á spólur?

Afritun á segulbandsgeymslu þýðir greinilega?

Já ég er.

Það er Andrei Borodin, sem getur svarað þessari spurningu betur en ég.

(Andrey) Já, takk fyrir spurninguna! Við fengum beiðni um að flytja öryggisafrit á spólu úr skýjageymslu. Og fyrir þetta saga flytja á milli skýja. Vegna þess að ský-til-ský flutningur er almenn útgáfa af segulbandsflutningi. Að auki höfum við teygjanlegan arkitektúr hvað varðar geymslur. Við the vegur, margir Storoges voru skrifaðar af nemendum. Og ef þú skrifar Geymsla fyrir spólu, þá verður það auðvitað stutt. Við erum tilbúin til að íhuga dráttarbeiðnir. Þar þarf að skrifa skrá, lesa skrá. Ef þú gerir þessa hluti í Go endarðu venjulega með 50 línur af kóða. Og þá verður spóla studd í WAL-G.

Takk fyrir skýrsluna! Áhugavert þróunarferli. Öryggisafritun er alvarleg virkni sem ætti að vera vel undir í prófunum. Þegar þú innleiddir virkni fyrir nýja gagnagrunna, skrifuðu nemendur líka prófin, eða skrifaðir þú prófin sjálfur og gafst síðan nemendum útfærsluna?

Nemendur skrifuðu einnig próf. En nemendur skrifuðu meira fyrir eiginleika eins og nýja gagnagrunna. Þeir skrifuðu samþættingarpróf. Og þeir skrifuðu einingapróf. Ef samþættingin stenst, það er að segja í augnablikinu, þá er þetta handrit sem þú keyrir handvirkt eða þú ert með cron sem gerir það, til dæmis. Það er að segja handritið þar er mjög skýrt.

Nemendur hafa ekki mikla reynslu. Tekur endurskoðun mikinn tíma?

Já, umsagnir taka frekar langan tíma. Semsagt, venjulega, þegar nokkrir boðberar koma í einu og segja að ég hafi gert þetta, þá gerði ég það, þá þarftu að hugsa og taka hálfan dag til hliðar til að fatta hvað þeir skrifuðu þar. Vegna þess að kóðann verður að lesa vandlega. Þeir fengu ekki viðtal. Við þekkjum þá ekki vel, svo það tekur talsverðan tíma.

Takk fyrir skýrsluna! Áður sagði Andrey Borodin að hringja ætti beint í archive_command í WAL-G. En ef um er að ræða einhvers konar klasahylki, þurfum við frekari rökfræði til að ákvarða hnútinn sem á að senda stokkana frá. Hvernig leysir þú þetta vandamál sjálfur?

Hvað er vandamál þitt hér? Segjum að þú sért með samstillta eftirmynd sem þú ert að gera öryggisafrit með? Eða hvað?

(Andrey) Staðreyndin er sú að sannarlega er ætlað að nota WAL-G án skeljaforskrifta. Ef eitthvað vantar, þá skulum við bæta við rökfræðinni sem ætti að vera inni í WAL-G. Hvað varðar hvaðan skjalavörslan ætti að koma, teljum við að skjalavörslan ætti að vera frá núverandi meistara í klasanum. Geymsla frá eftirmynd er slæm hugmynd. Það eru ýmsar mögulegar aðstæður með vandamálum. Einkum vandamál með tímalínur í geymslu og allar viðbótarupplýsingar. Takk fyrir spurninguna!

(Skýring: Við losnuðum við skeljaforskriftir í þessu tölublaði)

Gott kvöld! Takk fyrir skýrsluna! Ég hef áhuga á catchup eiginleikanum sem þú talaðir um. Við stóðum frammi fyrir aðstæðum þar sem eftirlíking var að baki og gat ekki náð okkur. Og ég fann ekki lýsingu á þessum eiginleika í WAL-G skjölum.

Catchup birtist bókstaflega þann 20. janúar 2020. Skjölin gætu þurft meiri vinnu. Við skrifum það sjálf og við skrifum það ekki frábærlega vel. Og kannski ættum við að fara að krefjast þess að nemendur skrifi það.

Er það þegar gefið út?

Pullbeiðnin er þegar dauð, þ.e.a.s. ég athugaði hana. Ég prófaði þetta á prufuklasa. Hingað til höfum við ekki haft aðstæður þar sem við gætum prófað þetta í bardagadæmi.

Hvenær má búast við?

Ég veit ekki. Bíddu í mánuð, við skoðum það fyrir víst.

Heimild: www.habr.com

Bæta við athugasemd