Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Mwen sijere ou li transkripsyon rapò a depi nan konmansman an nan 2019 pa Andrey Borodin "Sovgad ak WAL-G. Ki sa ki gen nan 2019?"

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Bonjou tout moun! Non mwen se Andrey Borodin. Mwen se yon pwomotè nan Yandex. Mwen te enterese nan PostgreSQL depi 2016, apre mwen te pale ak devlopè yo epi yo te di ke tout bagay se senp - ou pran kòd sous la epi bati li, ak tout bagay ap mache deyò. E depi lè sa a mwen pa ka sispann - mwen ekri tout kalite bagay diferan.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey BorodinYoun nan bagay mwen ap travay sou yo se yon sistèm backup. WAL-G. An jeneral, nan Yandex nou ap travay sou sistèm backup nan PostgreSQL pou yon tan trè lontan. Epi ou ka jwenn sou entènèt la yon seri de sis rapò sou fason nou fè sistèm backup. Epi chak ane yo evolye yon ti kras, devlope yon ti kras, epi yo vin pi serye.

Men jodi a rapò a se pa sèlman sou sa nou te fè, men tou sou ki jan li senp epi ki sa ki. Konbyen nan nou ki deja gade repòtaj mwen yo sou WAL-G? Li bon ke anpil moun pa t gade, paske mwen pral kòmanse ak bagay ki pi senp la.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Si toudenkou ou gen yon gwoup PostgreSQL, e mwen panse ke tout moun gen yon koup nan yo ak yo, epi toudenkou pa gen okenn sistèm backup ankò, Lè sa a, ou bezwen jwenn nenpòt depo S3 oswa Google Cloud konpatib depo.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Pou egzanp, ou ka vini nan kanpe nou an epi pran yon kòd pwomosyonèl pou Yandex Object Storage, ki se S3 konpatib.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Lè sa a, kreye yon bokit. Se jis yon veso pou enfòmasyon.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kreye yon itilizatè sèvis.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kreye yon kle aksè pou itilizatè sèvis la: aws-s3-key.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Telechaje dènye lage ki estab nan WAL-G.

