Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ndikupangira kuti muwerenge zomwe zalembedwa mu lipoti la Andrey Borodin koyambirira kwa chaka cha 2019, "Backups with WAL-G. Kodi Chatsopano ndi Chiyani mu 2019?"

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Moni nonse! Dzina langa ndine Andrey Borodin. Ndine wopanga mapulogalamu ku Yandex. Ndakhala ndi chidwi ndi PostgreSQL kuyambira 2016, nditalankhula ndi opanga mapulogalamuwo ndipo anati zinali zosavuta—ingotengani source code, iphatikizeni, ndipo idzagwira ntchito. Ndipo kuyambira pamenepo, sindinathe kusiya kulemba zinthu zosiyanasiyana.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey BorodinChimodzi mwa zinthu zomwe ndimagwira ntchito ndi njira yosungira zinthu zina. WAL-GNdipotu, ku Yandex, takhala tikugwira ntchito pa njira zosungira zinthu za PostgreSQL kwa nthawi yayitali. Mutha kupeza malipoti asanu ndi limodzi pa intaneti okhudza momwe timapangira njira zathu zosungira zinthu. Ndipo chaka chilichonse, zimasintha, zimakula, ndipo zimakhala zodalirika kwambiri.

Koma nkhani ya lero si yokhudza zomwe tachita zokha, komanso momwe zonse zilili zosavuta komanso zomwe zilipo. Ndi angati mwa inu omwe mwawona kale nkhani zanga zokhudza WAL-G? Ndi chinthu chabwino chomwe anthu ambiri sanachionepo, chifukwa ndiyamba ndi chinthu chosavuta.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ngati muli ndi gulu la PostgreSQL, ndipo ndikuganiza kuti aliyense ali nalo angapo, ndipo mwadzidzidzi mulibe njira yosungiramo zinthu zina, ndiye kuti muyenera kupeza malo osungira a S3 kapena Google Cloud.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mwachitsanzo, mutha kubwera ku booth yathu ndikupeza khodi yotsatsira ya Yandex Object Storage, yomwe imagwirizana ndi S3.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Kenako pangani Chidebe. Ichi ndi chidebe chongopezerapo chidziwitso.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pangani wogwiritsa ntchito.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pangani kiyi yolowera ya aws-s3-key ya wogwiritsa ntchito.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Tsitsani pulogalamu yaposachedwa ya WAL-G.

Kodi ma pre-resume athu ndi osiyana bwanji ndi ma pre-resume athu? Nthawi zambiri ndimafunsidwa kuti nditulutse msanga. Ngati mtundu wina sunakhale ndi cholakwika kwa nthawi yokwanira, mwachitsanzo mwezi umodzi, ndiye kuti ndimautulutsa. Iyi ndi November release. Izi zikutanthauza kuti mwezi uliwonse timapeza cholakwika, nthawi zambiri chomwe sichili chofunikira kwambiri, koma sitinachitulutsebe. Mtundu wakale ndi wa November wokha. Ulibe zolakwika zodziwika, zomwe zikutanthauza kuti zolakwikazo zinawonjezedwa pamene polojekitiyi ikupita patsogolo.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mukatsitsa WAL-G, mutha kuyendetsa lamulo losavuta la "backup list", ndikulowetsamo zosintha zachilengedwe. Lidzalumikizana ndi Object Storage ndikuwuza zomwe zili ndi zosunga zobwezeretsera. Poyamba, simuyenera kukhala ndi zosunga zobwezeretsera zilizonse. Cholinga cha slide iyi ndikuwonetsa kuti zonse ndi zosavuta. Ndi lamulo la console lomwe limalandira zosintha zachilengedwe ndikuyendetsa ma subcommands.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pambuyo pa izi, mutha kupanga backup yanu yoyamba. Tchulani "backup-push" mu WAL-G ndikutchula komwe kuli pgdata ya cluster yanu mu WAL-G. PostgreSQL mwina idzakuuzani kuti muyenera kuyatsa "archive-mode" ngati mulibe backup system pakadali pano.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Izi zikutanthauza kuti muyenera kupita ku zoikamo ndikuyatsa "archive_mode = on" ndikuwonjezera "archive_command," yomwe ndi lamulo laling'ono mu WAL-G. Koma pazifukwa zina, anthu nthawi zambiri amagwiritsa ntchito ma bar script mu ulusiwu ndikupanga wrapper mozungulira WAL-G. Chonde musachite zimenezo. Gwiritsani ntchito magwiridwe antchito omwe WAL-G ili nawo. Ngati mukusowa kena kake, chonde ndidziwitseni. GitHubWAL-G imaganiza kuti ndi pulogalamu yokhayo yomwe imagwira ntchito mu archive_command.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Timagwiritsa ntchito WAL-G makamaka popanga gulu la High Availability mu Yandex Database management.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Kawirikawiri imagwiritsidwa ntchito mu topology yokhala ndi Master imodzi ndi ma replication angapo, ndipo imabwerera ku Yandex Object Storage.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Chochitika chofala kwambiri ndi kupanga ma cluster copies pogwiritsa ntchito Point-in-Time Recovery. Komabe, pankhaniyi, magwiridwe antchito a backup system si ofunika kwambiri. Tikungofunika kupanga cluster yatsopano kuchokera ku backup.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Nthawi zambiri timafunikira magwiridwe antchito a backup system powonjezera node yatsopano. Nchifukwa chiyani izi ndizofunikira? Anthu nthawi zambiri amawonjezera node yatsopano ku cluster chifukwa cluster yomwe ilipo silingathe kuthana ndi kuwerengedwa kwa read. Amafunika kuwonjezera kopi yatsopano. Ngati tiwonjezera pg_basebackup load ku Master, Master ikhoza kugwa. Chifukwa chake, chinali chofunikira kuti tithe kupereka node yatsopano mwachangu kuchokera ku archive pamene tikupanga katundu wochepa pa Master.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Vuto lina lofanana ndi limeneli ndi kufunika kokhazikitsanso Master yakale mutasintha Cluster Master kuchokera ku data center yomwe idatayika kulumikizana.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

  • Zotsatira zake, pokonza zofunikira pa njira yosungira zinthu, tinazindikira kuti pg_basebackup sinali yoyenera kugwiritsidwa ntchito mumtambo.
  • Tinkafuna kuti tithe kufinya deta yathu. Koma pafupifupi makina ena onse osungira deta, kupatula omwe amabwera nawo, amapereka kufinya deta.
  • Tinkafuna kufananiza chilichonse chifukwa ogwiritsa ntchito mitambo amagula ma processor cores ambiri. Koma ngati tilibe ma processor cores ambiri, ndiye kuti ma processor ambiri amakhala opanda ntchito.
  • Timafunikira kubisa deta chifukwa nthawi zambiri si deta yathu ndipo sitingathe kuisunga m'mawu osavuta. Mwa njira, zomwe tidapereka ku WAL-G zinayamba ndi kubisa deta. Tinawonjezera kubisa deta ku WAL-G, kenako tinafunsidwa kuti, "Kodi mmodzi wa ife angakonde kupanga pulojekitiyi?" Ndipo kuyambira pamenepo, ndakhala ndikugwira ntchito ndi WAL-G kwa chaka choposa.
  • Tinkafunikanso kuchepetsa zinthu chifukwa, patapita nthawi, tinapeza kuti nthawi zina anthu amakhala ndi ntchito zofunika kwambiri zopanga zinthu usiku, ndipo ntchito imeneyi singathe kusokonezedwa. Chifukwa chake, tinawonjezera kuchepetsa zinthu.
  • Komanso kulemba ndi kuyang'anira.
  • Ndipo kutsimikizira.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Tinayang'ana zida zosiyanasiyana. Mwamwayi, tili ndi zosankha zambiri mu PostgreSQL. Ndipo m'zonsezi, tinkasowa china chake, mawonekedwe ang'onoang'ono, ndi ubwino wina wochepa.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Titayang'ananso machitidwe omwe analipo, tinaganiza zopanga WAL-G. Panthawiyo inali pulojekiti yatsopano, ndipo zinali zosavuta kusintha chitukuko chake kukhala maziko a makina osungira zinthu omwe ali ndi mitambo.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mfundo yaikulu yomwe timatsatira ndi yakuti WAL-G iyenera kukhala yosavuta ngati balalaika.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pali malamulo anayi mu WAL-G. Awa ndi awa:

