{"id":78887,"date":"2020-04-22T19:42:51","date_gmt":"2020-04-22T17:42:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov"},"modified":"2020-04-22T19:42:51","modified_gmt":"2020-04-22T17:42:51","slug":"wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>V\u0103 propun s\u0103 consulta\u021bi transcrierea raportului din \u00eenceputul anului 2020 de Georgy Rylov \u201eWAL-G: oportunit\u0103\u021bi noi \u0219i extinderea comunit\u0103\u021bii\u201d<\/strong><\/p>\n<p><\/p>\n<p>\u00centre mentori open-source apar numeroase probleme pe m\u0103sur\u0103 ce ace\u0219tia cresc. Cum s\u0103 scrii din ce \u00een ce mai multe func\u021bionalit\u0103\u021bi necesare, s\u0103 repari din ce \u00een ce mai multe probleme \u0219i s\u0103 reu\u0219e\u0219ti s\u0103 verifici din ce \u00een ce mai multe cereri de integrare? Folosind exemplul WAL-G (un instrument de backup pentru PostgreSQL), voi povesti despre cum am abordat aceste probleme, lans\u00e2nd un curs de dezvoltare Open-source la universitate, ceea ce am realizat \u0219i spre ce ne \u00eendrept\u0103m.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/c76e27949b782480284ab52791fdfe15.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Salut din nou, tuturor! Sunt dezvoltator la Yandex din Ekaterinburg. Ast\u0103zi voi vorbi despre WAL-G.<\/p>\n<p><\/p>\n<p>\u00cen titlul prezent\u0103rii nu s-a spus c\u0103 este vorba despre backup-uri. Cineva nu \u0219tie ce este WAL-G? Sau toat\u0103 lumea \u0219tie? Ridica\u021bi m\u00e2na cei care nu \u0219tiu. Wow, a\u021bi venit la prezentare \u0219i nu \u0219ti\u021bi despre ce este vorba.<\/p>\n<p><\/p>\n<p>Permite\u021bi-mi s\u0103 v\u0103 explic ce va urma ast\u0103zi. A ie\u0219it astfel \u00eenc\u00e2t echipa noastr\u0103 se ocup\u0103 de backup-uri de ceva vreme. \u0218i aceasta este o alt\u0103 prezentare dintr-o serie \u00een care vorbim despre cum ne p\u0103str\u0103m datele \u00een siguran\u021b\u0103, fiabil, convenabil \u0219i eficient.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cen seriile anterioare au fost multe prezent\u0103ri ale lui Andrei Borodin, Vladimir Leskov. Am fost mul\u021bi. \u0218i to\u021bi am vorbit despre WAL-G de mul\u021bi ani. <\/p>\n<p><\/p>\n<p>clck.ru\/F8ioz \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2018\/abstracts\/3964\">https:\/\/www.highload.ru\/moscow\/2018\/abstracts\/3964<\/a><\/noindex><\/p>\n<p><\/p>\n<p>clck.ru\/Ln8Qw \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5981\">https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5981<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Aceast\u0103 prezentare va fi pu\u021bin diferit\u0103 de celelalte, deoarece acolo s-a discutat mai mult despre partea tehnic\u0103, iar aici voi povesti despre cum ne-am confruntat cu problemele legate de cre\u0219terea comunit\u0103\u021bii. \u0218i cum am venit cu o idee mic\u0103 care ne ajut\u0103 s\u0103 facem fa\u021b\u0103. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Acum c\u00e2\u021biva ani WAL-G era un proiect destul de mic, pe care l-am ob\u021binut de la Citus Data. \u0218i abia l-am preluat. Era dezvoltat de o singur\u0103 persoan\u0103.<\/p>\n<p><\/p>\n<p>\u0218i \u00een WAL-G lipseau:<\/p>\n<p><\/p>\n<ul>\n<li>Backup-uri de pe replic\u0103.<\/li>\n<li>Nu erau backup-uri incrementale.<\/li>\n<li>Nu erau backup-uri WAL-Delta. <\/li>\n<li>\u0218i multe altele lipseau.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>\u00cen ace\u0219ti c\u00e2\u021biva ani, WAL-G a crescut semnificativ.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0218i p\u00e2n\u0103 \u00een 2020 toate cele men\u021bionate anterior au ap\u0103rut deja. \u0218i la toate acestea s-a ad\u0103ugat faptul c\u0103 acum avem:<\/p>\n<p><\/p>\n<ul>\n<li>Peste 1 000 de stele pe GitHub.<\/li>\n<li>150 de fork-uri.<\/li>\n<li>Aproape 15 PR-uri deschise.<\/li>\n<li>\u0218i mul\u021bi al\u021bi contribuabili. <\/li>\n<li>\u0218i probleme deschise constant. \u0218i asta \u00een condi\u021biile \u00een care intr\u0103m acolo literalmente \u00een fiecare zi \u0219i facem ceva cu asta. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0218i am ajuns la concluzia c\u0103 acest proiect necesit\u0103 mai mult\u0103 aten\u021bia noastr\u0103, chiar \u0219i atunci c\u00e2nd noi \u00een\u0219ine nu trebuie s\u0103 implement\u0103m nimic pentru serviciul nostru Managed Databases la Yandex.<\/p>\n<p><\/p>\n<p>\u0218i undeva \u00een toamna anului 2018, ne-a venit o idee. De obicei, echipa are c\u00e2teva modalit\u0103\u021bi de a dezvolta func\u021bii sau de a corecta erori, atunci c\u00e2nd nu ave\u021bi suficiente resurse. De exemplu, pute\u021bi angaja un alt dezvoltator \u0219i s\u0103-i pl\u0103ti\u021bi salariul. Sau pute\u021bi angaja un stagiar pentru o perioad\u0103 \u0219i s\u0103-i pl\u0103ti\u021bi o remunera\u021bie. Dar exist\u0103 \u0219i un grup destul de mare de oameni, dintre care o parte deja \u0219tie s\u0103 scrie cod. Pur \u0219i simplu, nu \u0219ti\u021bi \u00eentotdeauna ce calitate are codul respectiv.<\/p>\n<p><\/p>\n<p>Ne-am g\u00e2ndit \u0219i am decis s\u0103 \u00eencerc\u0103m s\u0103 atragem studen\u021bi. Dar studen\u021bii nu vor participa \u00een tot. Ei vor face doar o parte din munc\u0103. De exemplu, vor scrie teste, vor corecta erori, vor implementa func\u021bii care nu afecteaz\u0103 func\u021bionalitatea principal\u0103. Func\u021bionalitatea principal\u0103 const\u0103 \u00een crearea de backup-uri \u0219i restaurarea acestora. Dac\u0103 se produce o eroare \u00een crearea unui backup, ne vom confrunta cu o pierdere de date. \u0218i, bine\u00een\u021beles, nimeni nu dore\u0219te asta. Toat\u0103 lumea vrea ca totul s\u0103 fie foarte sigur. De aceea, codul \u00een care avem mai pu\u021bin \u00eencredere dec\u00e2t \u00een propriul nostru nu dorim, desigur, s\u0103-l accept\u0103m. Adic\u0103, orice cod non-criticat este ceea ce am dori s\u0103 primim de la m\u00e2inile noastre suplimentare.<\/p>\n<p><\/p>\n<p><strong>\u00cen ce condi\u021bii este acceptat PR-ul studentului<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Ei trebuie s\u0103-\u0219i acopere codul cu teste. Totul trebuie s\u0103 treac\u0103 prin CI. <\/li>\n<li>\u0218i, de asemenea, trecem prin 2 revizuiri. Una de Andrei Borodin \u0219i una de la mine. <\/li>\n<li>\u0218i, \u00een plus, pentru a verifica c\u0103 acest lucru nu va strica nimic \u00een serviciul nostru, \u00eencarc separat o compunere cu acest commit. \u0218i verific\u0103m \u00een testele end-to-end c\u0103 nimic nu se stric\u0103.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Curs specializat pe Open Source<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Un pic despre de ce este necesar \u0219i de ce mi se pare o idee genial\u0103. <\/p>\n<p><\/p>\n<p><strong>Pentru noi, beneficiul este evident:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Ob\u021binem m\u00e2ini suplimentare. <\/li>\n<li>\u0218i c\u0103ut\u0103m candida\u021bi pentru echip\u0103 dintre studen\u021bi capabili, care scriu cod de calitate. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Care este beneficiul pentru studen\u021bi?<\/strong><\/p>\n<p><\/p>\n<p>Ele pot fi mai pu\u021bin evidente, deoarece studen\u021bii, \u00een cel mai bun caz, nu primesc bani pentru codul pe care \u00eel scriu, ci doar note \u00een carnet. <\/p>\n<p><\/p>\n<p>I-am \u00eentrebat despre asta. \u0218i din c\u00e2te mi-au spus:<\/p>\n<p><\/p>\n<ul>\n<li>Experien\u021ba de contributor \u00een Open Source.<\/li>\n<li>Ob\u021binerea unei men\u021biuni \u00een CV.<\/li>\n<li>A se exprima \u0219i a trece un interviu la Yandex.<\/li>\n<li>A deveni participant la GSoC.<\/li>\n<li>+1 curs special pentru cei care doresc s\u0103 scrie cod.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nu voi povesti despre cum a fost organizat cursul. Voi spune doar c\u0103 WAL-G a fost proiectul principal. De asemenea, am inclus \u00een acest curs proiecte precum Odyssey, PostgreSQL \u0219i ClickHouse.<\/p>\n<p><\/p>\n<p>\u0218i am avut sarcini nu doar \u00een acest curs, ci am oferit \u0219i diplome \u0219i lucr\u0103ri de curs.<\/p>\n<p><\/p>\n<p><strong>Dar care este beneficiul pentru utilizatori?<\/strong><\/p>\n<p><\/p>\n<p>Acum s\u0103 trecem la partea care v\u0103 intereseaz\u0103 mai mult. Ce c\u00e2\u0219tig ave\u021bi din asta? Beneficiul este c\u0103 studen\u021bii au reparat multe buguri. \u0218i au realizat cereri de caracteristici pe care ne-a\u021bi cerut s\u0103 le implement\u0103m. <\/p>\n<p><\/p>\n<p>\u0218i permite\u021bi-mi s\u0103 v\u0103 povestesc despre lucrurile pe care le-a\u021bi dorit de mult timp \u0219i care au fost implementate.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Suport pentru tablespaces. Suportul pentru tablespaces \u00een WAL-G a fost a\u0219teptat, probabil, \u00eenc\u0103 de la lansarea WAL-G, deoarece WAL-G este succesorul unui alt instrument de backup, WAL-E, unde au fost sus\u021binute backup-urile bazei de date cu tablespaces.<\/p>\n<p><\/p>\n<p>Pe scurt, amintesc ce este \u0219i de ce este necesar. De obicei, toate datele dvs. Postgres ocup\u0103 un singur director pe sistemul de fi\u0219iere, care se nume\u0219te baza. \u0218i acest director con\u021bine deja toate fi\u0219ierele \u0219i subdirectoarele necesare pentru Postgres.<\/p>\n<p><\/p>\n<p>Tablespaces sunt directoare \u00een care sunt stocate datele Postgres, dar acestea nu stau \u00een afara directorului de baz\u0103. Pe diapozitiv se poate vedea c\u0103 tablespac-urile se afl\u0103 \u00een afara directorului de baz\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cum arat\u0103 asta pentru Postgres \u00eensu\u0219i? \u00cen directorul de baz\u0103 exist\u0103 un subdirector numit pg_tblspc. \u0218i \u00een acesta se afl\u0103 link-uri simbolice c\u0103tre directoarele \u00een care sunt stocate efectiv datele Postgres \u00een afara directorului de baz\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>C\u00e2nd folosi\u021bi toate acestea, comenzile pentru dvs. pot ar\u0103ta cam a\u0219a. Adic\u0103, crea\u021bi o tabel\u0103 \u00eentr-un tablespace specificat \u0219i vede\u021bi unde se afl\u0103 acum. Aceste dou\u0103 ultime linii, cele dou\u0103 ultime comenzi apelate, arat\u0103 un anumit drum. Dar, de fapt, nu este un drum real. Este un drum cu un prefix din directorul de baz\u0103 c\u0103tre tablespace. \u0218i de acolo este mapat printr-un link simbolic care duce la datele dvs. reale.<\/p>\n<p><\/p>\n<p>Toate acestea nu sunt folosite \u00een echipa noastr\u0103, dar au fost folosite de mul\u021bi al\u021bi utilizatori WAL-E, care ne-au spus c\u0103 doresc s\u0103 migreze la WAL-G, dar acest lucru le-a \u00eempiedicat. Acum este sus\u021binut.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O alt\u0103 caracteristic\u0103 pe care ne-a adus cursul nostru special este catchup. Despre catchup \u0219tiu oamenii care, probabil, au lucrat mai mult cu Oracle dec\u00e2t cu Postgres.<\/p>\n<p><\/p>\n<p>\u00centr-un rezumat, iat\u0103 despre ce este vorba. O topologie a clusterei din serviciul nostru poate ar\u0103ta cam a\u0219a. Avem un master. Exist\u0103 o replic\u0103 care transmite de la el jurnalul write-ahead. Replica \u00eei spune masterului la ce LSN se afl\u0103 \u00een prezent. \u00cen paralel, jurnalul poate fi arhivat. \u00cen plus, se fac copii de siguran\u021b\u0103 \u00een cloud.<\/p>\n<p><\/p>\n<p>Ce probleme pot ap\u0103rea? C\u00e2nd ave\u021bi o baz\u0103 de date destul de mare, exist\u0103 posibilitatea ca replica s\u0103 \u00eenceap\u0103 s\u0103 \u00eent\u00e2rzie semnificativ fa\u021b\u0103 de master. \u0218i poate s\u0103 \u00eent\u00e2rzie at\u00e2t de mult \u00eenc\u00e2t s\u0103 nu o mai poat\u0103 ajunge niciodat\u0103 din urm\u0103. Aceast\u0103 problem\u0103 trebuie rezolvat\u0103 de obicei \u00eentr-un fel. <\/p>\n<p><\/p>\n<p>Cel mai simplu mod este de a elimina replica \u0219i de a o reinstala, deoarece nu o va mai ajunge niciodat\u0103, iar problema trebuie abordat\u0103. Dar acest proces dureaz\u0103 destul de mult, \u00eentruc\u00e2t recuperarea unei \u00eentregi copii de siguran\u021b\u0103 a unei baze de date de 10 TB este un proces extrem de \u00eendelungat. Ne dorim s\u0103 facem asta c\u00e2t mai repede posibil atunci c\u00e2nd apar astfel de probleme. Iar pentru asta este destinat catchup.<\/p>\n<p><\/p>\n<p>Catchup permite utilizarea copiilor de siguran\u021b\u0103 delta care sunt salvate \u00een cloud \u00eentr-un mod specific. Indica\u021bi la ce LSN se afl\u0103 replica \u00eent\u00e2rziat\u0103 \u0219i \u00eel specifica\u021bi \u00een comanda catchup pentru a crea o copie de siguran\u021b\u0103 delta \u00eentre acel LSN \u0219i LSN-ul la care se afl\u0103 \u00een prezent clusterul dumneavoastr\u0103. Apoi, restaura\u021bi aceast\u0103 copie de siguran\u021b\u0103 pe replica care \u00eent\u00e2rzia.<\/p>\n<p><\/p>\n<p><strong>Alte baze de date<\/strong><\/p>\n<p><\/p>\n<p>De asemenea, studen\u021bii ne-au adus imediat multe func\u021bionalit\u0103\u021bi. Deoarece noi \u00een Yandex lucr\u0103m nu doar cu Postgres, ci \u0219i cu MySQL, MongoDB, Redis, ClickHouse, a venit un moment c\u00e2nd a fost necesar s\u0103 putem face copii de siguran\u021b\u0103 cu recuperare point-in-time pentru MySQL \u0219i s\u0103 avem posibilitatea de a le \u00eenc\u0103rca \u00een cloud.<\/p>\n<p><\/p>\n<p>\u0218i ne-am dorit s\u0103 facem acest lucru \u00eentr-un mod similar cu ceea ce face WAL-G. Am decis s\u0103 experiment\u0103m \u0219i s\u0103 vedem cum va ar\u0103ta totul.<\/p>\n<p><\/p>\n<p>La \u00eenceput, f\u0103r\u0103 a separa aceste logici, am scris codul \u00een fork. Am constatat c\u0103 avem un model func\u021bional \u0219i c\u0103 poate func\u021biona. Apoi ne-am g\u00e2ndit c\u0103 principalul nostru public este utilizatorii de PostgreSQL, care folosesc WAL-G. A\u0219adar, trebuie s\u0103 separ\u0103m aceste p\u0103r\u021bi. C\u00e2nd modific\u0103m codul pentru PostgreSQL, s\u0103 nu stric\u0103m MySQL; c\u00e2nd modific\u0103m MySQL, s\u0103 nu stric\u0103m PostgreSQL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prima idee despre cum s\u0103 le separ\u0103m a fost folosirea acelea\u0219i abord\u0103ri folosite \u00een extensiile PostgreSQL. \u015ei, \u00een esen\u021b\u0103, pentru a realiza un backup MySQL, trebuia s\u0103 instala\u021bi o bibliotec\u0103 dinamic\u0103. <\/p>\n<p><\/p>\n<p>Dar aici se observ\u0103 imediat asimetricia acestei abord\u0103ri. C\u00e2nd face\u021bi backup la Postgres, instala\u021bi un utilitar de backup normal pentru Postgres \u0219i totul este excelent. Iar pentru MySQL se pare c\u0103 trebuie s\u0103 instala\u021bi un utilitar de backup pentru Postgres \u0219i, \u00een plus, o bibliotec\u0103 dinamic\u0103 pentru MySQL. Sun\u0103 oarecum ciudat. Ne-am g\u00e2ndit \u0219i noi astfel \u0219i am decis c\u0103 aceasta nu este solu\u021bia de care avem nevoie. <\/p>\n<p><\/p>\n<p><strong>Diferite utilitare pentru Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Dar aceasta ne-a permis, dup\u0103 p\u0103rerea noastr\u0103, s\u0103 ajungem la solu\u021bia corect\u0103 \u2013 separarea diferitelor utilitare pentru diferite baze de date. Acest lucru permitea izolarea logicii legate de backup-urile diferitelor baze de date, care vor apela la o API comun\u0103, implementat\u0103 de WAL-G.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aceasta este partea pe care am scris-o noi \u00een\u0219ine \u2013 \u00eenainte de a le da studen\u021bilor sarcinile. Adic\u0103, aceasta este exact partea unde ei ar fi putut face ceva gre\u0219it, de aceea am decis c\u0103 mai bine facem noi ceva bine \u0219i totul va fi excelent. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dup\u0103 aceea, am dat sarcinile. Ace\u0219tia au fost imediat prelua\u021bi. De la studen\u021bi a fost necesar s\u0103 suporte trei baze. <\/p>\n<p><\/p>\n<p>Este vorba despre MySQL, pe care \u00eel facem backup cu ajutorul WAL-G \u00een acest mod de mai bine de un an. <\/p>\n<p><\/p>\n<p>\u0218i acum MongoDB se apropie de produc\u021bie, acolo se \u00eembun\u0103t\u0103\u021be\u0219te cu r\u0103bdare. Practic, structura pentru toate acestea a fost scris\u0103 de noi. Apoi studen\u021bii au scris lucruri func\u021bionale. \u0218i apoi le ducem la un stadiu pe care putem s\u0103-l accept\u0103m \u00een produc\u021bie.<\/p>\n<p><\/p>\n<p>Aceste sarcini nu p\u0103reau c\u0103 studen\u021bii trebuiau s\u0103 scrie unelte complete de backup pentru fiecare dintre aceste baze. Nu ne-am confruntat cu aceast\u0103 problem\u0103. Problema noastr\u0103 era c\u0103 vroiam recuperare \u00een timp, iar noi vroiam s\u0103 facem backup \u00een cloud. \u0218i am cerut studen\u021bilor s\u0103 scrie un cod care s\u0103 rezolve acest lucru. Studen\u021bii au folosit deja unelte de backup existente, care cumva fac backup-uri, iar apoi au integrat totul cu WAL-G, care trimitea toate acestea \u00een cloud. \u0218i de asemenea ad\u0103ugau recuperarea \u00een timp.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce au mai adus studen\u021bii? Au adus \u00een WAL-G suport pentru criptarea Libsodium.<\/p>\n<p><\/p>\n<p>De asemenea, avem acum politici de p\u0103strare a backup-urilor. Acum backup-urile pot fi marcate ca permanente. \u0218i este mai convenabil pentru serviciul dumneavoastr\u0103 s\u0103 automatiz\u0103m procesul de stocare a acestora. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce rezultate a avut acest experiment?<\/p>\n<p><\/p>\n<p>Ini\u021bial, s-au \u00eenscris peste 100 de persoane la curs. La \u00eenceput, nu am men\u021bionat c\u0103 universitatea din Ekaterinburg este Universitatea Federal\u0103 Ural. Acolo am anun\u021bat totul. 100 de persoane s-au \u00eenscris. De fapt, doar un num\u0103r mult mai mic a \u00eenceput s\u0103 lucreze, aproximativ 30 de persoane. <\/p>\n<p><\/p>\n<p>Chiar mai pu\u021bin de 30 de persoane au terminat cursul, deoarece trebuia s\u0103 scrie teste pentru codurile deja existente. De asemenea, trebuia s\u0103 rezolve o eroare sau s\u0103 implementeze o anumit\u0103 func\u021bionalitate. Totu\u0219i, c\u00e2\u021biva studen\u021bi au reu\u0219it s\u0103 finalizeze cursul.<\/p>\n<p><\/p>\n<p>\u00cen acest moment, studen\u021bii au rezolvat aproximativ 14 probleme \u0219i au realizat 10 func\u021bionalit\u0103\u021bi de diverse dimensiuni. \u0218i, din punctul meu de vedere, aceasta este o \u00eenlocuire complet\u0103 pentru unul sau doi dezvoltatori. <\/p>\n<p><\/p>\n<p>Pe l\u00e2ng\u0103 toate acestea, am eliberat diplome \u0219i lucr\u0103ri de curs. 12 studen\u021bi au primit diplomele. 6 dintre ei au ob\u021binut deja nota 5. Ceilal\u021bi nu au avut \u00eenc\u0103 sus\u021bineri, dar cred c\u0103 le va merge bine \u0219i lor. <\/p>\n<p><\/p>\n<p>Planuri de viitor<\/p>\n<p><\/p>\n<p>Ce planuri avem pentru viitor?<\/p>\n<p><\/p>\n<p>Cel pu\u021bin acele cereri de func\u021bionalit\u0103\u021bi pe care le-am auzit deja de la utilizatori \u0219i pe care dorim s\u0103 le implement\u0103m. Acestea sunt:<\/p>\n<p><\/p>\n<ul>\n<li>Monitorizarea corectitudinii urm\u0103ririi cronologiei \u00een arhiva backup-urilor HA-cluster. Acest lucru se poate face cu ajutorul WAL-G. \u0218i cred c\u0103 vom g\u0103si studen\u021bi care se vor ocupa de aceasta. <\/li>\n<li>Pentru transferul backup-urilor \u0219i WAL \u00eentre cloud-uri, avem deja o persoan\u0103 responsabil\u0103. <\/li>\n<li>Recent, am publicat ideea c\u0103 putem accelera \u0219i mai mult WAL-G prin decompresia backup-urilor incrementale f\u0103r\u0103 a suprascrie paginile \u0219i optimizarea arhivelor pe care le trimitem acolo. <\/li>\n<\/ul>\n<p><\/p>\n<p>Pute\u021bi s\u0103 le \u00eemp\u0103rt\u0103\u0219i\u021bi aici<\/p>\n<p><\/p>\n<p>La ce a fost aceast\u0103 prezentare? La faptul c\u0103, \u00een afar\u0103 de cei 4 oameni care sus\u021bin acest proiect, avem multe m\u00e2ini suplimentare. \u00cen special, dac\u0103 le scrii pe mesageria privat\u0103. \u0218i dac\u0103 faci backup pentru datele tale folosind WAL-G sau ai dori s\u0103 migrezi la WAL-G, atunci dorin\u021bele tale pot fi luate \u00een considerare destul de u\u0219or.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Acesta este un cod QR \u0219i un link. Pute\u021bi s\u0103 le folosi\u021bi pentru a accesa \u0219i a scrie toate dorin\u021bele voastre. De exemplu, dac\u0103 nu rezolv\u0103m o anumit\u0103 eroare. Sau o func\u021bionalitate pe care o dori\u021bi foarte mult, dar nu o g\u0103si\u021bi \u00eenc\u0103 \u00een niciun serviciu de backup, inclusiv \u00een al nostru. V\u0103 rug\u0103m, nu uita\u021bi s\u0103 ne informa\u021bi despre aceasta.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: noi func\u021bionalit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00centreb\u0103ri<\/p>\n<p><\/p>\n<p><em>Bun\u0103 ziua! V\u0103 mul\u021bumesc pentru prezentare! Am o \u00eentrebare despre WAL-G, dar nu despre Postgres. WAL-G face backup pentru MySQL \u0219i ini\u021biaz\u0103 un backup suplimentar. Dac\u0103 lu\u0103m instala\u021biile moderne pe CentOS \u0219i face\u021bi \"yum install MySQL\", atunci se va instala MariDB. \u00cencep\u00e2nd cu versiunea 10.3, backup-ul suplimentar nu mai este suportat, fiind acceptat backup-ul pentru MariDB. Cum stau lucrurile cu voi \u00een aceast\u0103 privin\u021b\u0103?<\/em><\/p>\n<p><\/p>\n<p>\u00cen prezent, nu am \u00eencercat s\u0103 facem backup pentru MariDB. Am avut solicit\u0103ri pentru suport pentru FoundationDB, dar \u00een general, dac\u0103 exist\u0103 o astfel de solicitare, putem g\u0103si oameni care s\u0103 fac\u0103 acest lucru. Nu este at\u00e2t de mult timp \u0219i nu este at\u00e2t de complicat, a\u0219a cum mi se pare.<\/p>\n<p><\/p>\n<p><em>Bun\u0103 ziua! V\u0103 mul\u021bumesc pentru prezentare! O \u00eentrebare despre poten\u021bialele caracteristici noi. Sunte\u021bi preg\u0103ti\u021bi s\u0103 face\u021bi s\u0103 func\u021bioneze WAL-G cu benzi, astfel \u00eenc\u00e2t s\u0103 putem face backup pe benzi?<\/em><\/p>\n<p><\/p>\n<p>Se pare c\u0103 v\u0103 referi\u021bi la backup pe stocarea cu band\u0103?<\/p>\n<p><\/p>\n<p><em>Da.<\/em><\/p>\n<p><\/p>\n<p>Acolo este Andrei Borodin, care poate r\u0103spunde mai bine dec\u00e2t mine la aceast\u0103 \u00eentrebare. <\/p>\n<p><\/p>\n<p>(Andrei) Da, mul\u021bumesc pentru \u00eentrebare! Am avut o solicitare pentru a transfera backup-ul pe band\u0103 din stocarea cloud. \u0218i pentru aceasta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">este \u00een lucru<\/a><\/noindex> transferul \u00eentre clouduri. Pentru c\u0103 transferul \u00eentre clouduri este o versiune oarecum generalizat\u0103 a transferului pe band\u0103. \u00cen plus, avem o arhitectur\u0103 extensibil\u0103 \u00een ceea ce prive\u0219te stoc\u0103rile. Apropo, multe dintre stoc\u0103ri au fost scrise de studen\u021bi. \u0218i dac\u0103 scrie\u021bi un Storage pentru band\u0103, atunci cu siguran\u021b\u0103 va fi suportat. Suntem preg\u0103ti\u021bi s\u0103 lu\u0103m \u00een considerare un pull request. Trebuie s\u0103 scrie\u021bi un fi\u0219ier, s\u0103 citi\u021bi un fi\u0219ier. Dac\u0103 aceste lucruri sunt f\u0103cute \u00een Go, de obicei se ajunge la 50 de linii de cod. \u0218i atunci banda va fi suportat\u0103 \u00een WAL-G. <\/p>\n<p><\/p>\n<p><em>Mul\u021bumesc pentru prezentare! Este un proces de dezvoltare interesant. Backup-ul este o parte serioas\u0103 a func\u021bionalit\u0103\u021bii, care trebuie s\u0103 fie bine acoperit\u0103 de teste. C\u00e2nd a\u021bi realizat func\u021bionalitatea pentru noile baze, teste au fost scrise \u0219i de studen\u021bi sau le-a\u021bi scris voi \u0219i apoi a\u021bi predat implementarea studen\u021bilor?<\/em><\/p>\n<p><\/p>\n<p>Teste au fost scrise \u0219i de studen\u021bi. Dar studen\u021bii au scris mai mult pentru caracteristici precum noile baze. Ei au scris teste de integrare. \u0218i au scris teste unitare. Dac\u0103 testele de integrare trec, adic\u0103 la momentul actual - acesta este un scenariu, pe care \u00eel executezi manual sau acesta este realizat de cron, de exemplu. A\u0219adar, scenariul este foarte clar. <\/p>\n<p><\/p>\n<p><em>Studen\u021bii nu au foarte mult\u0103 experien\u021b\u0103. C\u00e2t timp se pierde pentru revizuire?<\/em><\/p>\n<p><\/p>\n<p>Da, reviziile necesit\u0103 destul de mult timp. Adic\u0103, de obicei, c\u00e2nd vin mai mul\u021bi dezvoltatori \u0219i spun c\u0103 am f\u0103cut asta, am f\u0103cut asta, trebuie s\u0103 ne g\u00e2ndim \u0219i s\u0103 aloc\u0103m cam o jum\u0103tate de zi pentru a \u00een\u021belege ce au scris. Pentru c\u0103 codul trebuie citit cu aten\u021bie. Ei nu au trecut printr-un interviu. Nu \u00eei cunoa\u0219tem foarte bine, a\u0219a c\u0103 aceasta ia timp considerabil.<\/p>\n<p><\/p>\n<p><em>Mul\u021bumesc pentru prezentare! Anterior, Andrei Borodin a afirmat c\u0103 archive_command \u00een WAL-G ar trebui apelat direct. Dar \u00een cazul unui cluster patron, avem nevoie de logic\u0103 suplimentar\u0103 pentru a determina nodul de la care s\u0103 trimitem jurnalul. Cum rezolva\u021bi aceast\u0103 problem\u0103 la voi?<\/em><\/p>\n<p><\/p>\n<p>Ce problem\u0103 ave\u021bi aici? S\u0103 zicem c\u0103 ave\u021bi o replic\u0103 sincron\u0103 de la care face\u021bi backup? Sau ce?<\/p>\n<p><\/p>\n<p>(Andrei) Problema este c\u0103, \u00eentr-adev\u0103r, WAL-G presupune utilizarea f\u0103r\u0103 scripturi shell. Dac\u0103 lipse\u0219te ceva, atunci haide\u021bi s\u0103 complet\u0103m logica care ar trebui s\u0103 fie \u00een interiorul WAL-G. Referitor la originea arhiv\u0103rii, noi credem c\u0103 arhivarea ar trebui s\u0103 vin\u0103 de la masterul curent din cluster. Arhivarea din replic\u0103 este o idee proast\u0103. Exist\u0103 diferite scenarii cu probleme. \u00cen special, probleme cu arhivarea timeline-urilor \u0219i a informa\u021biilor suplimentare. Mul\u021bumesc pentru \u00eentrebare!<\/p>\n<p><\/p>\n<p>(Clarificare: Am renun\u021bat la ata\u0219area scripturilor shell) <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">\u00een aceast\u0103 problem\u0103<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Bun\u0103 seara! Mul\u021bumesc pentru prezentare! M-a interesat func\u021bia catchup despre care a\u021bi vorbit. Ne-am confruntat cu situatia \u00een care replica \u00eent\u00e2rziase \u0219i nu putea s\u0103 recupereze. \u0218i \u00een WAL-G nu am g\u0103sit descrierea acestei func\u021bii \u00een documente.<\/em><\/p>\n<p><\/p>\n<p>Catchup a ap\u0103rut practic \u00een jurul datei de 20 ianuarie 2020. Poate ar trebui s\u0103 lucr\u0103m mai bine la documenta\u021bie. O scriem noi \u0219i nu o facem neap\u0103rat excelent. \u0218i probabil c\u0103 ar trebui s\u0103 cerem studen\u021bilor s\u0103 o redacteze.<\/p>\n<p><\/p>\n<p><em>Este deja \u00een versiune?<\/em><\/p>\n<p><\/p>\n<p>Cererea de pull a fost deja integrat\u0103, adic\u0103 am verificat-o. Am \u00eencercat aceasta pe un cluster de testare. P\u00e2n\u0103 acum nu am avut situa\u021bii \u00een care s\u0103 putem verifica aceasta \u00een practic\u0103.<\/p>\n<p><\/p>\n<p><em>C\u00e2nd s\u0103 ne a\u0219tept\u0103m?<\/em><\/p>\n<p><\/p>\n<p>Nu \u0219tiu. A\u0219tepta\u021bi o lun\u0103, cu siguran\u021b\u0103 vom verifica.<\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498428\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e \u043c\u0435\u0440\u0435 \u0438\u0445 \u0440\u043e\u0441\u0442\u0430. \u041a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0444\u0438\u0447, \u0447\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 issues&#8217;\u043e\u0432 \u0438 \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 pull request&#8217;\u043e\u0432? \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 WAL-G(backup-tool for PostgreSQL) \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u0440\u0435\u0448\u0430\u043b\u0438 \u044d\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78888,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0435\u043e\u0440\u0433\u0438\u0439 \u0420\u044b\u043b\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-22T17:42:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-22T17:42:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47WAL-G: noi oportunit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii. Georgy Rylov | ProHoster","description":"V\u0103 propun s\u0103 consulta\u021bi transcrierea prezent\u0103rii din \u00eenceputul anului 2020 a lui Georgy Rylov \"WAL-G: noi oportunit\u0103\u021bi \u0219i extinderea comunit\u0103\u021bii\". Men\u021bin\u0103torii open-source se confrunt\u0103 cu multe probleme legate de.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0435\u043e\u0440\u0433\u0438\u0439 \u0420\u044b\u043b\u043e\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 2020 \u0433\u043e\u0434\u0430 \u0413\u0435\u043e\u0440\u0433\u0438\u044f \u0420\u044b\u043b\u043e\u0432\u0430 &quot;WAL-G: \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430&quot; \u0423 \u043c\u0435\u0438\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 open-source \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-22T17:42:51+00:00","article:modified_time":"2020-04-22T17:42:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78887","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:49:45","updated":"2022-09-29 18:48:15","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/78887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}