Ki jan pre-release nou yo diferan de lage yo? Yo souvan mande m pou m lage bonè. Men, si pa gen okenn ensèk nan vèsyon an pou yon tan ase, pou egzanp, yon mwa, Lè sa a, mwen lage li. Isit la se lage sa a soti nan Novanm. Ak sa vle di ke chak mwa nou jwenn kèk kalite ensèk, anjeneral nan fonksyonalite ki pa kritik, men nou poko lage yon lage. Vèsyon anvan an se sèlman Novanm. Pa gen okenn pinèz nou konnen ladan l, sa vle di pinèz yo te ajoute pandan pwojè a ap pwogrese.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Yon fwa ou te telechaje WAL-G, ou ka kouri yon senp "lis backup" kòmandman, pase nan varyab anviwònman yo. Epi li pral konekte nan Depo objè epi li di w ki sovgad ou genyen. Nan premye, nan kou, ou pa ta dwe gen sovgad. Pwen an nan glise sa a se montre ke tout bagay se byen senp. Sa a se yon lòd konsole ki aksepte varyab anviwònman ak egzekite soukòmand.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Apre sa, ou ka fè premye backup ou. Di "backup-push" nan WAL-G epi presize nan WAL-G kote pgdata gwoup ou a. Epi gen plis chans, PostgreSQL ap di ou, si ou pa deja gen yon sistèm backup, ke ou bezwen pèmèt "achiv-mòd".

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Sa vle di ke ou bezwen ale nan paramèt epi vire sou "archive_mode = on" epi ajoute "archive_command", ki se tou yon soukòmand nan WAL-G. Men, pou kèk rezon, moun souvan itilize scripts ba sou sijè sa a epi vlope li nan WAL-G. Tanpri pa fè sa. Sèvi ak fonksyonalite yo jwenn nan WAL-G. Si w manke yon bagay, ekri GitHub. WAL-G sipoze ke se sèl pwogram ki kouri nan archive_command.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Nou itilize WAL-G sitou pou kreye yon gwoup Disponibilite segondè nan jesyon baz done Yandex.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Epi li se anjeneral yo itilize nan yon topoloji nan yon sèl Mèt ak plizyè replikasyon. An menm tan an, li fè yon kopi backup nan depo objè Yandex.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Senaryo ki pi komen yo se kreye kopi yon gwoup lè l sèvi avèk Point in time recovery. Men, nan ka sa a, pèfòmans nan sistèm nan backup pa tèlman enpòtan pou nou. Nou jis bezwen telechaje yon nouvo gwoup soti nan backup la.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Tipikman, nou bezwen pèfòmans sistèm backup lè ajoute yon nouvo ne. Poukisa li enpòtan? Tipikman, moun yo ajoute yon nouvo ne nan yon gwoup paske gwoup ki deja egziste a pa ka okipe chaj la lekti. Yo bezwen ajoute yon nouvo kopi. Si nou ajoute chaj la soti nan pg_basebackup nan Mèt la, Lè sa a, Mèt la ka tonbe. Se poutèt sa, li te trè enpòtan pou nou ke nou te kapab byen vit Upload yon nouvo ne soti nan achiv la, kreye chaj minimòm sou Mèt la.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Ak yon lòt sitiyasyon ki sanble. Sa a se nesesite pou rekòmanse ansyen Mèt la apre chanje Mèt Cluster la soti nan Sant Done ak koneksyon ki te pèdi.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

  • Kòm yon rezilta, lè fòmile kondisyon yo pou sistèm nan kopi, nou reyalize ke pg_basebackup pa apwopriye pou nou lè opere nan nwaj la.
  • Nou te vle pou kapab konprese done nou yo. Men, prèske nenpòt sistèm backup lòt pase sa ki vini nan bwat la pral bay konpresyon done.
  • Nou te vle paralelize tout bagay paske yon itilizatè nan nwaj la achte yon gwo kantite nwayo processeur. Men, si nou pa gen paralelis nan kèk operasyon, Lè sa a, yon gwo kantite nwayo vin initil.
  • Nou bezwen chifreman paske souvan done yo pa pou nou epi yo pa ka estoke nan tèks klè. By wout la, kontribisyon nou an nan WAL-G te kòmanse ak chifreman. Nou te konplete chifreman an nan WAL-G, apre sa yo te mande nou: "Petèt youn nan nou pral devlope pwojè a?" E depi lè sa a mwen te travay ak WAL-G pou plis pase yon ane.
  • Nou te bezwen tou throttling resous, paske apre yon tan lè l sèvi avèk nwaj la, nou te jwenn ke pafwa moun gen yon chaj makèt enpòtan nan mitan lannwit ak chaj sa a pa ka entèfere ak. Se poutèt sa nou te ajoute throttling resous yo.
  • Osi byen ke lis ak jesyon.
  • Ak verifikasyon.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Nou te gade yon anpil nan zouti diferan. Erezman, nou gen yon seleksyon gwo nan PostgreSQL. Ak tout kote nou te manke yon bagay, kèk yon ti fonksyon, kèk yon ti karakteristik.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Apre yo fin egzamine sistèm yo ki deja egziste, nou te rive nan konklizyon an ke nou pral devlope WAL-G. Lè sa a, se te yon nouvo pwojè. Li te byen fasil pou enfliyanse devlopman nan direksyon enfrastrikti nwaj sistèm backup la.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Ideoloji prensipal ke nou respekte se ke WAL-G ta dwe senp tankou yon balalaika.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

WAL-G gen 4 kòmandman. Sa a:

WAL-PUSH - achiv arbr a.

WAL-FETCH – jwenn yon arbr.

BACKUP-PUSH - fè yon backup.

BACKUP-FETCH - jwenn yon backup nan sistèm nan backup.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

An reyalite, WAL-G tou gen jesyon nan sovgad sa yo, sa vle di lis ak efase dosye ak sovgad nan istwa ki pa nesesè ankò nan moman sa a.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Youn nan fonksyon enpòtan pou nou se fonksyon kreye kopi delta.