WAL-PUSH - shaft yosungiramo zinthu zakale.

WAL-FETCH - pezani shaft.

KUBEKA - KUKANIKIZIRA - pangani zosunga zobwezeretsera.

KUBWERERA - KUBWERERA - pezani zosunga zobwezeretsera kuchokera ku dongosolo losungira.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ndipotu, WAL-G ilinso ndi udindo woyang'anira zosunga zobwezeretsera izi, mwachitsanzo kulemba ndi kuchotsa zolemba ndi zosunga zobwezeretsera m'mbiri zomwe sizikufunikanso pakadali pano.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Chimodzi mwa ntchito zofunika kwambiri kwa ife ndi ntchito yolenga ma delta copies.

Ma backups a Delta amatanthauza kuti sitipanga backup yonse ya cluster yonse, koma masamba osinthidwa okha a mafayilo osinthidwa mu cluster. Izi zikuwoneka kuti zikugwira ntchito mofanana kwambiri ndi kuthekera kobwezeretsa pogwiritsa ntchito WAL. Komabe, WAL ndi single-threaded, kotero tikhoza kuyendetsa ma backups a delta motsatizana. Chifukwa chake, ngati tili ndi base backup yopangidwa Loweruka, ma backups a delta amachitidwa tsiku lililonse, ndipo kulephera kumachitika Lachinayi, tifunika kuyendetsa ma backups anayi a delta ndi maola 10 a WAL. Izi zitenga pafupifupi nthawi yofanana chifukwa ma backups a delta amayendetsedwa motsatizana.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ma delta ozikidwa pa LSN amatanthauza kuti popanga zosunga zobwezeretsera, tiyenera kuphatikiza tsamba lililonse ndikuyerekeza LSN yake ndi LSN ya zosunga zobwezeretsera zakale kuti tidziwe ngati zasintha. Tsamba lililonse lomwe lingakhale ndi deta yosinthidwa liyenera kukhalapo mu zosunga zobwezeretsera za delta.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Monga ndanenera, chidwi chachikulu chinaperekedwa ku kufanana kwa mawu.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Koma PostgreSQL archive API ndi yofanana. PostgreSQL imasunga fayilo imodzi ya WAL, ndipo ikabwezeretsa, imapempha fayilo imodzi ya WAL. Koma database ikapempha fayilo imodzi ya WAL pogwiritsa ntchito lamulo la "WAL-FETCH", timatcha lamulo la "WAL-PREFETCH", lomwe limakonzekera ma WAL asanu ndi atatu otsatira kuti atsitse deta kuchokera ku malo osungira zinthu motsatizana.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey BorodinPamene database ikutipempha kuti tisunge deta imodzi, timayang'ana archive_status kuti tiwone ngati pali mafayilo ena a WAL. Timayesanso kutsitsa mafayilo a WAL nthawi imodzi. Izi zimapangitsa kuti magwiridwe antchito aziyenda bwino kwambiri ndipo zimachepetsa kwambiri kuchuluka kwa mafayilo a WAL osasungidwa. Opanga mapulogalamu ambiri osungira zinthu amaona kuti iyi ndi njira yowopsa chifukwa timadalira chidziwitso chathu cha mkati mwa code, yomwe si PostgreSQL API. PostgreSQL siitsimikizira kukhalapo kwa chikwatu cha archive_status, komanso siimatsimikizira tanthauzo kapena kupezeka kwa zizindikiro zokonzekera mafayilo a WAL. Komabe, timaphunzira code yoyambira, kuona kuti izi ndi zoona, ndikuyesera kuigwiritsa ntchito. Timawonanso komwe PostgreSQL ikukula; ngati njira iyi yasweka, tidzasiya kuigwiritsa ntchito.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mu mawonekedwe ake oyera, WAL delta yochokera ku LSN imafuna kuwerenga fayilo iliyonse ya cluster yomwe nthawi yake mu dongosolo la mafayilo yasintha kuyambira pomwe idasungidwa kale. Tinakhala ndi izi kwa nthawi yayitali, pafupifupi chaka chimodzi. Ndipo pomaliza pake, tinapeza WAL deltas.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey BorodinIzi zikutanthauza kuti nthawi iliyonse tikasunga WAL pa Master, sitimangoikakamiza, kuisunga, ndikuitumiza pa intaneti, komanso timaiwerenga. Timaisanthula, kuwerenga zolemba zake, kumvetsetsa mabuloko omwe asintha, ndikusonkhanitsa mafayilo a delta.

