WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Mwen sijere ou li transkripsyon rapò kòmansman 2020 Georgy Rylov "WAL-G: nouvo opòtinite ak ekspansyon kominote a"

Mantenè sous louvri yo fè fas a anpil defi pandan y ap grandi. Ki jan yo ekri pi plis ak plis karakteristik obligatwa, ranje pi plis ak plis pwoblèm ak jere yo wè pi plis ak plis demann rale? Sèvi ak WAL-G (backup-tool for PostgreSQL) kòm yon egzanp, mwen pral di w ki jan nou rezoud pwoblèm sa yo nan lanse yon kou sou devlopman Open-source nan inivèsite a, ki sa nou reyalize ak ki kote nou pral deplase pwochen.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Bonjou tout moun ankò! Mwen se yon pwomotè Yandex soti nan Yekaterinburg. E jodia map pale de WAL-G.

Tit rapò a pa t 'di ke li te yon bagay sou sovgad. Èske gen moun ki konnen ki sa WAL-G ye? Oubyen èske tout moun konnen? Leve men ou si ou pa konnen. Merde, ou te vini nan rapò a epi ou pa konnen ki sa li sou.

Kite m di w sa ki pral rive jodi a. Sa rive ke ekip nou an te fè sovgad pou kèk tan. Ak sa a se yon lòt rapò nan yon seri kote nou pale sou fason nou estoke done an sekirite, an sekirite, pratik ak efikasite.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Nan seri anvan yo te gen anpil rapò pa Andrei Borodin ak Vladimir Leskov. Te gen anpil nan nou. Epi nou ap pale de WAL-G depi plizyè ane.

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

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

Rapò sa a pral yon ti kras diferan de lòt yo nan ke li te plis sou pati teknik la, men isit la mwen pral pale sou fason nou te rankontre pwoblèm ki asosye ak kwasans kominote a. Ak ki jan nou te vini ak yon ti lide ki ede nou fè fas ak sa a.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Kèk ane de sa, WAL-G se te yon ti pwojè ke nou te resevwa nan Citus Data. Epi nou jis pran li. Epi li te devlope pa yon sèl moun.

Epi sèlman WAL-G pa t gen:

  • Sovgad soti nan yon kopi.
  • Pa te gen okenn sovgad incrémentielle.
  • Pa te gen okenn sovgad WAL-Delta.
  • Epi te gen anpil bagay ki manke toujou.

Pandan kèk ane sa yo, WAL-G te grandi anpil.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Ak nan 2020, tout sa ki anwo yo te deja parèt. Ak sa a te ajoute sa nou genyen kounye a:

  • Plis pase 1 zetwal sou GitHub.
  • 150 fouchèt.
  • Apeprè 15 PR ouvè.
  • Ak anpil lòt kontribitè.
  • Ak pwoblèm louvri tout tan. Ak sa a malgre lefèt ke nou literalman ale la chak jou epi fè yon bagay sou li.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Epi nou te rive nan konklizyon ke pwojè sa a mande plis nan atansyon nou, menm lè nou menm nou pa bezwen aplike anyen pou sèvis Jere baz done nou an nan Yandex.

Ak yon kote nan sezon otòn la nan 2018, yon lide te vin nan lespri nou. Anjeneral ekip la gen plizyè fason pou devlope kèk karakteristik oswa ranje pinèz si ou pa gen ase men. Pou egzanp, ou ka anboche yon lòt pwomotè epi peye l 'lajan. Oswa ou ka pran yon entèn pou yon ti tan epi tou peye l 'kèk salè. Men, gen toujou byen yon gwo gwoup moun, kèk nan yo ki deja vrèman konnen ki jan yo ekri kòd. Ou jis pa toujou konnen ki kalite kòd la se.

Nou te reflechi sou sa e nou te deside eseye atire elèv yo. Men, elèv yo pap patisipe nan tout bagay avèk nou. Yo pral sèlman fè kèk pati nan travay la. Epi yo pral, pou egzanp, ekri tès, ranje pinèz, aplike karakteristik ki pa afekte fonksyonalite prensipal la. Fonksyonalite prensipal la se kreye sovgad ak restore sovgad. Si nou fè yon erè nan kreye yon backup, nou pral fè eksperyans pèt done. E pa gen moun ki vle sa a, nan kou. Tout moun vle tout bagay yo dwe trè an sekirite. Se poutèt sa, nan kou, nou pa vle kite kòd ke nou fè konfyans mwens pase pwòp pa nou an. Sa vle di, nenpòt kòd ki pa kritik se sa nou ta renmen resevwa nan men lòt travayè nou yo.