Kopi Delta vle di ke nou pa kreye yon backup konplè nan tout gwoup la, men se sèlman paj yo chanje nan dosye yo chanje nan gwoup la. Li ta sanble ke fonksyonèl sa a trè menm jan ak kapasite nan refè lè l sèvi avèk WAL. Men, nou ka woule yon WAL sèl-threaded delta backup an paralèl. An konsekans, lè nou gen yon backup debaz ki fèt nan Samdi, sovgad delta chak jou, ak nan Jedi nou echwe, Lè sa a, nou bezwen woule moute 4 sovgad delta ak 10 èdtan nan WAL. Li pral pran apeprè menm tan an paske sovgad yo delta woule nan paralèl.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Deltas ki baze sou LSN - sa vle di ke lè nou kreye yon backup, nou pral bezwen konbine chak paj epi tcheke LSN li yo ak LSN nan backup anvan an yo nan lòd yo konprann ke li te chanje. Nenpòt paj ki kapab genyen done ki chanje yo ta dwe prezan nan backup delta a.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kòm mwen te di, yo te peye anpil atansyon sou paralelis.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Men, API achiv la nan PostgreSQL se konsistan. PostgreSQL achiv yon sèl dosye WAL epi lè restore li mande yon sèl dosye WAL. Men, lè baz done a mande yon sèl dosye WAL lè l sèvi avèk "WAL-FETCH" kòmandman an, nou rele "WAL-PREFETCH" kòmandman an, ki prepare pwochen 8 dosye yo chache done nan magazen an objè an paralèl.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey BorodinEpi lè baz done a mande nou achiv yon sèl dosye, nou gade nan archive_status epi wè si gen lòt dosye WAL. Epi nou tou ap eseye telechaje WAL an paralèl. Sa a bay yon pwogrè siyifikatif pèfòmans ak siyifikativman diminye distans ki genyen nan kantite WAL ki pa achiv yo. Anpil devlopè sistèm backup kwè ke sa a se tankou yon sistèm ki riske paske nou konte sou konesans nou nan entèn yo nan kòd ki pa API a PostgreSQL. PostgreSQL pa garanti prezans nan dosye a archive_status pou nou epi li pa garanti semantik la, prezans nan siyal preparasyon pou dosye WAL la. Poutan, nou ap etidye kòd sous la, nou wè ke sa a se konsa e nou ap eseye eksplwate li. Epi nou kontwole direksyon nan ki PostgreSQL ap devlope; si toudenkou mekanis sa a kase, nou pral sispann sèvi ak li.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Nan fòm pi li yo, WAL delta ki baze sou LSN mande pou li nenpòt fichye gwoup ki gen mòd-tan nan sistèm fichye a chanje depi backup anvan an. Nou te viv ak sa a pou yon tan long, prèske yon ane. Ak nan fen nou te rive nan konklizyon an ke nou gen WAL deltas.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey BorodinSa vle di ke chak fwa nou achiv WAL sou Mèt la, nou pa sèlman konprese li, ankripte li epi voye li nan rezo a, men nou tou li li an menm tan an. Nou analize epi li dosye ki ladan l. Nou konprann ki blòk yo te chanje epi kolekte fichye delta.

Yon fichye delta dekri yon sèten seri dosye WAL, dekri enfòmasyon sou ki blòk yo te chanje nan seri WAL sa a. Lè sa a, sa yo dosye delta yo tou achiv.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Isit la nou fè fas ak lefèt ke nou paralelize tout bagay byen vit, men nou pa ka li yon istwa sekans nan paralèl, paske nan yon sèten segman nou ka rankontre nan fen dosye WAL anvan an, ki nou pa gen anyen konekte ak ankò, paske lekti paralèl mennen nan ke nou premye analize tan kap vini an, ki poko gen yon sot pase.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kòm yon rezilta, nou te oblije mete moso enkonpreyansib nan dosye _delta_patial. Kòm yon rezilta, lè nou retounen nan tan lontan an, nou pral kole moso yo nan dosye WAL la nan yon sèl, apre sa nou pral analize li epi konprann sa ki chanje nan li.