Fayilo ya delta imafotokoza mitundu yosiyanasiyana ya mafayilo a WAL, kufotokoza mabuloko omwe adasinthidwa mkati mwa mtunduwo. Mafayilo a delta awa amasungidwanso.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Apa tapeza mfundo yakuti tinalinganiza zonse mofulumira, koma n'zosatheka kuwerenga mbiri yotsatizana mofanana, chifukwa mu gawo linalake, tingakumane ndi mapeto a mbiri yakale ya WAL, yomwe sitingathe kulumikizana nayo, chifukwa kuwerenga mofanana kunapangitsa kuti choyamba tifufuze zamtsogolo, zomwe zilibe zakale.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Zotsatira zake, tinayenera kusunga zidutswa zosamvetsetseka mu mafayilo a _delta_partial. Pomaliza pake, tikabwerera ku zakale, tidzaphatikiza zidutswa za WAL record kukhala chimodzi, kenako tizisanthula ndikumvetsa zomwe zasintha.

Ngati pali mfundo imodzi m'mbiri yathu yofufuza komwe sitikumvetsa zomwe zinachitika, ndiye kuti, panthawi yosunga deta yotsatira tidzakakamizika kuwerenganso gulu lonselo, monga momwe tinachitira ndi delta yokhazikika ya LSN.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pomaliza pake, mavuto athu onse anatipangitsa kuti titsegule laibulale ya WAL-G yowunikira mabuku. Monga momwe ndikudziwira, palibe amene akugwiritsa ntchito pano, koma ngati wina akufuna, musazengereze kulemba ndikugwiritsa ntchito; ndi yotseguka. (Ulalo wosinthidwa) https://github.com/wal-g/wal-g/tree/master/internal/walparser)

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Zotsatira zake, mauthenga onse amaoneka ovuta kwambiri. Master wathu amasunga mafayilo a delta ambiri ndi a archive. Ndipo kopi, yomwe imapanga kopi, iyenera kutenga mafayilo a delta kwa nthawi yomwe yadutsa pakati pa ma backups. Zigawo zina za mbiri ziyenera kutengedwa ngati buku lalikulu ndikusanthula, chifukwa si mbiri yonse yomwe imalowa m'magawo akuluakulu. Pokhapokha kopi ikhoza kusunga deta yonse ya delta.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ma graph amapangitsa zinthu kuwoneka zosavuta kwambiri. Iyi ndi dawunilodi kuchokera ku imodzi mwa magulu athu enieni. Tili ndi backup yochokera ku LSN, yopangidwa tsiku lomwelo. Ndipo tikuwona kuti backup yochokera ku LSN inachitika kuyambira 3:00 AM mpaka 5:00 AM. Iyi ndi dawunilodi potengera ma processor cores. WAL delta backup idatenga pafupifupi mphindi 20. Chifukwa chake, idakula mwachangu kwambiri, komanso idakhudza kuchuluka kwa anthu omwe ali ndi netiweki.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Popeza tili ndi chidziwitso chokhudza mabuloko omwe adasinthidwa komanso nthawi yanji m'mbiri ya database, tinapita patsogolo ndipo tinaganiza zophatikiza magwiridwe antchito - chowonjezera cha PostgreSQL chotchedwa "pg_prefaulter"

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Izi zikutanthauza kuti pamene database yomwe ili pa standby ikupereka lamulo lobwezeretsa, imauza WAL-G kuti itenge fayilo yotsatira ya WAL. Tili ndi lingaliro lomveka bwino la deta yomwe imaletsa njira yobwezeretsa WAL yomwe idzalowemo kenako ndikuyambitsa ntchito yowerenga pa ma block amenewo. Izi zimachitika kuti ziwongolere magwiridwe antchito a owongolera a SSD. Chifukwa WAL rollforward idzafika patsamba lomwe likufunika kusinthidwa. Tsamba ili lili pa disk osati mu page cache. Tsamba cache lidzayembekezera nthawi yomweyo kuti tsamba ili lifike. Koma WAL-G ili pafupi, podziwa kuti tidzafunika masamba ena mu ma megabytes mazana angapo otsatira a WAL ndikuyamba kuwatenthetsa nthawi imodzi. Imayambitsa ma access angapo a disk kuti athe kuchitika nthawi imodzi. Izi zimagwira ntchito bwino pa ma SSD drive, koma mwatsoka, sizoyenera konse pa hard drive, chifukwa tikungolepheretsa ndi malangizo athu.