Nan ki kondisyon yo aksepte PR elèv yo?

  • Yo oblije kouvri kòd yo ak tès yo. Tout bagay ta dwe pran plas nan CI.
  • E nou tou nou pas atraver 2 revi. Youn pa Andrey Borodin ak youn pa mwen.
  • Epi anplis de sa, tcheke ke sa a pa pral kraze anyen nan sèvis nou an, mwen separeman telechaje asanble a ak komèt sa a. Epi nou tcheke nan tès fen-a-fen ke pa gen anyen echwe.

Kou espesyal sou Open Source

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Yon ti kras sou poukisa sa a nesesè ak poukisa sa a, mwen sanble, se yon lide fre.

Pou nou, pwofi a se evidan:

  • Nou jwenn men anplis.
  • Epi nou ap chèche kandida pou ekip la nan mitan elèv entelijan ki ekri kòd entelijan.

Ki benefis pou elèv yo?

Yo ka mwens evidan, paske elèv yo, nan yon minimòm, pa resevwa lajan pou kòd yo ekri a, men sèlman resevwa nòt pou dosye elèv yo.

Mwen mande yo sou sa. Ak nan pawòl yo:

  • Eksperyans kontribitè nan Open Source.
  • Jwenn yon liy nan CV ou.
  • Pwouve tèt ou epi pase yon entèvyou nan Yandex.
  • Vin yon manm GSoC.
  • +1 kou espesyal pou moun ki vle ekri kòd.

Mwen pa pral pale sou ki jan kou a te estriktire. Mwen pral jis di ke WAL-G te pwojè prensipal la. Nou enkli tou pwojè tankou Odyssey, PostgreSQL ak ClickHouse nan kou sa a.

Apre sa, yo te bay pwoblèm pa sèlman nan kou sa a, men tou te bay soti diplòm ak kou.

E benefis pou itilizatè yo?

Kounye a, ann ale nan pati ki pi enterese w la. Ki sa ki byen sa a fè ou? Pwen an se ke elèv yo ranje yon anpil nan pinèz. Epi nou te fè karakteristik demann ou te mande nou fè yo.

Apre sa, kite m 'di nou sou bagay sa yo ke ou te vle depi lontan ak ki te reyalize.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Tablespaces sipò. Tablespaces nan WAL-G yo te espere pwobableman depi liberasyon WAL-G, paske WAL-G se siksesè nan yon lòt zouti backup WAL-E, kote sovgad baz done ak tablespace yo te sipòte.

Kite m 'fè ou sonje yon ti tan ki sa li ye ak poukisa li nan tout nesesè. Tipikman, tout done Postgres ou yo okipe yon sèl anyè sou sistèm fichye a, yo rele baz la. Ak anyè sa a deja genyen tout fichye yo ak sous-dosye Postgres mande yo.

Tablespaces yo se anyè ki genyen done Postgres, men yo pa sitiye deyò anyè baz la. Slide a montre ke tablespacs yo sitiye deyò anyè baz la.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Ki jan sa sanble pou Postgres li menm? Gen yon sou-anyè apa pg_tblspc nan anyè baz la. Epi li gen lyen senbolik nan anyè ki aktyèlman gen done Postgres deyò anyè baz la.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Lè ou sèvi ak tout bagay sa yo, lè sa a pou ou kòmandman sa yo ka sanble yon bagay tankou sa a. Sa vle di, ou kreye yon tab nan kèk tablespace espesifye epi wè kote li ye kounye a. Sa yo se de dènye liy yo, de dènye kòmandman yo rele. Epi la li klè ke gen yon fason. Men, an reyalite, sa a se pa yon fason reyèl. Sa a se chemen an prefiks soti nan anyè baz la nan espas tab. Epi soti nan la li matche ak yon lyen senbolik ki mennen nan done reyèl ou yo.

Nou pa sèvi ak tout sa a nan ekip nou an, men li te itilize pa anpil lòt itilizatè WAL-E ki te ekri nou ke yo te vle deplase nan WAL-G, men sa a te sispann yo. Sa a se kounye a sipòte.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Yon lòt karakteristik ke kou espesyal nou an te pote nou se ratrapaj. Moun ki te pwobableman travay plis ak Oracle pase ak Postgres konnen sou ratrapaj.

Yon ti tan sou sa li ye. Topoloji gwoup la nan sèvis nou an ka anjeneral sanble yon bagay tankou sa a. Nou gen yon mèt. Gen yon kopi ki koule ekriti-ahead soti nan li. Epi kopi a di mèt la ki LSN li ye kounye a. Ak yon kote nan paralèl ak sa a, boutèy la ka achiv. Epi anplis achiv boutèy la, sovgad yo voye tou nan nwaj la. Ak sovgad delta yo voye.