Si nan istwa analiz arbr nou an gen omwen yon pwen kote nou pa konprann sa k ap pase, lè sa a, kòmsadwa, pandan pwochen backup la nou pral oblije li tout gwoup la ankò, menm jan nou te fè ak yon LSN regilye. - ki baze sou delta.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kòm yon rezilta, tout soufrans nou te mennen nan lefèt ke nou louvri sous bibliyotèk la analize WAL-G. Jan mwen konnen, pèsonn pa sèvi ak li ankò, men si yon moun vle ekri epi sèvi ak li, li nan domèn piblik la. (Mizajou lyen https://github.com/wal-g/wal-g/tree/master/internal/walparser)

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kòm yon rezilta, tout koule enfòmasyon sanble byen konplike. Mèt nou an achiv arbr a ak achiv fichye delta. Ak kopi a ki fè kopi backup la dwe resevwa fichye delta pandan tan ki te pase ant sovgad yo. Nan ka sa a, yo pral bezwen ajoute pati nan istwa a an gwo ak analize, paske se pa istwa a tout antye adapte nan segman gwo. Epi sèlman apre sa a kopi a ka achiv yon backup delta konplè.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Sou graf yo tout bagay sanble pi senp. Sa a se yon telechaje soti nan youn nan grap reyèl nou yo. Nou gen LSN ki baze sou, te fè nan yon sèl jou. Epi nou wè ke backup delta ki baze sou LSN te kouri soti nan twa nan maten rive nan senk nan maten. Sa a se chaj la nan kantite nwayo processeur. WAL-delta te pran nou apeprè minit 20. Sa vle di, li te vin siyifikativman pi vit, men an menm tan an te gen yon echanj pi entans sou rezo a.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Depi nou gen enfòmasyon sou ki blòk ki chanje ak ki lè nan istwa baz done a, nou te ale pi lwen epi nou te deside entegre fonksyonalite - yon ekstansyon PostgreSQL ki rele "pg_prefaulter"

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Sa vle di ke lè baz kanpe la egzekite kòmandman retabli a, li di WAL-G chache pwochen dosye WAL la. Nou konprann apeprè ki blòk done pwosesis rekiperasyon WAL la pral jwenn nan fiti prè epi kòmanse yon operasyon lekti sou blòk sa yo. Sa a te fè yo nan lòd yo ogmante pèfòmans nan kontwolè SSD. Paske woulo WAL la ap rive nan paj ki bezwen chanje a. Paj sa a sou disk epi li pa nan kachèt paj la. Epi li pral tann synchrone pou paj sa a rive. Men, tou pre se WAL-G, ki konnen ke nan kèk santèn megabytes nan WAL yo pral bezwen sèten paj ak an menm tan an kòmanse chofe yo. Inisye plizyè aksè ki gen kapasite pou yo egzekite an paralèl. Sa a travay byen sou kondui SSD, men, malerezman, li absoliman pa aplikab pou yon kondwi difisil, paske nou sèlman entèfere ak li ak envit nou yo.

Sa a se sa ki nan kòd la kounye a.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Gen karakteristik ke nou ta renmen ajoute.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Foto sa a montre ke WAL-delta pran yon tan relativman kout. Lè sa a se li chanjman ki te fèt nan baz done a pandan jounen an. Nou te kapab fè WAL-delta pa sèlman nan mitan lannwit, paske li se pa yon sous enpòtan nan chaj. Nou ka li WAL-delta chak minit paske li bon mache. Nan yon minit nou ka eskane tout chanjman ki te fèt nan gwoup la. Lè sa a ta ka rele "instant WAL-delta".

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Pwen an se ke lè nou retabli gwoup la, nou redwi kantite istwa ke nou dwe woule sekans. Sa vle di, kantite WAL ke PostgreSQL woule yo ta dwe redwi, paske li pran anpil tan.

Men, sa a se pa tout. Si nou konnen ke kèk blòk pral chanje nan pwen nan konsistans backup, nou pa ka chanje li nan tan lontan an. Sa vle di, kounye a nou gen optimize dosye-pa-fichye nan WAL-delta voye. Sa vle di ke si, pou egzanp, nan Madi yon tab konplètman efase oswa kèk dosye yo te efase antyèman nan tab la, Lè sa a, lè delta woule sou Lendi ak pg_basebackup Samdi a retabli, nou pa pral menm kreye done sa yo.

Nou vle pwolonje teknoloji sa a nan nivo paj la. Sa vle di, si kèk pati nan dosye a chanje nan Lendi, men yo pral ranplase nan Mèkredi, Lè sa a, lè restore nan yon pwen nan Jedi, nou pa bezwen ekri premye vèsyon yo kèk nan paj sou disk.

Men, sa a se toujou yon lide ke yo te aktivman diskite andedan nou, men li poko rive nan kòd la.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Nou vle fè yon lòt karakteristik nan WAL-G. Nou vle fè li ekstansib paske nou bezwen sipòte baz done diferan epi nou ta renmen kapab apwoche jesyon backup nan menm fason an. Men, pwoblèm nan se ke API yo MySQL yo radikalman diferan. Nan MySQL, PITR baze pa sou jounal WAL fizik la, men sou binlog la. Epi nou pa gen yon sistèm achiv nan MySQL ki ta di kèk sistèm ekstèn ke binlog sa a fini ak bezwen yo dwe achiv. Nou bezwen kanpe yon kote nan cron ak baz done a epi tcheke si gen yon bagay pare?

Ak nan menm fason an, pandan yon restorasyon MySQL, pa gen okenn lòd restore ki ta ka di sistèm nan ke mwen bezwen sa yo ak dosye sa yo. Anvan ou kòmanse rebati gwoup ou a, ou bezwen konnen ki fichye w ap bezwen. Ou menm ou bezwen devine ki dosye w ap bezwen. Men, pwoblèm sa yo ka kapab kontourne yon jan kanmenm. (Klarifikasyon: MySQL deja sipòte)

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Nan rapò a, mwen te vle pale tou sou ka sa yo lè WAL-G pa apwopriye pou ou.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Si ou pa gen yon kopi synchrone, WAL-G pa garanti ke dènye segman an ap konsève. Men, si achiv lag dèyè dènye kèk segman nan listwa, sa a se yon risk. Si pa gen okenn kopi synchrone, mwen pa ta rekòmande pou itilize WAL-G. Toujou, li se sitou fèt pou yon enstalasyon nwaj, ki implique yon solisyon High Availability ak yon kopi synchrone, ki responsab pou sekirite nan dènye octets komèt.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Mwen souvan wè moun ap eseye kouri tou de WAL-G ak WAL-E an menm tan. Nou sipòte konpatibilite bak nan sans ke WAL-G ka retabli yon dosye soti nan WAL-E epi li ka retabli yon backup ki fèt nan WAL-E. Men, depi tou de nan sistèm sa yo itilize paralèl wal-push, yo kòmanse vòlè dosye youn ak lòt. Si nou ranje li nan WAL-G, li ap toujou rete nan WAL-E. Nan WAL-E, li gade achiv-estati, wè dosye yo fini ak achiv yo, pandan ke lòt sistèm tou senpleman pa pral konnen ke dosye WAL sa a te egziste, paske PostgreSQL pa pral eseye achiv li yon dezyèm fwa.

Kisa nou pral ranje isit la sou bò WAL-G? Nou pap enfòme PostgreSQL ke dosye sa a te transfere an paralèl, epi lè PostgreSQL mande nou pou nou achiv li, nou pral deja konnen ke yon fichye konsa ak mòd-tan sa a ak md5 sa a te deja achiv epi nou pral tou senpleman di PostgreSQL - OK, tout bagay pare san esansyèlman fè anyen.

Men, pwoblèm sa a se fasil yo dwe fiks sou bò WAL-E, kidonk li se kounye a enposib yo kreye yon lòd achiv ki pral achiv dosye a nan tou de WAL-G ak WAL-E.

Anplis de sa, gen ka kote WAL-G pa apwopriye pou ou kounye a, men nou pral definitivman ranje li.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey BorodinPremyèman, kounye a nou pa gen verifikasyon backup entegre. Nou pa gen verifikasyon swa pandan backup oswa rekiperasyon. Natirèlman, sa a se aplike nan nwaj la. Men, sa a aplike tou senpleman pa pre-tcheke, tou senpleman pa restore gwoup la. Mwen ta renmen bay itilizatè sa a fonksyonalite. Men, pa verifikasyon, mwen sipoze ke nan WAL-G li pral posib retabli gwoup la epi kòmanse li, epi fè tès lafimen: pg_dumpall to /dev/null ak amcheck verifikasyon endèks.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kounye a nan WAL-G pa gen okenn fason yo ranvwaye yon sèl backup soti nan WAL. Sa vle di, nou sipòte kèk fenèt. Pou egzanp, estoke sèt dènye jou yo, estoke dis dènye sovgad yo, estoke twa dènye sovgad konplè yo. Byen souvan moun vini epi di: "Nou bezwen yon backup nan sa ki te pase nan nouvèl ane a epi nou vle kenbe li pou tout tan." WAL-G pa ka fè sa ankò. (Remak - Sa a te deja fiks. Li plis - Opsyon backup-mark nan https://github.com/wal-g/wal-g/blob/master/PostgreSQL.md)

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Epi nou pa gen chèk paj ak chèk entegrite pou tout segman arbr lè nou valide PITR.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Soti nan tout sa a mwen mete ansanm yon pwojè pou Google Summer of Code. Si ou konnen elèv entelijan ki ta renmen ekri yon bagay nan Go epi jwenn plizyè milye dola nan men yon konpayi ki gen lèt "G", Lè sa a, rekòmande pwojè nou an ba yo. Mwen pral aji kòm yon konseye pou pwojè sa a, yo ka fè li. Si pa gen etidyan, Lè sa a, mwen pral pran li epi fè li tèt mwen nan sezon lete an.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

E nou annan bokou lezot pti problenm ki nou pe travay gradyelman. Ak kèk bagay trè etranj rive.

Pou egzanp, si ou bay WAL-G yon backup vid, li pral tou senpleman tonbe. Pou egzanp, si ou di l 'ke li bezwen backup yon katab vid. Fichye pg_control la pap la. Epi li pral panse ke li pa konprann yon bagay. Nan teyori, nan ka sa a ou bezwen ekri yon mesaj nòmal nan itilizatè a pou eksplike l 'ki jan yo sèvi ak zouti a. Men, sa a se pa menm yon karakteristik nan pwogramasyon, men se yon karakteristik nan yon bon langaj entèlijib.

Nou pa konnen ki jan fè backup offline. Si baz done a bay manti, nou pa ka backup li. Men, tout bagay trè senp isit la. Nou rele sovgad pa LSN lè li te kòmanse. LSN baz ki kache a dwe li nan dosye kontwòl la. Lè sa a se tankou yon karakteristik ki pa reyalize. Anpil sistèm backup ka backup yon baz done kache. Epi li pratik.

Kounye a nou pa ka jere mank de espas backup byen. Paske anjeneral nou travay ak gwo sovgad lakay ou. Apre sa, yo pa t 'jwenn alantou li. Men, si yon moun vle pwograme nan Go kounye a, ajoute manyen pou erè andeyò espas nan bokit la. Mwen pral definitivman gade nan demann lan rale.

Ak bagay prensipal la ki enkyete nou se ke nou vle anpil tès entegrasyon Docker ke posib ki tcheke senaryo divès kalite. Kounye a nou sèlman teste senaryo debaz yo. Sou chak komèt, men nou vle tcheke komite pa komèt tout fonksyonalite nou sipòte. An patikilye, pou egzanp, nou pral gen ase sipò pou PostgreSQL 9.4-9.5. Nou sipòte yo paske kominote a sipòte PostgreSQL, men nou pa tcheke commit-by-commit pou asire ke tout bagay pa kase. Apre sa, mwen sanble ke sa a se yon risk olye grav.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Nou gen WAL-G kouri sou plis pase mil grap nan jesyon baz done Yandex. Epi li fè bak plizyè santèn terabyte done chak jou.

Nou gen anpil TODO nan kòd nou an. Si w vle pwograme, vini, nap tann demann pull, nap tann kesyon.

Sovgad soti nan WAL-G. Kisa ki gen nan 2019 la? Andrey Borodin

Kesyon ou yo

Bonswa! Mèsi! Devine mwen se ke si w ap itilize WAL-delta, pwobableman w ap konte anpil sou ekriti plen paj. E si wi, èske ou te fè tès yo? Ou te montre yon bèl graf. Konbyen li vin pi bèl si FPW etenn?

Ekri paj konplè yo aktive pou nou, nou pa eseye enfim li. Sa vle di, mwen menm, kòm yon pwomotè, pa te eseye fèmen li. Administratè sistèm ki te fè rechèch te pwobableman fè rechèch sou pwoblèm sa a. Men nou bezwen FPW. Prèske pa gen moun ki enfim li, paske otreman li enposib pran yon backup nan yon kopi.

Mèsi pou rapò a! Mwen gen de kesyon. Premye kesyon an se sa ki pral rive tablespaces?

Nou ap tann pou yon demann pull. Baz done nou yo ap viv sou SSD ak NMVE disk epi nou pa reyèlman bezwen karakteristik sa a. Mwen pa pare pou m pase tan seryezman kounye a pou m fè l byen. Mwen defann ak tout kè nou pou nou sipòte sa. Gen moun ki te sipòte li, men ki te sipòte li nan yon fason ki adapte yo. Yo te fè yon fouchèt, men yo pa fè demann rale. (Ajoute nan vèsyon 0.2.13)

E dezyenm kestyon. Ou te di nan kòmansman an trè ke WAL-G sipoze ke li travay pou kont li epi pa gen okenn anbalaj yo bezwen. Mwen sèvi ak anbalaj tèt mwen. Poukisa yo pa ta dwe itilize yo?

Nou vle li senp tankou yon balalaika. Sa vle di ke ou pa bezwen anyen ditou eksepte yon balalaika. Nou vle sistèm nan senp. Si ou gen fonksyonalite ke ou bezwen fè nan yon script, Lè sa a, vin di nou - nou pral fè li nan Go.

Bonswa! Mèsi pou rapò a! Nou pa t kapab jwenn WAL-G pou travay ak dechifre GPG. Li ankripte nòmalman, men li pa vle dechifre. Èske se yon bagay ki pa mache pou nou? Sitiyasyon an se depresyon.

Kreye yon pwoblèm sou GitHub epi ann kalkile li.

Sa vle di, ou pa te rankontre sa a?

Gen yon karakteristik nan rapò erè a ki lè WAL-G pa konprann ki kalite fichye li ye, li mande: "Petèt li ankripte?" Petèt pwoblèm nan se pa chifreman ditou. Mwen vle amelyore enregistrement sou sijè sa a. Li dwe dechifre li. Aktyèlman nou ap travay sou sijè sa a nan sans ke nou pa vrèman renmen jan sistèm pou jwenn kle piblik ak prive yo òganize. Paske nou rele GPG ekstèn pou li ban nou kle li yo. Lè sa a, nou pran kle sa yo epi transfere yo nan GPG entèn la, ki se louvri PGP, ki se konpile pou nou andedan WAL-G, epi la nou rele chifreman. Nan sans sa a, nou vle amelyore sistèm nan epi ou vle sipòte chifreman Libsodium (Ajoute nan vèsyon 0.2.15). Natirèlman, dekodaj ta dwe travay, an n kalkile li - ou bezwen plis nan yon sentòm pase yon koup de mo. Ou ka rasanble nan chanm oratè a nenpòt moman epi gade nan sistèm nan. (PGP chifreman san GPG ekstèn - v0.2.9)

Bonjou! Mèsi pou rapò a! Mwen gen de kesyon. Mwen gen yon dezi etranj fè pg_basebackup ak WAL konekte nan de founisè, sa vle di mwen vle fè yon nwaj ak yon lòt. Èske gen yon fason pou fè sa?

Sa a pa egziste kounye a, men li se yon lide enteresan.

Mwen jis pa fè konfyans yon founisè, mwen vle gen menm bagay la nan yon lòt, jis nan ka.

Lide a enteresan. Teknikman, sa a se pa ditou difisil pou aplike. Pou anpeche lide a pèdi, èske mwen ka mande w fè yon pwoblèm sou GitHub?

Wi nan kou.

Apre sa, lè elèv yo vin nan Google Summer of Code, nou pral ajoute yo nan pwojè a pou gen plis travay pou jwenn plis soti nan yo.

E dezyenm kestyon. Gen yon pwoblèm sou GitHub. Mwen panse li deja fèmen. Gen yon panik pandan restorasyon. Epi pou defèt li, ou te fè yon asanble separe. Li dwat nan pwoblèm. Epi gen yon opsyon pou fè yon anviwònman varyab nan yon sèl fil. Epi se poutèt sa li travay trè dousman. Epi nou te rankontre pwoblèm sa a, epi li pa te fikse ankò.

Pwoblèm lan se ke pou kèk rezon depo a (CEPH) retabli koneksyon an lè nou vin jwenn li ak konkourans segondè. Kisa ki ka fè sou sa? Lojik reesye a sanble ak sa a. Nou ap eseye telechaje fichye a ankò. Nan yon sèl pas, nou te gen yon kantite fichye pa telechaje, nou pral fè yon dezyèm youn pou tout moun ki pat konekte. Epi osi lontan ke omwen yon dosye chaje pou chak iterasyon, nou repete epi repete epi repete. Nou amelyore lojik retry - backoff eksponansyèl. Men, li pa totalman klè sa yo dwe fè ak lefèt ke koneksyon an tou senpleman kraze sou bò sistèm depo. Sa vle di, lè nou telechaje nan yon sèl kouran, li pa kraze koneksyon sa yo. Kisa nou ka amelyore isit la? Nou gen rezo throttling, nou ka limite chak koneksyon pa kantite bytes li voye. Sinon, mwen pa konnen ki jan fè fas ak lefèt ke depo objè pa pèmèt nou telechaje oswa telechaje soti nan li an paralèl.

Pa gen SLA? Èske se pa sa ki ekri pou yo jan yo kite tèt yo ap toumante?

Pwen an se ke moun ki vini ak kesyon sa a anjeneral gen pwòp vout yo. Sa vle di, pèsonn pa soti nan Amazon oswa Google Cloud oswa Yandex Object Storage.

Petèt kesyon an pa pou ou ankò?

Kesyon an isit la nan ka sa a pa enpòtan pou ki moun. Si gen nenpòt lide sou fason pou fè fas ak sa a, ann fè li nan WAL-G. Men, jiskaprezan mwen pa gen okenn bon lide sou kòman yo fè fas ak sa a. Gen kèk Depo objè ki sipòte lis sovgad yon fason diferan. Ou mande yo lis objè, epi yo ajoute katab la. WAL-G vin pè nan sa a - gen kèk kalite bagay isit la ki se pa yon dosye, mwen pa ka retabli li, ki vle di backup la pa te retabli. Sa vle di, an reyalite, ou gen yon grap konplètman restore, men li retounen ou yon estati inègza paske Object Storage te retounen kèk enfòmasyon etranj ke li pa t 'konprann konplètman.

Sa a se yon bagay ki rive nan nwaj la Mail.

Si ou ka bati yon repwodui...

Li toujou repwodui...

Si gen yon repwodui, Lè sa a, mwen panse ke nou pral fè eksperyans ak estrateji re-eseye ak konnen ki jan yo re-eseye ak konprann sa nwaj la mande pou nou. Petèt li pral estab pou nou sou twa koneksyon epi yo pa pral kraze koneksyon an, Lè sa a, nou pral ak anpil atansyon rive nan twa. Paske kounye a nou lage koneksyon an trè vit, sa vle di si nou te lanse yon rekiperasyon ak 16 fil, Lè sa a, apre premye reesye a pral gen 8 fil, 4 fil, 2 fil ak youn. Lè sa a, li pral rale dosye a nan yon sèl kouran. Si gen kèk valè majik tankou 7,5 fil yo se pi bon an pou ponpe, Lè sa a, nou pral rete sou yo epi eseye fè yon lòt fil 7,5. Men yon lide.

Mèsi pou rapò a! Ki jan yon workflow konplè pou travay ak WAL-G sanble? Pou egzanp, nan ka a estipid lè pa gen okenn delta atravè paj. Epi nou pran epi retire backup inisyal la, Lè sa a, achiv arbr a jiskaske nou yo ble nan figi an. Isit la, jan mwen konprann li, gen yon pann. Nan kèk pwen ou bezwen fè yon backup delta nan paj, sa vle di kèk pwosesis ekstèn ap kondwi sa a oswa ki jan sa rive?

Delta backup API a se byen senp. Gen yon nimewo la - etap max delta, se sa li rele. Li par défaut a zewo. Sa vle di ke chak fwa ou fè yon backup-push, li telechaje yon backup konplè. Si ou chanje li nan nenpòt ki nimewo pozitif, pou egzanp, 3, Lè sa a, pwochen fwa ou fè yon backup-push, li gade nan istwa a nan sovgad anvan yo. Li wè ke ou pa depase chèn nan 3 delta epi li fè yon delta.

Sa vle di, chak fwa nou lanse WAL-G, li eseye fè yon backup konplè?

Non, nou kouri WAL-G, epi li eseye fè yon delta si règleman ou yo pèmèt li.

Apeprè pale, si ou kouri li ak zewo chak fwa, èske li konpòte li tankou pg_basebackup?

Non, li pral toujou kouri pi vit paske li itilize konpresyon ak paralelis. Pg_basebackup pral mete arbr a bò kote w. WAL-G sipoze ke ou gen achiv configuré. Epi li pral bay yon avètisman si li pa configuré.

Pg_basebackup ka kouri san arbr.

Wi, Lè sa a, yo pral konpòte prèske menm jan an. Pg_basebackup kopi nan sistèm dosye a. By wout la, nou gen yon nouvo karakteristik ke mwen bliye mansyone. Nou kapab kounye a fè backup nan sistèm dosye a soti nan pg_basebackup. Mwen pa konnen poukisa sa nesesè, men li la.

Pou egzanp, sou CephFS. Se pa tout moun ki vle configured depo objè.

Wi, se pwobableman poukisa yo te poze yon kesyon sou karakteristik sa a pou nou ka fè li. Epi nou te fè li.

Mèsi pou rapò a! Gen jis yon kesyon sou kopye nan sistèm nan dosye. Soti nan bwat la, èske ou kounye a sipòte kopye nan depo aleka, pou egzanp, si gen kèk etajè nan sant done a oswa yon lòt bagay?

Nan fòmilasyon sa a, sa a se yon kesyon difisil. Wi, nou sipòte, men fonksyonalite sa a pa enkli nan okenn lage ankò. Sa vle di, tout pre-version sipòte sa a, men vèsyon yo lage pa fè sa. Fonksyonalite sa a te ajoute nan vèsyon 0.2. Li pral definitivman dwe lage byento, le pli vit ke nou ranje tout pinèz yo li te ye. Men, kounye a sa a ka fèt sèlman nan pre-lage. Gen de pinèz nan pre-version la. Pwoblèm ak rekiperasyon WAL-E, nou pa te fikse li. Ak nan dènye pre-lage yon ensèk sou delta-sovgad te ajoute. Se poutèt sa, nou rekòmande pou tout moun sèvi ak vèsyon yo lage. Le pli vit ke pa gen plis pinèz nan pre-lage a, nou ka di ke nou sipòte Google Cloud, bagay ki konpatib S3 ak depo dosye.

Bonjou, mèsi pou rapò a. Jan mwen konprann li, WAL-G se pa yon kalite sistèm santralize tankou barmen? Èske w planifye pou w avanse nan direksyon sa a?

Pwoblèm nan se ke nou te deplase lwen direksyon sa a. WAL-G ap viv sou lame baz la, sou lame gwoup la, ak sou tout lame nan gwoup la. Lè nou te deplase nan plizyè mil grap, nou te gen anpil enstalasyon barman. E chak fwa yon bagay tonbe nan yo, se yon gwo pwoblèm. Paske yo bezwen repare, ou bezwen konprann ki grap kounye a pa gen sovgad. Mwen pa planifye pou devlope WAL-G nan direksyon pyès ki nan konpitè fizik pou sistèm backup. Si kominote a vle kèk fonksyonalite isit la, mwen pa gen pwoblèm ditou.

Nou gen ekip ki responsab pou depo. Epi nou santi nou tèlman byen ke se pa nou, ke gen moun espesyal ki mete dosye nou yo kote dosye yo an sekirite. Yo fè tout kalite kodaj entelijan la pou kenbe tèt ak pèt yon sèten kantite dosye. Yo responsab pou Pleasant rezo a. Lè ou gen yon Barman, ou ka toudenkou dekouvri ke ti baz done ki gen anpil trafik yo te rasanble sou menm sèvè a. Ou sanble gen anpil espas sou li, men pou kèk rezon tout bagay pa anfòm atravè rezo a. Li ka vire soti nan lòt fason alantou. Gen yon anpil nan rezo la, gen nwayo processeur, men pa gen okenn disk isit la. Epi nou te fatige ak bezwen sa a jongle yon bagay, epi nou te deplase nan lefèt ke depo done se yon sèvis separe, pou ki separe moun espesyal yo responsab.

PS Yo te pibliye yon nouvo vèsyon 0.2.15, kote ou ka itilize fichye konfigirasyon .walg.json, ki sitiye nan anyè lakay postgres la pa default. Ou ka abandone scripts bash. Egzanp .walg.json se nan pwoblèm sa a https://github.com/wal-g/wal-g/issues/545

Videyo:



Sous: www.habr.com

Add nouvo kòmantè