Izi ndi zomwe zili mu code tsopano.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pali zinthu zina zomwe tikufuna kuwonjezera.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Chithunzichi chikuwonetsa kuti WAL-delta imatenga nthawi yochepa. Uku ndi kuwerenga kwa kusintha komwe kunachitika mu database mkati mwa tsiku limodzi. Titha kuyendetsa WAL-delta osati usiku wokha, chifukwa siilinso gwero lofunika kwambiri la katundu. Titha kuwerenga WAL-delta mphindi iliyonse chifukwa ndi yotsika mtengo. Mu mphindi imodzi, titha kusanthula kusintha konse komwe kwachitika mu cluster. Izi zitha kutchedwa "WAL-delta yachangu."

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mfundo ndi kuchepetsa kuchuluka kwa mbiri yomwe tiyenera kuyibwerezanso motsatizana pobwezeretsa gulu. Izi zikutanthauza kuti kuchuluka kwa WAL komwe PostgreSQL imabwerezanso kuyenera kuchepetsedwa, chifukwa izi zimatenga nthawi yayitali.

Koma sizokhazo. Ngati tikudziwa kuti block idzasinthidwa musanafikire kusinthasintha kwa zosunga zobwezeretsera, tingathe kuzisiya zosasintha. Izi zikutanthauza kuti tsopano tili ndi WAL-delta rollforward optimization pa fayilo iliyonse. Izi zikutanthauza kuti ngati, mwachitsanzo, tebulo linachotsedwa kwathunthu Lachiwiri, kapena mafayilo ena anachotsedwa kwathunthu pa tebulo, ndiye kuti tikamapititsa patsogolo delta Lolemba ndikubwezeretsa pg_basebackup ya Loweruka, sitidzapanganso deta imeneyo.

Tikufuna kukulitsa ukadaulo uwu kufika pamlingo wa tsamba. Izi zikutanthauza kuti, ngati gawo lina la fayilo lasinthidwa Lolemba koma lidzalembedwanso Lachitatu, ndiye kuti tikabwezeretsa pamalo ena Lachinayi, sitifunikira kulemba masamba oyamba angapo ku disk.

Koma ili ndi lingaliro lomwe likukambidwa mwachangu mkati, koma sitinafike pagawo la code.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Tikufuna kuwonjezera chinthu china ku WAL-G. Tikufuna kuti chikhale chowonjezera chifukwa tifunika kuthandizira ma database osiyanasiyana ndipo tikufuna kuti tithe kusamalira ma backups mwanjira yokhazikika. Koma vuto ndilakuti ma MySQL API ndi osiyana kwambiri. PITR ya MySQL si yochokera pa WAL log yeniyeni, koma pa binlog. Ndipo tilibe dongosolo losungira mu MySQL lomwe lingauze dongosolo lakunja kuti binlog iyi yatha ndipo iyenera kusungidwa. Tiyenera kuyendetsa ntchito ya cron kwinakwake ndi database ndikuwona ngati pali chilichonse chokonzeka.

Ndipo mofananamo, pobwezeretsa MySQL, palibe lamulo lobwezeretsa lomwe lingauze dongosololi kuti, "Ndikufuna mafayilo akuti ndi akuti." Musanayambe kubwezeretsa cluster, muyenera kudziwa mafayilo omwe mukufuna. Muyenera kudziwa mafayilo omwe mukufuna. Koma mavutowa akhoza kuthetsedwa. (Dziwani: MySQL yathandizidwa kale.)

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mu lipotilo, ndimafunanso kulankhula za milandu yomwe WAL-G si yoyenera kwa inu.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ngati mulibe kopi yogwirizana, WAL-G sikutsimikizira chitetezo cha gawo lomaliza. Ndipo ngati kusunga zinthu zakale kuli kochedwa m'magawo angapo apitawa a mbiri, ndiye kuti pali chiopsezo. Popanda kopi yogwirizana, sindingalimbikitse kugwiritsa ntchito WAL-G. Kupatula apo, idapangidwira makamaka kukhazikitsa mitambo, yomwe imafuna njira yopezeka kwambiri yokhala ndi kopi yogwirizana, yomwe imayang'anira kusunga ma byte omaliza omwe adapangidwa.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Nthawi zambiri ndimawona anthu akuyesera kugwiritsa ntchito WAL-G ndi WAL-E nthawi imodzi. Timasunga kugwirizana kwa backward m'njira yakuti WAL-G ikhoza kubwezeretsa WAL-E backup ndipo ikhoza kubwezeretsa WAL-E backup. Koma popeza makina onsewa amagwiritsa ntchito wal-push yofanana, amayamba kuba mafayilo kuchokera kwa wina ndi mnzake. Ngakhale titakonza izi mu WAL-G, zidzapitirirabe mu WAL-E. WAL-E imayang'ana archive-status, imawona mafayilo okonzeka, ndikusunga. Makina ena sadziwa kuti fayilo ya WAL iyi ilipo chifukwa PostgreSQL sidzayesa kuisunga kachiwiri.