Ki sa ki ta ka pwoblèm nan? Lè ou gen yon baz done jistis gwo, li ka vire soti ke kopi ou a kòmanse lag byen lwen dèyè mèt la. Apre sa, li twò lwen dèyè ke li pa janm ka ratrape avè l '. Pwoblèm sa a anjeneral bezwen rezoud yon jan kanmenm.

Ak fason ki pi fasil la se retire kopi a epi re-upload li, paske li p ap janm ratrape, ak pwoblèm nan bezwen yo dwe fè fas ak. Men, sa a se yon bon bout tan, paske restore yon backup baz done 10 TB se yon tan trè, trè long. E nou vle fè tout bagay sa yo pi vit posib si pwoblèm sa yo rive. E se pou sa egzakteman catchup.

Catchup pèmèt ou sèvi ak sovgad delta, ki estoke nan nwaj la nan fason sa a. Ou di ki LSN kopi lagging la kounye a sou epi presize li nan lòd la ratrapaj yo nan lòd yo kreye yon backup delta ant LSN sa a ak LSN kote gwoup ou a ye kounye a. Apre sa, ou retabli backup sa a nan kopi a ki te retade dèyè.

Lòt baz

Elèv yo tou te pote nou anpil nan karakteristik nan yon fwa. Depi nan Yandex nou kwit manje pa sèlman Postgres, nou gen tou MySQL, MongoDB, Redis, ClickHouse, nan kèk pwen nou te bezwen kapab fè sovgad ak rekiperasyon pwen nan tan pou MySQL, epi pou ke te gen yon opòtinite yo Upload. yo nan nwaj la.

Epi nou te vle fè li nan kèk fason ki sanble ak sa WAL-G fè. Apre sa, nou deside fè eksperyans ak wè ki jan li ta tout gade.

Ak nan premye, san yo pa pataje lojik sa a nan okenn fason, yo te ekri kòd la nan fouchèt la. Yo te wè ke nou gen kèk kalite modèl k ap travay epi li ka vole. Lè sa a, nou te panse ke kominote prensipal nou an se postgresists, yo sèvi ak WAL-G. Se poutèt sa nou bezwen yon jan kanmenm separe pati sa yo. Sa vle di, lè nou modifye kòd pou Postgres, nou pa kraze MySQL; lè nou edite MySQL, nou pa kraze Postgres.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Premye lide sou fason pou separe sa a se te lide pou itilize menm apwòch ki itilize nan ekstansyon PostgreSQL. Epi, an reyalite, fè yon backup MySQL ou te oblije enstale kèk kalite bibliyotèk dinamik.

Men, isit la asimetri apwòch sa a se imedyatman vizib. Lè ou fè backup Postgres, ou mete yon backup nòmal pou Postgres sou li epi tout bagay anfòm. Ak pou MySQL li vire soti ke ou enstale yon backup pou Postgres epi tou enstale yon bibliyotèk dinamik pou MySQL pou li. Li son kalite etranj. Nou te panse sa tou e nou te deside ke se pa solisyon nou te bezwen an.

Divès kalite bati pou Postgres, MySQL, MongoDB, Redis

Men, sa te pèmèt nou, sanble nou, pou nou pran bon desizyon an - pou nou asiyen diferan asanble pou diferan baz. Sa te fè li posib pou izole lojik ki mare nan sovgad divès baz done ki pral jwenn aksè nan API komen ke WAL-G aplike.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Sa a se pati ke nou te ekri tèt nou - anvan bay elèv yo pwoblèm yo. Sa vle di, sa a se egzakteman pati kote yo te kapab fè yon bagay ki mal, se konsa nou deside ke nou ta pi bon fè yon bagay konsa ak tout bagay pral byen.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Apre sa nou bay pwoblèm. Yo te imedyatman demoute. Elèv yo te oblije sipòte twa baz.

Sa a se MySQL, ke nou te fè bak lè l sèvi avèk WAL-G nan fason sa a pou plis pase yon ane.

Epi kounye a MongoDB ap apwoche pwodiksyon, kote yo ap fini li ak yon dosye. An reyalite, nou te ekri kad pou tout bagay sa yo. Lè sa a, elèv yo te ekri kèk bagay travayabl. Apre sa, nou mennen yo nan yon eta ke nou ka aksepte nan pwodiksyon an.