Kodi tikukonza chiyani apa kuchokera ku WAL-G? Sitidzauza PostgreSQL kuti fayiloyi yachotsedwa nthawi imodzi, ndipo PostgreSQL ikadzatipempha kuti tiisunge, tidzadziwa kale kuti fayiloyi yokhala ndi nthawi iyi ndi md5 iyi yasungidwa kale, kotero tidzangouza PostgreSQL kuti, "Chabwino, tamaliza," osachita chilichonse.

Koma vutoli silingatheke kumbali ya WAL-E, kotero pakadali pano sizingatheke kupanga lamulo la archive lomwe lidzasunge fayilo mu WAL-G ndi WAL-E.

Komanso, pali nthawi zina pomwe WAL-G si yoyenera kwa inu tsopano, koma tidzakonzadi.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey BorodinChoyamba, pakadali pano tilibe njira yotsimikizira yosungiramo zinthu. Sititsimikizira izi panthawi yosunga kapena kubwezeretsa zinthu. Zachidziwikire, izi zimachitika mumtambo. Koma zimangochitika pongoyang'ana pasadakhale ndikubwezeretsa gululo. Tikufuna kupereka magwiridwe antchito awa kwa ogwiritsa ntchito. Koma potsimikizira, ndikuganiza kuti WAL-G ikhoza kubwezeretsa gululo, kuliyambitsa, ndikuyendetsa mayeso a utsi: pg_dumpall kupita ku /dev/null ndi amcheck kuti atsimikizire ma index.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Pakadali pano, WAL-G ilibe mphamvu yochedwetsa kubwezeretsa kamodzi kokha kwa WAL. Izi zikutanthauza kuti, timathandizira zenera linalake. Mwachitsanzo, kusunga masiku asanu ndi awiri omaliza, kusunga zosunga zobwezeretsera khumi zomaliza, kusunga zosunga zobwezeretsera zitatu zomaliza. Nthawi zambiri, anthu amabwera nati, "Tikufuna zosunga zobwezeretsera za zomwe zinachitika pa Chaka Chatsopano ndipo tikufuna kuzisunga kosatha." WAL-G sichikuthandizira izi. (Dziwani: Izi zakonzedwa kale. Kuti mudziwe zambiri, onani njira ya zosunga zobwezeretsera mu https://github.com/wal-g/wal-g/blob/master/PostgreSQL.md)

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ndipo tilibe chitsimikiziro cha tsamba loyang'ana kapena chitsimikiziro cha umphumphu wa magawo onse a shaft panthawi yotsimikizira PITR.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ndapanga pulojekiti ya Google Summer of Code pogwiritsa ntchito zonsezi. Ngati mukudziwa ophunzira anzeru omwe akufuna kulemba china chake mu Go ndikupeza madola masauzande angapo kuchokera ku kampani ya G, chonde muwalimbikitse kuti achite pulojekiti yathu. Ine ndiwalangiza pulojekitiyi, ndipo adzatha kuikwaniritsa. Ngati tilibe ophunzira, ndichita ndekha chilimwe chino.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Ndipo tili ndi mavuto ena ambiri ang'onoang'ono omwe tikugwira ntchito pang'onopang'ono. Ndipo zinthu zina zachilendo zikuchitika.

Mwachitsanzo, ngati mupatsa WAL-G chosungira chopanda kanthu, chidzangowonongeka. Mwachitsanzo, ngati muiuza kuti isunge chikwatu chopanda kanthu, sipadzakhala fayilo ya pg_control pamenepo. Ndipo idzaganiza kuti siikumvetsa kanthu. Pankhaniyi, muyenera kulemba uthenga woyenera kwa wogwiritsa ntchito pofotokoza momwe angagwiritsire ntchito chidachi. Koma ichi sichinthu chofanana ndi pulogalamu, koma ndi chilankhulo chabwino komanso chosavuta kugwiritsa ntchito.

Tilibe mphamvu zosungira deta pa intaneti. Ngati deta ili pansi, sitingathe kuisunga. Koma ndi yosavuta. Timatchula ma backups pogwiritsa ntchito LSN omwe adayambitsidwa nawo. LSN ya deta yoyambira iyenera kuwerengedwa kuchokera ku fayilo yowongolera. Ndipo iyi ndi njira yosagwiritsidwa ntchito. Makina ambiri osungira deta amatha kusunga deta yoyambira. Ndipo ndi yosavuta.

Pakadali pano sitikusamalira bwino malo osungira deta osakwanira. Izi zili choncho chifukwa nthawi zambiri timagwira ntchito ndi ma backups akuluakulu tokha. Sitikuchita bwino. Koma ngati wina akufuna kupanga pulogalamu ya Go pakadali pano, chonde onjezani vuto losakwanira la malo osungira deta. Ndidzayang'ananso pempho loti mukoke.

Ndipo chinthu chachikulu chomwe chimatidetsa nkhawa ndichakuti tikufuna mayeso ambiri ophatikizana a Docker momwe tingathere omwe amafufuza zochitika zosiyanasiyana. Pakadali pano, timangoyang'ana zochitika zoyambira pa commit iliyonse, koma tikufuna kuwona magwiridwe antchito onse omwe timathandizira commit by commit. Makamaka, mwachitsanzo, tilibe chithandizo cha PostgreSQL 9.4-9.5. Timawathandiza chifukwa anthu ammudzi amathandizira PostgreSQL, koma sitimadzipereka potsimikizira kuti chilichonse chikugwirabe ntchito. Ndipo ndikuganiza kuti ichi ndi chiopsezo chachikulu.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Tili ndi WAL-G yomwe ikugwira ntchito pa magulu opitilira chikwi mu Yandex Database Management, ndipo timasunga ma terabytes mazana angapo a deta tsiku lililonse.

Tili ndi zinthu zambiri zofunika kuchita mu code yathu. Ngati mukufuna mapulogalamu, bwerani mudzatigwirizane nafe. Tikuyembekezera zopempha ndi mafunso.

Zosunga zobwezeretsera kuchokera ku WAL-G. Mu 2019 muli chiyani? Andrey Borodin

Mafunso anu

Madzulo abwino! Zikomo! Ndikuganiza kuti ngati mugwiritsa ntchito WAL-delta, mwina mumadalira kwambiri zolemba zonse patsamba. Ndipo ngati ndi choncho, kodi mwachita mayeso aliwonse? Mwawonetsa graph yabwino. Kodi zimawoneka zoyipa bwanji ngati mutaletsa FPW?

Tatsegula tsamba lonse lolemba; sitinayese kuletsa. Izi zikutanthauza kuti, ine, monga wopanga mapulogalamu, sindinayese kuletsa. Oyang'anira makina omwe adafufuza izi mwina adayesa. Koma tikufunika FPW. Pafupifupi palibe amene amaletsa chifukwa apo ayi sizingatheke kutenga kopi yosungira.

Zikomo chifukwa cha lipotilo! Ndili ndi mafunso awiri. Choyamba ndi chakuti kodi malo osungiramo zinthu patebulo adzachitika bwanji?

Tikuyembekezera pempho loti tikope. Ma database athu amakhala pa ma SSD ndi ma NMVE drive, ndipo sitikufunikiradi izi. Sindili wokonzeka kugwiritsa ntchito nthawi yambiri kuti izigwire ntchito pakadali pano. Ndine wodzipereka kuchirikiza. Anthu ena athandizira, koma athandizira m'njira yomwe imawakomera. Achita bwino, koma sakupereka pempho loti tikope. (Yowonjezedwa mu mtundu 0.2.13)

Ndipo funso lachiwiri. Munanena poyamba kuti WAL-G imaganiza kuti imagwira ntchito yokha ndipo siifunikira ma wrappers. Ine ndimagwiritsa ntchito ma wrappers. N’chifukwa chiyani sindiyenera kuwagwiritsa ntchito?

Tikufuna kuti zikhale zosavuta ngati balalaika. Izi zikutanthauza kuti simukusowa china chilichonse kupatula balalaika. Tikufuna kuti dongosololi likhale losavuta. Ngati muli ndi magwiridwe antchito omwe mukufuna kuti agwiritsidwe ntchito mu script, bwerani mudzatiuze - tidzagwiritsa ntchito mu Go.

Madzulo abwino! Zikomo chifukwa cha lipotilo! Sitinathe kugwiritsa ntchito WAL-G kuti igwire ntchito ndi GPG decryption. Imabisa bwino, koma imakana kuchotsa deta. Kodi pali vuto ndi ife? Mkhalidwewu ndi wokhumudwitsa.

Pangani vuto pa GitHub, tiyeni tikambirane.

Ndiye simunakumanepo ndi izi?

Pali vuto linalake lomwe limabuka pamene WAL-G sakumvetsa kuti fayilo ndi chiyani, amafunsa kuti, "Mwina yasungidwa?" N'zotheka kuti vuto si kubisa konse. Ndikufuna kukonza zolemba za izi. Iyenera kuchotsedwa. Pakadali pano tikugwira ntchito pankhaniyi chifukwa sitikukonda momwe dongosolo lopezera makiyi apagulu ndi achinsinsi limakonzedwera. Chifukwa timayimbira GPG yakunja kuti tipeze makiyi ake, kenako timatenga makiyi awa ndikuwapatsa ku GPG yamkati, yomwe imatsegula PGP, yomwe imaphatikizidwa mu WAL-G, kenako timayitcha kubisa. Tikufuna kukonza dongosololi pankhaniyi ndipo tikufuna kuthandizira kubisa kwa Libsodium (Yowonjezedwa mu mtundu 0.2.15). Zachidziwikire, kubisa kuyenera kugwira ntchito, koma tiyeni tiganizire—tikufunika zizindikiro zambiri kuposa mawu ochepa chabe. Tikhoza kusonkhana m'chipinda cha wokamba nkhani nthawi ina ndikuyang'ana dongosololi. (Kubisa kwa PGP popanda GPG yakunja — v0.2.9)

Moni! Zikomo chifukwa cha lipotilo! Ndili ndi mafunso awiri. Ndili ndi chikhumbo chachilendo chosunga zolemba za pg_basebackup ndi WAL kwa opereka awiri—ndiko kuti, ndikufuna kuzisunga mu mtambo umodzi ndi wina. Kodi pali njira yochitira izi?

Izi sizikupezeka pano, koma ndi lingaliro losangalatsa.

Sindikhulupirira wopereka chithandizo m'modzi, ndikufuna kukhala ndi wopereka chithandizo wina ngati zingachitike.

Lingaliroli ndi losangalatsa. Mwaukadaulo, sizingakhale zovuta kuligwiritsa ntchito. Kuti mutsimikizire kuti lingalirolo silikutayika, chonde mungapange vuto pa GitHub?