Pwoblèm sa yo pa t sanble elèv yo te bezwen ekri zouti backup konplè pou chak nan baz done sa yo. Nou pat gen yon pwoblèm konsa. Pwoblèm nou an te ke nou te vle rekiperasyon pwen nan tan epi nou te vle backup nan nwaj la. Apre sa, yo mande elèv yo pou yo ekri kèk kòd ki ta rezoud sa a. Elèv yo te itilize zouti backup ki deja egziste, ki yon jan kanmenm pran sovgad, ak Lè sa a, kole li tout ansanm ak WAL-G, ki voye li tout nan nwaj la. Epi yo te ajoute tou rekiperasyon pwen-an-tan nan sa a.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Ki lòt bagay elèv yo pote? Yo te pote sipò chifreman Libsodium nan WAL-G.

Nou gen tou règleman depo backup. Koulye a, sovgad yo ka make kòm pèmanan. Ak yon jan kanmenm li pi pratik pou sèvis ou a otomatize pwosesis la nan estoke yo.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Ki rezilta eksperyans sa a?

Plis pase 100 moun okòmansman anrejistre pou kou a. Okòmansman, mwen pa t 'di ke inivèsite a nan Yekaterinburg se Ural Federal University. Nou te anonse tout bagay la. 100 moun ki anrejistre. An reyalite, anpil mwens moun te kòmanse fè yon bagay, anviwon 30 moun.

Menm mwens moun te konplete kou a, paske li te nesesè yo ekri tès pou kòd yo ki deja egziste. Epi tou ranje kèk ensèk oswa fè kèk karakteristik. Ak kèk elèv toujou fèmen kou a.

Kounye a, pandan kou sa a, elèv yo te fikse anviwon 14 pwoblèm epi fè 10 karakteristik diferan gwosè. Epi, li sanble m ', sa a se yon ranplasman plen véritable nan youn oubyen de devlopè.

Pami lòt bagay, nou te bay diplòm ak kou. E 12 te resevwa diplòm. 6 nan yo te deja defann tèt yo nan "5". Moun ki rete yo poko gen pwoteksyon, men mwen panse ke tout bagay pral bon pou yo tou.

Plan pou lavni

Ki plan nou genyen pou lavni?

Omwen demann karakteristik sa yo ke nou te deja tande nan men itilizatè yo epi nou vle fè. Sa a:

  • Siveyans kòrèkteman swivi delè nan achiv backup gwoup HA. Ou ka fè sa ak WAL-G. E mwen panse ke nou pral gen etidyan ki pral pran pwoblèm sa a.
  • Nou deja gen yon moun ki responsab pou transfere sovgad ak WAL ant nwaj yo.
  • Epi nou dènyèman te pibliye yon lide ke nou ka akselere WAL-G menm pi lwen lè nou depake sovgad incrémentielle san yo pa reekri paj ak optimize achiv yo nou voye la.

Ou ka pataje yo isit la

Pou kisa rapò sa te ye? Anplis de sa, kounye a, anplis de 4 moun ki sipòte pwojè sa a, nou gen men anplis, ki gen anpil. Sitou si w ekri yo nan yon mesaj pèsonèl. Men, si ou fè backup done ou yo epi fè li lè l sèvi avèk WAL-G oswa ou ta renmen deplase nan WAL-G, Lè sa a, nou ka byen fasil akomode volonte ou.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Sa a se yon kòd QR ak yon lyen. Ou ka ale nan yo epi ekri tout volonte ou. Pou egzanp, nou pa ap repare kèk ensèk. Oswa ou reyèlman vle kèk karakteristik, men pou kèk rezon li poko nan nenpòt ki backup, ki gen ladan nou an. Asire w ou ekri sou sa.

WAL-G: nouvo karakteristik ak ekspansyon kominote a. Georgy Rylov

Kesyon ou yo

Bonjou! Mèsi pou rapò a! Kesyon sou WAL-G, men se pa sou Postgres. WAL-G fè bak MySQL epi li rele yon backup siplemantè. Si nou pran enstalasyon modèn sou CentOS epi si w fè yum enstale MySQL, MariDB pral enstale. Soti nan vèsyon 10.3 siplemantè backup pa sipòte, MariDB backup sipòte. Kòman w ap fè ak sa?

Nan moman sa a nou pa te eseye fè backup MariDB. Nou te gen demann pou sipò FoundationDB, men an jeneral, si gen yon demann konsa, Lè sa a, nou ka jwenn moun ki pral fè li. Li pa osi long oswa difisil ke mwen panse.

Bon apremidi Mèsi pou rapò a! Kesyon sou potansyèl nouvo karakteristik. Èske w pare pou w fè WAL-G travay ak kasèt pou w ka fè backup sou kasèt?