Inde ndithudi.

Ndipo kenako, ophunzira akabwera ku Google Summer of Code, tidzawawonjezera ku polojekitiyi kuti akhale ndi ntchito yambiri yoti achite ndikupindula nayo.

Ndipo funso lachiwiri. Pali vuto pa GitHub. Ndikuganiza kuti latsekedwa kale. Pali mantha panthawi yobwezeretsa. Kuti mukonze, mwapanga kapangidwe kosiyana. Lili pomwepo m'mavuto. Palinso njira yokhazikitsira zosintha zachilengedwe mu ulusi umodzi. Ndicho chifukwa chake limagwira ntchito pang'onopang'ono. Takumanapo ndi vutoli kale, ndipo silinakonzedwebe.

Vuto ndilakuti pazifukwa zina, malo osungira (CEPH) amasiya kulumikizana tikafika pa intaneti ndi ndalama zambiri. Kodi tingatani pa izi? Njira yoyeseranso ndi iyi: Timayesetsa kutsitsa fayilo kachiwiri. Ngati mafayilo enaake sanatsitsidwe pa intaneti imodzi, timapanga njira yachiwiri kwa onse omwe sanatsitsidwe. Ndipo bola ngati fayilo imodzi yatsitsidwa nthawi iliyonse, timabwerezabwereza, ndikubwerezabwereza, ndikubwerezabwereza. Takhala tikukonza njira yoyeseranso - exponential backoff. Koma sizikudziwika bwino chochita ndi njira yosungira yomwe imangotsitsidwa ndi makina osungira. Ndiko kuti, tikakweza mu ulusi umodzi, sizimasiya kulumikizanaku. Kodi tingakonze chiyani apa? Tili ndi netiweki yoletsa kulumikizana; titha kuchepetsa kulumikizana kulikonse ndi kuchuluka kwa ma byte omwe amatumiza. Kupanda kutero, sindikudziwa momwe ndingathanirane ndi mfundo yakuti malo osungira zinthu satilola kukweza kapena kutsitsa nthawi imodzi.

Palibe SLA? Kodi palibe kufotokozera momwe amadzilolera kuzunzidwa?

Mfundo ndi yakuti anthu omwe amabwera kwa ine ndi funso ili nthawi zambiri amakhala ndi malo awo osungiramo zinthu. Chifukwa chake, palibe amene amachokera ku Amazon, Google Cloud, kapena Yandex Object Storage.

Mwina funsolo silikuyankhidwanso kwa inu?

Pankhaniyi, funsoli silikukhudza kwa ndani. Ngati pali malingaliro aliwonse okhudza momwe tingathetsere vutoli, tiyeni tichite mu WAL-G. Koma mpaka pano, ndilibe malingaliro abwino okhudza momwe ndingathetsere vutoli. Pali mautumiki ena a Object Storage omwe amagwira ntchito yosunga zobwezeretsera m'malo mosinthana. Mumawapempha kuti alembe zinthu, ndipo amawonjezera chikwatu. WAL-G imaopa - pali china chake apa chomwe si fayilo, sindingathe kuibwezeretsa, kotero kuti zosunga zobwezeretsera sizinabwezeretsedwe. Chifukwa chake, kwenikweni, muli ndi gulu lobwezeretsedwa kwathunthu, koma likubwezera vuto chifukwa Object Storage yabweretsa chidziwitso chachilendo chomwe sichinamvetse bwino.

Izi zimachitika mu mtambo wa Mail.

Ngati n'kotheka kupanga chobwerezabwereza…

Imatha kubwerezedwanso nthawi zonse…

Ngati pali njira yobwerezabwereza, ndikuganiza kuti tiyesa njira zoyeseranso ndikupeza momwe tingayeserenso ndikumvetsetsa zomwe mtambo umafuna kwa ife. Mwina sizingathetse kulumikizana modalirika ndi maulumikizidwe atatu, kotero tidzawonjezera mosamala kufika pa atatu. Pakali pano, timachotsa kulumikizana mwachangu kwambiri, zomwe zikutanthauza kuti ngati nditayendetsa njira yobwezeretsa ya ulusi 16, ndikayesanso koyamba, padzakhala ulusi asanu ndi atatu, ulusi anayi, ulusi awiri, ndi umodzi. Kenako idzakoka mafayilo amodzi ndi amodzi mu ulusi umodzi. Ngati pali ma values ​​ena amatsenga, monga ulusi 7,5 kukhala wabwino kwambiri pakutsitsa, tidzapitiriza nawo ndikuyesera kuyendetsa ulusi wina 7,5. Ndi lingaliro limenelo.

Zikomo chifukwa cha lipotilo! Kodi njira yonse yogwirira ntchito ya WAL-G imawoneka bwanji? Mwachitsanzo, ngati palibe deta ya delta patsamba lililonse. Timatenga zosunga zobwezeretsera koyamba, kenako timasunga voliyumu yonse mpaka titakhala abuluu. Monga momwe ndikumvera, pali kusweka apa. Nthawi ina, zosunga zobwezeretsera za masamba ziyenera kupangidwa. Kodi njira ina yakunja imayendetsa izi, kapena izi zimachitika bwanji?

API yosungira deta ya delta ndi yosavuta. Pali nambala—max delta steps, ndikuganiza kuti ndi momwe imatchulidwira. Mwachisawawa, ndi zero. Izi zikutanthauza kuti nthawi iliyonse mukakankhira zosunga zobwezeretsera, zimayika zosunga zobwezeretsera zonse. Ngati musintha kukhala nambala iliyonse yabwino, monga 3, ndiye nthawi ina mukakankhira zosunga zobwezeretsera, zimayang'ana mbiri ya zosunga zobwezeretsera zakale. Zimaona kuti simunapitirire unyolo wa 3-delta ndipo zimapanga delta.

Kotero nthawi iliyonse tikayendetsa WAL-G, imayesa kupanga backup yonse?

Ayi, timayendetsa WAL-G ndipo imayesetsa kupanga delta ngati mfundo zanu zikulola.

Mwachidule, ngati mutayiyendetsa ndi zero nthawi iliyonse, idzakhala ngati pg_basebackup?

Ayi, idzagwirabe ntchito mwachangu chifukwa imagwiritsa ntchito compression ndi parallelism. Pg_basebackup idzakupatsani mphamvu. WAL-G ikuganiza kuti mwakonza zosungira zakale ndipo ipereka chenjezo ngati silili choncho.

Pg_basebackup ikhoza kuyendetsedwa popanda ma shaft.

Inde, ndiye kuti adzachita chimodzimodzi. Pg_basebackup imakopera ku fayilo. Mwa njira, tili ndi chinthu chatsopano chomwe ndayiwala kutchula. Tsopano tikhoza kusunga kuchokera ku pg_basebackup kupita ku fayilo. Sindikudziwa chifukwa chake izi ndizofunikira, koma zilipo.

Mwachitsanzo, pa CephFS. Si aliyense amene akufuna kukonza Object Storage.

Inde, mwina ndi chifukwa chake anafunsa za izi, kuti tithe kuzigwiritsa ntchito. Ndipo tinatero.

Zikomo chifukwa cha lipotilo! Ndili ndi funso lokhudza kukopera ku fayilo. Kodi pakadali pano mukuthandizira kukopera ku malo osungira akutali, monga shelufu yomwe ili mu data center kapena china chake?

Pofotokoza motere, ndi funso lovuta. Inde, timalichirikiza, koma magwiridwe antchito awa sanaphatikizidwe mu kutulutsidwa kulikonse. Izi zikutanthauza kuti, ma pre-release onse amachirikiza, koma ma version omaliza salichirikiza. Magwiridwe antchito awa adawonjezedwa mu mtundu wa 0.2. Idzakhala mu kutulutsidwa komaliza posachedwa, tikangokonza zolakwika zonse zodziwika. Koma pakadali pano, izi ndizotheka mu kutulutsidwa koyambirira. Kutulutsidwa koyambirira kuli ndi zolakwika ziwiri: vuto ndi WAL-E recovery, lomwe sitinakonze. Ndipo kutulutsidwa koyambirira kwaposachedwa kwawonjezera cholakwika chokhudza delta backup. Chifukwa chake, tikukulimbikitsani kuti aliyense agwiritse ntchito ma version omaliza. Kutulutsidwa koyambirira kukakhala kopanda zolakwika, tidzatha kunena kuti tikuthandizira Google Cloud, zinthu zogwirizana ndi S3, komanso malo osungira mafayilo.

Moni, zikomo chifukwa cha lipotilo. Monga momwe ndikumvera, WAL-G si dongosolo lokhazikika ngati Bartender. Kodi mukukonzekera kupita mbali imeneyo?

Vuto ndilakuti tachoka mbali imeneyo. WAL-G imapezeka pa database host, pa cluster host, ndi pa cluster hosts zonse. Titasamukira ku ma cluster ambirimbiri, tinali ndi ma Bartender ambiri okhazikitsa. Ndipo nthawi iliyonse chinthu chikasweka, ndi vuto lalikulu. Chifukwa amafunika kukonzedwa, ndipo tifunika kudziwa kuti ndi ma cluster ati omwe alibe ma backups. Sindikukonzekera kupanga WAL-G ya ma hardware backup systems enieni. Ngati anthu ammudzi akufuna magwiridwe antchito ena apa, sindikutsutsa konse.

Tili ndi magulu omwe ali ndi udindo wosunga deta. Ndipo tikusangalala kwambiri kuti si ife, kuti pali anthu odzipereka omwe amaika mafayilo athu pamalo otetezeka. Amapanga mitundu yonse ya ma code anzeru kuti apirire kutayika kwa mafayilo angapo. Ndiwo omwe ali ndi udindo wogwiritsa ntchito netiweki. Mukakhala ndi bartender, mutha kudzipeza mwadzidzidzi muli ndi ma database ang'onoang'ono okhala ndi magalimoto ambiri omwe alumikizidwa pa seva imodzi. Mukuwoneka kuti muli ndi malo ambiri, koma mwanjira ina netiwekiyo singathe kuthana nayo yonse. Zingakhale zosiyana. Pali malo ambiri a netiweki, pali ma processor cores, koma ma disk akutha. Ndipo tatopa ndi kufunikira kosintha chilichonse, kotero tidasintha kupanga kusungira deta kukhala ntchito yosiyana, yoyendetsedwa ndi anthu odzipereka.

P.S. Mtundu watsopano watulutsidwa. 0.2.15, zomwe zimakulolani kugwiritsa ntchito fayilo yosinthira ya .walg.json, yomwe ili mu chikwatu cha Postgres mwachisawawa. Mutha kupewa kugwiritsa ntchito ma bash scripts. Chitsanzo cha fayilo ya .walg.json chili munkhaniyi. https://github.com/wal-g/wal-g/issues/545

Video:

Sewerani kanema


Source: www.habr.com