Sovgad sou depo kasèt aparamman vle di?

Wi.

Gen Andrei Borodin, ki moun ki ka reponn kesyon sa a pi byen pase mwen.

(Andrey) Wi, mèsi pou kesyon an! Nou te gen yon demann yo transfere yon backup nan kasèt soti nan depo nwaj. E pou sa siye transfè ant nwaj yo. Paske transfè nwaj-a-nwaj se yon vèsyon jeneralize transfè kasèt. Anplis de sa, nou gen yon achitekti extensible an tèm de Depo. By wout la, anpil Storoges te ekri pa elèv yo. Men, si ou ekri Depo pou kasèt, Lè sa a, li pral, nan kou, dwe sipòte. Nou pare pou konsidere demann pull. Gen ou bezwen ekri yon fichye, li yon fichye. Si ou fè bagay sa yo nan Go, anjeneral ou fini ak 50 liy kòd. Lè sa a, kasèt yo pral sipòte nan WAL-G.

Mèsi pou rapò a! Pwosesis devlopman enteresan. Sovgad se yon moso serye nan fonksyonalite ki ta dwe byen kouvri pa tès yo. Lè ou te aplike fonksyonalite pou nouvo baz done, èske elèv yo te ekri tès yo tou, oswa èske ou te ekri tès yo tèt ou epi answit bay elèv yo aplikasyon an?

Elèv yo te ekri tès yo tou. Men, elèv yo te ekri plis pou karakteristik tankou nouvo baz done. Yo te ekri tès entegrasyon. Epi yo te ekri tès inite yo. Si entegrasyon an pase, se sa ki, nan moman sa a, sa a se yon script ke ou egzekite manyèlman oswa ou gen cron fè li, pou egzanp. Sa vle di, script la trè klè.

Elèv yo pa gen anpil eksperyans. Èske revize pran anpil tan?

Wi, revi pran anpil tan. Sa vle di, anjeneral, lè plizyè committers vini nan yon fwa epi yo di ke mwen te fè sa a, mwen te fè sa, Lè sa a, ou bezwen reflechi epi mete sou kote apeprè mwatye yon jou pou evalye sa yo te ekri la. Paske kòd la dwe li ak anpil atansyon. Yo pa t gen yon entèvyou. Nou pa konnen yo trè byen, kidonk li pran yon kantite tan enpòtan.

Mèsi pou rapò a! Précédemment, Andrey Borodin te deklare ke archive_command nan WAL-G ta dwe rele dirèkteman. Men, nan ka a nan kèk kalite katouch grap, nou bezwen plis lojik detèmine ne ki soti nan ki voye arbr yo. Ki jan ou rezoud pwoblèm sa a tèt ou?

Ki pwoblèm ou genyen isit la? Ann di ou gen yon kopi synchrone ak ki w ap fè yon backup? Oswa ki sa?

(Andrey) Reyalite a se ke tout bon WAL-G gen entansyon yo dwe itilize san scripts koki. Si yon bagay ki manke, ann ajoute lojik ki ta dwe andedan WAL-G. Kòm pou kote achiv ta dwe soti, nou kwè ke achiv yo ta dwe soti nan mèt aktyèl la nan gwoup la. Achiv soti nan yon kopi se yon move lide. Gen plizyè senaryo posib ak pwoblèm. An patikilye, pwoblèm ak delè achiv ak nenpòt enfòmasyon adisyonèl. Mèsi pou kesyon an!

(Klarizasyon: Nou te debarase m de scripts kokiy nan pwoblèm sa a)

Bonswa! Mèsi pou rapò a! Mwen enterese nan katchup karakteristik ou te pale sou. Nou te fè fas ak yon sitiyasyon kote yon kopi te dèyè epi li pa t 'kapab ratrape. Apre sa, mwen pa t 'jwenn yon deskripsyon nan karakteristik sa a nan dokiman WAL-G.

Catchup parèt literalman sou 20 janvye 2020. Dokiman an ta ka bezwen kèk travay plis. Nou ekri li tèt nou epi nou pa ekri li super byen. E petèt nou ta dwe kòmanse mande elèv yo ekri li.

Èske li deja lage?

Demann rale a deja mouri, sa vle di mwen tcheke li. Mwen te eseye sa a sou yon gwoup tès. Jiskaprezan nou pa te gen yon sitiyasyon kote nou te kapab teste sa a nan yon egzanp konba.

Ki lè pou atann?

M pa konnen. Tann yon mwa, nou pral tcheke pou asire w.

Sous: www.habr.com

Add nouvo kòmantè