{"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\/sk\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>N\u00e1jdite si \u010das na pre\u010d\u00edtanie prepisu spr\u00e1vy Georgija Rylova z za\u010diatku roku 2020 \"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00edrenie komunity\".<\/strong><\/p>\n<p><\/p>\n<p>U maintainerov open-source projektov vznik\u00e1 mno\u017estvo probl\u00e9mov, ke\u010f sa projekty zv\u00e4\u010d\u0161uj\u00fa. Ako p\u00edsa\u0165 \u010doraz viac po\u017eadovan\u00fdch funkci\u00ed, opravova\u0165 \u010doraz viac probl\u00e9mov a sledova\u0165 \u010doraz viac pull requestov? Na pr\u00edklade WAL-G (n\u00e1stroj na z\u00e1lohovanie pre PostgreSQL) sa podel\u00edm o to, ako sme tieto probl\u00e9my rie\u0161ili spusten\u00edm kurzu o open-source v\u00fdvoji na univerzite, \u010do sme dosiahli a kam sa chceme posun\u00fa\u0165 \u010falej.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij 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>Ahoj v\u0161em znovu! Jsem v\u00fdvoj\u00e1\u0159 v Yandexu z Jekat\u011brinburgu. A dnes v\u00e1m pov\u00edm o WAL-G.<\/p>\n<p><\/p>\n<p>V n\u00e1zvu zpr\u00e1vy nebylo uvedeno, \u017ee by to m\u011blo n\u011bco spole\u010dn\u00e9ho s z\u00e1lohami. N\u011bkdo nev\u00ed, co je WAL-G? Nebo to v\u0161ichni v\u011bd\u00ed? Zvedn\u011bte ruku, kdo nev\u00ed. \u00da\u017easn\u00e9, p\u0159i\u0161li jste na zpr\u00e1vu a nev\u00edte, o \u010dem je.<\/p>\n<p><\/p>\n<p>Dovolte mi \u0159\u00edct, co bude dnes. Tak se stalo, \u017ee n\u00e1\u0161 t\u00fdm se t\u00edmto t\u00e9matem zab\u00fdv\u00e1 pom\u011brn\u011b dlouho. A to je je\u0161t\u011b jedna zpr\u00e1va v s\u00e9rii, kde vypr\u00e1v\u00edme o tom, jak bezpe\u010dn\u011b, spolehliv\u011b, pohodln\u011b a efektivn\u011b uchov\u00e1v\u00e1me data.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V p\u0159edchoz\u00edch epizod\u00e1ch bylo mnoho zpr\u00e1v od Andreje Borodina, Vladim\u00edra Leskova. Bylo n\u00e1s hodn\u011b. A u\u017e mnoho let jsme v\u0161ichni vypr\u00e1v\u011bli o WAL-G. <\/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>Tato zpr\u00e1va se trochu li\u0161\u00ed od ostatn\u00edch, proto\u017ee tam bylo v\u00edce technick\u00e9 \u010d\u00e1sti, a tady v\u00e1m pov\u00edm, jak jsme se setkali s probl\u00e9my spojen\u00fdmi s r\u016fstem komunity. A jak jsme vymysleli mal\u00fd n\u00e1pad, kter\u00fd n\u00e1m pom\u00e1h\u00e1 to zvl\u00e1dnout. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u0159ed n\u011bkolika lety byl WAL-G pom\u011brn\u011b mal\u00fd projekt, kter\u00fd jsme zd\u011bdili od Citus Data. A my jsme ho jen p\u0159evzali. A vyv\u00edjel ho jeden \u010dlov\u011bk.<\/p>\n<p><\/p>\n<p>A jedin\u00e9, co ve WAL-G chyb\u011blo:<\/p>\n<p><\/p>\n<ul>\n<li>Z\u00e1loha z repliky.<\/li>\n<li>Chyb\u011bly inkrement\u00e1ln\u00ed z\u00e1lohy.<\/li>\n<li>Chyb\u011bly WAL-Delta z\u00e1lohy. <\/li>\n<li>A je\u0161t\u011b spousta dal\u0161\u00edch v\u011bc\u00ed chyb\u011blo.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Za t\u011bch p\u00e1r let WAL-G zna\u010dn\u011b vyrostl.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A do roku 2020 ji\u017e existovalo v\u0161echno v\u00fd\u0161e uveden\u00e9. A k tomu se p\u0159idalo to, \u017ee nyn\u00ed m\u00e1me:<\/p>\n<p><\/p>\n<ul>\n<li>V\u00edce ne\u017e 1 000 hv\u011bzdi\u010dek na GitHubu.<\/li>\n<li>150 fork\u016f.<\/li>\n<li>P\u0159ibli\u017en\u011b 15 otev\u0159en\u00fdch PR.<\/li>\n<li>A je\u0161t\u011b mnoho p\u0159isp\u011bvatel\u016f. <\/li>\n<li>A neust\u00e1le otev\u0159en\u00e9 probl\u00e9my. A to v\u0161e p\u0159i tom, \u017ee tam prakticky ka\u017ed\u00fd den chod\u00edme a n\u011bco s t\u00edm d\u011bl\u00e1me. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A dospeli sme k z\u00e1veru, \u017ee tento projekt si vy\u017eaduje na\u0161u v\u00e4\u010d\u0161iu pozornos\u0165, aj ke\u010f n\u00e1m sam\u00fdm nie je potrebn\u00e9 realizova\u0165 nie\u010do pre na\u0161u slu\u017ebu Managed Databases v YandeXe.<\/p>\n<p><\/p>\n<p>A niekedy na jese\u0148 2018 n\u00e1m napadla my\u0161lienka. Zvy\u010dajne m\u00e1 t\u00edm nieko\u013eko sp\u00f4sobov, ako vyvin\u00fa\u0165 nejak\u00e9 funkcie, opravi\u0165 chyby, ak m\u00e1te nedostatok r\u00fak. Napr\u00edklad, m\u00f4\u017eete naja\u0165 \u010fal\u0161ieho v\u00fdvoj\u00e1ra a plati\u0165 mu peniaze. Alebo m\u00f4\u017eete z\u00edska\u0165 st\u00e1\u017eistu na ur\u010dit\u00fd \u010das a tie\u017e mu plati\u0165 nejak\u00fd plat. Existuje v\u0161ak aj pomerne ve\u013ek\u00e1 skupina \u013eud\u00ed, z ktorej niektor\u00ed u\u017e naozaj vedia p\u00edsa\u0165 k\u00f3d. Len\u017ee neviete v\u017edy, ak\u00fa kvalitu m\u00e1 tento k\u00f3d.<\/p>\n<p><\/p>\n<p>Pomysleli sme si a rozhodli sme sa vysk\u00fa\u0161a\u0165 pril\u00e1ka\u0165 \u0161tudentov. Ale \u0161tudenti sa nebud\u00fa podie\u013ea\u0165 na v\u0161etkom. Bud\u00fa robi\u0165 len ur\u010dit\u00fa \u010das\u0165 pr\u00e1ce. Napr\u00edklad bud\u00fa p\u00edsa\u0165 testy, opravova\u0165 chyby, realizova\u0165 funkcie, ktor\u00e9 sa net\u00fdkaj\u00fa z\u00e1kladnej funk\u010dnosti. Z\u00e1kladn\u00e1 funk\u010dnos\u0165 \u2013 to je vytv\u00e1ranie z\u00e1loh a obnova z\u00e1loh. Ak sa dopust\u00edte chyby pri vytv\u00e1ran\u00ed z\u00e1lohy, strat\u00edme d\u00e1ta. A nikto to, samozrejme, nechce. V\u0161etci chc\u00fa, aby v\u0161etko bolo ve\u013emi spo\u013eahliv\u00e9. Preto k\u00f3d, ktor\u00e9mu d\u00f4verujeme menej, ako svojmu vlastn\u00e9mu, ur\u010dite nechceme pusti\u0165 dovn\u00fatra. T. j. ak\u00fdko\u013evek nekritick\u00fd k\u00f3d \u2013 to je to, \u010do by sme chceli z\u00edska\u0165 od na\u0161ich dodato\u010dn\u00fdch pracovn\u00fdch s\u00edl.<\/p>\n<p><\/p>\n<p><strong>Za ak\u00fdch podmienok sa prij\u00edma PR \u0161tudenta<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Mus\u00ed pokry\u0165 svoj k\u00f3d testami. V\u0161etko mus\u00ed prebieha\u0165 v CI. <\/li>\n<li>A tie\u017e prech\u00e1dzame 2 recenziami. Jedna od Andreja Borodina a jedna moja. <\/li>\n<li>A navy\u0161e, aby som skontroloval, \u017ee to nepo\u0161kod\u00ed ni\u010d v na\u0161ej slu\u017ebe, osobitne nahr\u00e1vam zostavu s t\u00fdmto commitom. A kontrolujeme v end-to-end testoch, \u017ee n\u00e1m ni\u010d nepad\u00e1.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>\u0160peci\u00e1lny kurz o Open Source<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Trochu o tom, pre\u010do je to potrebn\u00e9 a pre\u010do sa mi to zd\u00e1 ako skvel\u00e1 my\u0161lienka. <\/p>\n<p><\/p>\n<p><strong>Pre n\u00e1s je zisk o\u010dividn\u00fd:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Z\u00edskavame dodato\u010dn\u00e9 ruky. <\/li>\n<li>A h\u013ead\u00e1me kandid\u00e1tov do t\u00edmu medzi schopn\u00fdmi \u0161tudentmi, ktor\u00ed p\u00ed\u0161u kvalitn\u00fd k\u00f3d. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Ak\u00fd zisk pre \u0161tudentov?<\/strong><\/p>\n<p><\/p>\n<p>M\u00f4\u017eu by\u0165 menej o\u010dividn\u00e9, preto\u017ee \u0161tudenti, aspo\u0148, nedost\u00e1vaj\u00fa peniaze za ten k\u00f3d, ktor\u00fd p\u00ed\u0161u, ale iba zn\u00e1mky do svojej kreditnej knihy. <\/p>\n<p><\/p>\n<p>Sp\u00fdtal som sa ich na to. A z ich slov:<\/p>\n<p><\/p>\n<ul>\n<li>Sk\u00fasenos\u0165 prispievate\u013ea v Open Source.<\/li>\n<li>Z\u00edska\u0165 riadok v CV.<\/li>\n<li>Prejavte sa a prejdite pohovorom v Yandexe.<\/li>\n<li>Sta\u0148te sa \u00fa\u010dastn\u00edkom GSoC.<\/li>\n<li>+1 \u0161peci\u00e1lny kurz pre t\u00fdch, ktor\u00ed chc\u00fa p\u00edsa\u0165 k\u00f3d.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nebudem rozpr\u00e1va\u0165 o tom, ako bol kurz usporiadan\u00fd. Poviem len to, \u017ee WAL-G bol hlavn\u00fdm projektom. A okrem toho sme do tohto kurzu zahrnuli tak\u00e9 projekty ako Odyssey, PostgreSQL a ClickHouse.<\/p>\n<p><\/p>\n<p>A \u00falohy sme d\u00e1vali nielen v tomto kurze, ale aj vyd\u00e1vali diplomy a bakal\u00e1rske pr\u00e1ce.<\/p>\n<p><\/p>\n<p><strong>A ak\u00fd je pr\u00ednos pre pou\u017e\u00edvate\u013eov?<\/strong><\/p>\n<p><\/p>\n<p>Teraz prejdeme k \u010dasti, ktor\u00e1 v\u00e1s pravdepodobne zauj\u00edma. Ak\u00fd z toho m\u00e1te osoh? Osoh je v tom, \u017ee \u0161tudenti opravili mno\u017estvo ch\u00fdb. A vytvorili po\u017eiadavky na funkcie, ktor\u00e9 ste n\u00e1s \u017eiadali, aby sme ich urobili. <\/p>\n<p><\/p>\n<p>A po\u010fme si poveda\u0165 o veciach, ktor\u00e9 ste d\u00e1vno chceli a ktor\u00e9 boli implementovan\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Podpora tablespaces. Tablespaces v WAL-G sa o\u010dak\u00e1vali pravdepodobne od momentu uvo\u013enenia WAL-G, preto\u017ee WAL-G je n\u00e1stupcom in\u00e9ho n\u00e1stroja na z\u00e1lohovanie WAL-E, v ktorom boli podporovan\u00e9 z\u00e1lohy datab\u00e1z s tablespaces.<\/p>\n<p><\/p>\n<p>Na margo pripomeniem, \u010do to vlastne je a na \u010do je to dobr\u00e9. Zvy\u010dajne s\u00fa v\u0161etky va\u0161e d\u00e1ta Postgres umiestnen\u00e9 v jednom adres\u00e1ri na s\u00faborovom syst\u00e9me, ktor\u00fd sa naz\u00fdva z\u00e1kladn\u00fd. A tento adres\u00e1r u\u017e obsahuje v\u0161etky s\u00fabory a podadres\u00e1re potrebn\u00e9 pre Postgres.<\/p>\n<p><\/p>\n<p>Tablespaces s\u00fa adres\u00e1re, v ktor\u00fdch s\u00fa ulo\u017een\u00e9 d\u00e1ta Postgres, ale nie s\u00fa ulo\u017een\u00e9 mimo z\u00e1kladn\u00e9ho adres\u00e1ra. Na slajde vid\u00edte, \u017ee tablespace s\u00fa umiestnen\u00e9 mimo z\u00e1kladn\u00e9ho adres\u00e1ra.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ako to vyzer\u00e1 pre samotn\u00fd Postgres? V z\u00e1kladnom adres\u00e1ri existuje samostatn\u00fd podadres\u00e1r pg_tblspc. A v \u0148om s\u00fa ulo\u017een\u00e9 symbolick\u00e9 odkazy na adres\u00e1re, v ktor\u00fdch sa skuto\u010dne nach\u00e1dzaj\u00fa d\u00e1ta Postgres mimo z\u00e1kladn\u00e9ho adres\u00e1ra.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ke\u010f pou\u017e\u00edvate v\u0161etky tieto pr\u00edkazy, m\u00f4\u017eu vyzera\u0165 takto. T. j. vytvor\u00edte tabu\u013eku v ur\u010ditej \u0161pecifikovanej tablespace a potom sa pozriete, kde teraz je. Tieto dva posledn\u00e9 riadky, dva posledn\u00e9 vyvolan\u00e9 pr\u00edkazy. A tam je vidie\u0165, \u017ee existuje nejak\u00e1 cesta. Ale v skuto\u010dnosti \u2013 to nie je skuto\u010dn\u00e1 cesta. Je to cesta s prefixom zo z\u00e1kladn\u00e9ho adres\u00e1ra k tablespace. A odtia\u013e je zamapovan\u00e1 symbolick\u00fdm odkazom, ktor\u00fd vedie k va\u0161im skuto\u010dn\u00fdm d\u00e1tam.<\/p>\n<p><\/p>\n<p>My to v\u0161etko nepou\u017e\u00edvame v na\u0161ej t\u00edmu, ale mnoh\u00ed in\u00ed pou\u017e\u00edvatelia WAL-E to pou\u017e\u00edvali, ktor\u00ed n\u00e1m p\u00edsali, \u017ee chc\u00fa prejs\u0165 na WAL-G, ale to im br\u00e1nilo. Teraz je to podporovan\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010eal\u0161ou funkciou, ktor\u00fa n\u00e1m priniesol n\u00e1\u0161 \u0161peci\u00e1lny kurz, je catchup. O catchup vedia \u013eudia, ktor\u00ed pravdepodobne pracovali viac s Oracle ako s Postgresom.<\/p>\n<p><\/p>\n<p>Stru\u010dne o tom, \u010do to je. Takto m\u00f4\u017ee vyzera\u0165 topol\u00f3gia klastera v na\u0161ej slu\u017ebe. M\u00e1me majstra. Je tu replik\u00e1tor, ktor\u00fd streamuje od neho write-ahead log. A replik\u00e1tor hovor\u00ed majstrovi, na ktorom LSN sa pr\u00e1ve nach\u00e1dza. Paralelne s t\u00fdm m\u00f4\u017ee by\u0165 arch\u00edvovan\u00fd \u017eurn\u00e1l. Okrem arch\u00edvovania \u017eurn\u00e1lu sa do cloudu odosielaj\u00fa z\u00e1lohy. A s\u00fa zasielan\u00e9 delta-z\u00e1lohy.<\/p>\n<p><\/p>\n<p>Ak\u00fd m\u00f4\u017ee by\u0165 probl\u00e9m? Ke\u010f m\u00e1te dostato\u010dne ve\u013ek\u00fa datab\u00e1zu, m\u00f4\u017ee sa sta\u0165, \u017ee replik\u00e1tor za\u010dne v\u00fdrazne zaost\u00e1va\u0165 za majstrom. A zaost\u00e1va tak silno, \u017ee ho u\u017e nikdy nedo\u017eenie. Tento probl\u00e9m sa zvy\u010dajne mus\u00ed nejako rie\u0161i\u0165. <\/p>\n<p><\/p>\n<p>A najjednoduch\u0161\u00ed sp\u00f4sob je odstr\u00e1ni\u0165 replik\u00e1tor a nanovo ho naladi\u0165, preto\u017ee u\u017e nikdy nedo\u017eenie, a je potrebn\u00e9 sa vysporiada\u0165 s probl\u00e9mom. Ale to trv\u00e1 dos\u0165 dlho, preto\u017ee obnovenie celej z\u00e1lohy datab\u00e1zy o ve\u013ekosti 10 TB je ve\u013emi, ve\u013emi zd\u013ahav\u00e9. A chceme to urobi\u0165 \u010do najr\u00fdchlej\u0161ie, ak tak\u00e9to probl\u00e9my nastan\u00fa. A presne na to je ur\u010den\u00fd catchup.<\/p>\n<p><\/p>\n<p>Catchup umo\u017e\u0148uje vyu\u017e\u00edva\u0165 delta-z\u00e1lohy, ktor\u00e9 sa ukladaj\u00fa do cloudu t\u00fdmto sp\u00f4sobom. Hovor\u00edte, na ktorom LSN sa teraz nach\u00e1dza zaost\u00e1vaj\u00faci replik\u00e1tor a uv\u00e1dzate ho v pr\u00edkaze catchup, aby ste vytvorili delta-z\u00e1lohu medzi t\u00fdmto LSN a LSN, na ktorom sa teraz va\u0161e klaster nach\u00e1dza. A potom obnov\u00edte t\u00fato z\u00e1lohu na replik\u00e1tore, ktor\u00fd zaost\u00e1val.<\/p>\n<p><\/p>\n<p><strong>In\u00e9 datab\u00e1zy<\/strong><\/p>\n<p><\/p>\n<p>E\u0161te n\u00e1m \u0161tudenti priniesli ve\u013ea funkci\u00ed. Ke\u010f\u017ee v Yandexe rob\u00edme nielen s Postgres, m\u00e1me tie\u017e MySQL, MongoDB, Redis, ClickHouse, v ur\u010ditej chv\u00edli sme potrebovali, aby sme mohli robi\u0165 z\u00e1lohy s point-in-time recovery pre MySQL a aby sme mali mo\u017enos\u0165 odosla\u0165 ich do cloudu.<\/p>\n<p><\/p>\n<p>A chceli sme to robi\u0165 podobn\u00fdm sp\u00f4sobom, ak\u00fdm to rob\u00ed WAL-G. A rozhodli sme sa experimentova\u0165 a pozrie\u0165 sa, ako to v\u0161etko bude vyzera\u0165.<\/p>\n<p><\/p>\n<p>A na za\u010diatku sme t\u00fato logiku nijako nerozde\u013eovali a nap\u00edsali sme k\u00f3d vo fork. Videli sme, \u017ee m\u00e1me nejak\u00fd funk\u010dn\u00fd model a \u017ee to m\u00f4\u017ee fungova\u0165. Potom sme si pomysleli, \u017ee na\u0161e hlavn\u00e9 spolo\u010denstvo s\u00fa postgresisti, ktor\u00ed pou\u017e\u00edvaj\u00fa WAL-G. A preto je potrebn\u00e9 tieto \u010dasti nejako rozdeli\u0165. T. j. ke\u010f opravujeme k\u00f3d pre Postgres, neporu\u0161ujeme MySQL, a ke\u010f opravujeme MySQL, neporu\u0161ujeme Postgres.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prv\u00e1 my\u0161lienka, ako to rozdeli\u0165, bola pou\u017ei\u0165 rovnak\u00fd pr\u00edstup, ak\u00fd sa pou\u017e\u00edva v roz\u0161\u00edreniach PostgreSQL. A vlastne, aby ste vytvorili z\u00e1lohu MySQL, museli by ste nain\u0161talova\u0165 ak\u00fasi dynamick\u00fa kni\u017enicu. <\/p>\n<p><\/p>\n<p>Ale tu je okam\u017eite vidite\u013en\u00e1 asymetria tohto pr\u00edstupu. Ke\u010f z\u00e1lohujete Postgres, nain\u0161talujete na\u0148 norm\u00e1lnu z\u00e1lohovaciu aplik\u00e1ciu pre Postgres a v\u0161etko je v poriadku. Pre MySQL to znamen\u00e1, \u017ee nain\u0161talujete z\u00e1lohovaciu aplik\u00e1ciu pre Postgres a k nej e\u0161te dynamick\u00fa kni\u017enicu pre MySQL. Znie to \u010dudne. Aj my sme si to mysleli a rozhodli sme sa, \u017ee to nie je to rie\u0161enie, ktor\u00e9 potrebujeme. <\/p>\n<p><\/p>\n<p><strong>Rozli\u010dn\u00e9 zostavy pre Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Ale to n\u00e1m, ako sa zd\u00e1, umo\u017enilo dosiahnu\u0165 spr\u00e1vne rie\u0161enie \u2013 vy\u010dleni\u0165 r\u00f4zne zostavy pre r\u00f4zne datab\u00e1zy. To umo\u017enilo izolova\u0165 logiku t\u00fdkaj\u00facu sa z\u00e1loh r\u00f4znych datab\u00e1z, ktor\u00e9 bud\u00fa komunikova\u0165 s celkov\u00fdm API, ktor\u00e9 implementuje WAL-G.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>To je t\u00e1 \u010das\u0165, ktor\u00fa sme nap\u00edsali sami \u2013 predt\u00fdm, ako sme dali \u0161tudentom \u00falohy. T. j. to je presne t\u00e1 \u010das\u0165, kde mohli spravi\u0165 nie\u010do zle, a preto sme sa rozhodli, \u017ee je lep\u0161ie, ak urob\u00edme nie\u010do my a v\u0161etko bude v poriadku. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Potom sme vydali \u00falohy. Okam\u017eite sa rozobrali. Od \u0161tudentov sa vy\u017eadovalo, aby podporili tri datab\u00e1zy. <\/p>\n<p><\/p>\n<p>To je MySQL, ktor\u00fa z\u00e1lohujeme pomocou WAL-G t\u00fdmto sp\u00f4sobom u\u017e viac ako rok. <\/p>\n<p><\/p>\n<p>A teraz u\u017e aj MongoDB sa bl\u00ed\u017ei k produkcii, tam ho e\u0161te doladia. V podstate, kostra pre toto v\u0161etko bola nap\u00edsan\u00e1 nami. Potom \u0161tudenti nap\u00edsali nejak\u00e9 funk\u010dn\u00e9 veci. A potom ich uvedieme do stavu, ktor\u00fd m\u00f4\u017eeme prija\u0165 do na\u0161ej produkcie.<\/p>\n<p><\/p>\n<p>Tieto \u00falohy nevyzerali tak, \u017ee by \u0161tudenti museli nap\u00edsa\u0165 cel\u00e9 z\u00e1lohovacie n\u00e1stroje pre ka\u017ed\u00fa z t\u00fdchto datab\u00e1z. Nemali sme tak\u00fdto probl\u00e9m. N\u00e1\u0161 probl\u00e9m bol v tom, \u017ee sme chceli obnovu do ur\u010dit\u00e9ho bodu v \u010dase a chceli sme z\u00e1lohova\u0165 do cloudu. A po\u017eiadali sme \u0161tudentov, aby nap\u00edsali nejak\u00fd k\u00f3d, ktor\u00fd to vyrie\u0161i. \u0160tudenti vyu\u017eili u\u017e existuj\u00face z\u00e1lohovacie n\u00e1stroje, ktor\u00e9 nejak\u00fdm sp\u00f4sobom vytv\u00e1raj\u00fa z\u00e1lohy, a potom to spojili s WAL-G, ktor\u00fd to posielal do cloudu. A taktie\u017e k tomu pridali obnovu do ur\u010dit\u00e9ho bodu v \u010dase.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co e\u0161te priniesli \u0161tudenti? Priniesli do WAL-G podporu \u0161ifrovania Libsodium.<\/p>\n<p><\/p>\n<p>Tie\u017e sme zaviedli politiky uchov\u00e1vania z\u00e1loh. Teraz je mo\u017en\u00e9 ozna\u010di\u0165 z\u00e1lohy ako trval\u00e9. A je to nejako pohodlnej\u0161ie pre v\u00e1\u0161 servis automatizova\u0165 proces ich uchov\u00e1vania. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co sa na z\u00e1ver experimentu podarilo dosiahnu\u0165?<\/p>\n<p><\/p>\n<p>Na kurz sa p\u00f4vodne zaregistrovalo viac ako 100 \u013eud\u00ed. Na za\u010diatku som nespomenul, \u017ee univerzita v Jekaterinburgu je Uralsk\u00e1 feder\u00e1lna univerzita. Tam sme to v\u0161etko ozn\u00e1mili. 100 \u013eud\u00ed sa zaregistrovalo. V skuto\u010dnosti za\u010dalo nie\u010do robi\u0165 ove\u013ea menej, asi 30 \u013eud\u00ed. <\/p>\n<p><\/p>\n<p>E\u0161te menej \u013eud\u00ed kurz ukon\u010dilo, preto\u017ee tam bolo potrebn\u00e9 nap\u00edsa\u0165 testy k u\u017e existuj\u00facim k\u00f3dom. A tie\u017e opravi\u0165 nejak\u00fa chybu alebo prida\u0165 nejak\u00fa funkciu. A \u010das\u0165 \u0161tudentov predsa len kurz \u00faspe\u0161ne ukon\u010dila.<\/p>\n<p><\/p>\n<p>V s\u00fa\u010dasnosti \u0161tudenti v tomto kurze opravili pribli\u017ene 14 probl\u00e9mov a vyrobili 10 funkci\u00ed r\u00f4znych ve\u013ekost\u00ed. A, ako sa domnievam, to je plnohodnotn\u00e1 n\u00e1hrada jedn\u00e9ho alebo dvoch v\u00fdvoj\u00e1rov. <\/p>\n<p><\/p>\n<p>Okrem toho sme odovzd\u00e1vali diplomy a z\u00e1vere\u010dn\u00e9 pr\u00e1ce. A 12 ich z\u00edskalo diplomy. 6 z nich u\u017e obh\u00e1jilo na \"5\". U ostatn\u00fdch obhajoby e\u0161te neboli, ale mysl\u00edm, \u017ee aj oni to zvl\u00e1dnu. <\/p>\n<p><\/p>\n<p>Pl\u00e1ny do bud\u00facnosti<\/p>\n<p><\/p>\n<p>Ak\u00e9 m\u00e1me pl\u00e1ny do bud\u00facnosti?<\/p>\n<p><\/p>\n<p>Aspo\u0148 tie po\u017eiadavky na funkcie, ktor\u00e9 sme u\u017e od pou\u017e\u00edvate\u013eov po\u010duli a ktor\u00fdch realiz\u00e1ciu pl\u00e1nujeme. To s\u00fa:<\/p>\n<p><\/p>\n<ul>\n<li>Sledovanie spr\u00e1vnosti sledovania \u010dasovej osi v arch\u00edve z\u00e1loh HA-klastra. S pomocou WAL-G je to mo\u017en\u00e9. A mysl\u00edm, \u017ee n\u00e1jdeme \u0161tudentov, ktor\u00ed sa toho ujm\u00fa. <\/li>\n<li>Za pren\u00e1\u0161anie z\u00e1loh a WAL-u medzi cloudmi u\u017e m\u00e1me zodpovedn\u00fa osobu. <\/li>\n<li>A ned\u00e1vno sme zverejnili my\u0161lienku, \u017ee m\u00f4\u017eeme ur\u00fdchli\u0165 WAL-G e\u0161te viac pomocou rozba\u013eovania inkrement\u00e1lnych z\u00e1loh bez prepisovania str\u00e1nok a optimaliz\u00e1cie arch\u00edvov, ktor\u00e9 tam posielame. <\/li>\n<\/ul>\n<p><\/p>\n<p>M\u00f4\u017eete sa o ne podeli\u0165 tu.<\/p>\n<p><\/p>\n<p>K \u010domu bola t\u00e1to prezent\u00e1cia? K tomu, \u017ee teraz, okrem n\u00e1s \u0161tyroch, ktor\u00ed tento projekt podporuj\u00fa, m\u00e1me aj \u010fal\u0161ie ruky, ktor\u00fdch je dos\u0165, najm\u00e4 ak im nap\u00ed\u0161ete osobne. A ak z\u00e1lohujete svoje \u00fadaje a rob\u00edte to pomocou WAL-G alebo by ste chceli prejs\u0165 na WAL-G, va\u0161e \u017eelania m\u00f4\u017eeme celkom \u013eahko zoh\u013eadni\u0165.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toto je qr-k\u00f3d a odkaz. M\u00f4\u017eete cez ne prejs\u0165 a nap\u00edsa\u0165 v\u0161etky va\u0161e po\u017eiadavky. Napr\u00edklad, ak nejak\u00fa chybu neopravujeme. Alebo ak nejak\u00fa funkciu ve\u013emi chcete, ale z nejak\u00e9ho d\u00f4vodu e\u0161te nie je v \u017eiadnom z\u00e1lohovacom rie\u0161en\u00ed, vr\u00e1tane n\u00e1\u0161ho. Ur\u010dite o tom dajte vedie\u0165.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity. Georgij Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ot\u00e1zky<\/p>\n<p><\/p>\n<p><em>Dobr\u00fd de\u0148! \u010eakujem za predn\u00e1\u0161ku! M\u00e1m ot\u00e1zku oh\u013eadom WAL-G, ale nie o Postgres. WAL-G z\u00e1lohuje MySQL a sp\u00fa\u0161\u0165a extra-z\u00e1lohu. Ak vz\u00eddu modern\u00e9 in\u0161tal\u00e1cie na CentOS a ak vykon\u00e1te yum install MySQL, nain\u0161taluje sa MariDB. Od verzie 10.3 sa extra-z\u00e1loha nepodporuje, podporuje sa MariDB-z\u00e1loha. Ako to m\u00e1te s t\u00fdmto?<\/em><\/p>\n<p><\/p>\n<p>Moment\u00e1lne sme sa nepok\u00fa\u0161ali z\u00e1lohova\u0165 MariDB. Mali sme \u017eiadosti o podporu FoundationDB, ale vo v\u0161eobecnosti, ak tak\u00e1to \u017eiados\u0165 existuje, m\u00f4\u017eeme n\u00e1js\u0165 \u013eud\u00ed, ktor\u00ed to urobia. Nie je to tak dlh\u00e9 a nie je to tak\u00e9 zlo\u017eit\u00e9, ako si mysl\u00edm.<\/p>\n<p><\/p>\n<p><em>Dobr\u00fd de\u0148! \u010eakujem za predn\u00e1\u0161ku! M\u00e1m ot\u00e1zku oh\u013eadom potenci\u00e1lnych nov\u00fdch funkci\u00ed. Ste pripraven\u00ed necha\u0165 WAL-G fungova\u0165 s p\u00e1skami, aby sme mohli robi\u0165 z\u00e1lohy na p\u00e1sku?<\/em><\/p>\n<p><\/p>\n<p>Z\u00e1loha na p\u00e1skovom \u00falo\u017eisku sa asi mysl\u00ed?<\/p>\n<p><\/p>\n<p><em>\u00c1no.<\/em><\/p>\n<p><\/p>\n<p>Na t\u00fato ot\u00e1zku m\u00f4\u017ee lep\u0161ie odpoveda\u0165 Andrej Borodin. <\/p>\n<p><\/p>\n<p>(Andrej) \u00c1no, \u010fakujem za ot\u00e1zku! Mali sme \u017eiados\u0165 o presun z\u00e1lohy na p\u00e1sku z cloudov\u00e9ho \u00falo\u017eiska. A na to <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">sa vyv\u00edja<\/a><\/noindex> presun medzi cloudmi. Preto\u017ee presun medzi cloudmi je ur\u010dit\u00e1 zov\u0161eobecnen\u00e1 verzia presunu na p\u00e1sku. Okrem toho m\u00e1me roz\u0161\u00edrite\u013en\u00fa architekt\u00faru \u010do sa t\u00fdka \u00falo\u017e\u00edsk. Mimochodom, mnoh\u00e9 \u00falo\u017eisk\u00e1 boli nap\u00edsan\u00e9 \u0161tudentami. A ak nap\u00ed\u0161ete \u00falo\u017eisko pre p\u00e1sku, bude samozrejme podporovan\u00e9. Sme pripraven\u00ed zv\u00e1\u017ei\u0165 pull request. Je potrebn\u00e9 zap\u00edsa\u0165 s\u00fabor, pre\u010d\u00edta\u0165 s\u00fabor. Ak sa tieto veci urobia v Go, obvykle to vyjde na 50 riadkov k\u00f3du. A potom bude p\u00e1ska podporovan\u00e1 v WAL-G. <\/p>\n<p><\/p>\n<p><em>\u010eakujem za predn\u00e1\u0161ku! Zauj\u00edmav\u00fd proces v\u00fdvoja. Z\u00e1loha \u2013 to je v\u00e1\u017ena \u010das\u0165 funk\u010dnosti, ktor\u00e1 by mala by\u0165 dobre pokryt\u00e1 testami. Pri realiz\u00e1cii funk\u010dnosti pre nov\u00e9 datab\u00e1zy, p\u00edsali testy tie\u017e \u0161tudenti alebo ste to nap\u00edsali vy sami a potom odovzdali realiz\u00e1ciu \u0161tudentom?<\/em><\/p>\n<p><\/p>\n<p>Testy p\u00edsali tie\u017e \u0161tudenti. Ale \u0161tudenti p\u00edsali viac pre tak\u00e9 funkcie, ako s\u00fa nov\u00e9 datab\u00e1zy. P\u00edsali integra\u010dn\u00e9 testy. A p\u00edsali unit-testy. Ak integra\u010dn\u00e9 prejd\u00fa, t. j. aktu\u00e1lne \u2013 to je scen\u00e1r, ktor\u00fd vykon\u00e1vate ru\u010dne alebo to rob\u00ed cron, napr\u00edklad. T. j. tam je scen\u00e1r ve\u013emi zrozumite\u013en\u00fd. <\/p>\n<p><\/p>\n<p><em>\u0160tudenti nemaj\u00fa ve\u013ea sk\u00fasenost\u00ed. Ko\u013eko \u010dasu ide na rev\u00edziu?<\/em><\/p>\n<p><\/p>\n<p>\u00c1no, presk\u00famanie zaber\u00e1 dos\u0165 \u010dasu. T. j. zvy\u010dajne, ke\u010f pr\u00eddu hne\u010f nieko\u013ek\u00ed komitenti a hovoria, \u017ee ja som spravil to, ja som spravil ono, je potrebn\u00e9 prem\u00fd\u0161\u013ea\u0165 a vy\u010dleni\u0165 si niekde pol d\u0148a na to, aby som sa vysporiadal s t\u00fdm, \u010do nap\u00edsali. Preto\u017ee k\u00f3d treba \u010d\u00edta\u0165 d\u00f4kladne. Predsa len nepre\u0161li pohovorom. Nezn\u00e1me ich dobre, preto to zabera zna\u010dn\u00fd \u010das.<\/p>\n<p><\/p>\n<p><em>\u010eakujem za prezent\u00e1ciu! Predt\u00fdm Andrej Borodin uviedol, \u017ee archive_command v WAL-G by sa mal vola\u0165 priamo. Ale v pr\u00edpade nejak\u00e9ho patron klastera potrebujeme dodato\u010dn\u00fa logiku na ur\u010denie uzla, s ktor\u00fdm posla\u0165 WALy. Ako t\u00fato problematiku rie\u0161ite vy?<\/em><\/p>\n<p><\/p>\n<p>V \u010dom m\u00e1te probl\u00e9m? Predpokladajme, \u017ee m\u00e1te synchronn\u00fa replik\u00e1ciu, z ktorej rob\u00edte z\u00e1lohu? Alebo \u010do?<\/p>\n<p><\/p>\n<p>(Andrej) Faktom je, \u017ee WAL-G skuto\u010dne predpoklad\u00e1 pou\u017eitie bez ob\u0161\u00edrnych shell skriptov. Ak nie\u010do ch\u00fdba, tak nap\u00ed\u0161me logiku, ktor\u00e1 by mala by\u0165 vo vn\u00fatri WAL-G. \u010co sa t\u00fdka toho, odkia\u013e by mala by\u0165 archiv\u00e1cia, pova\u017eujeme za spr\u00e1vne, aby archiv\u00e1cia prebiehala z aktu\u00e1lneho mastera v klasteri. Archiv\u00e1cia z repliky je zl\u00e1 my\u0161lienka. M\u00f4\u017eu sa vyskytn\u00fa\u0165 r\u00f4zne scen\u00e1re s \u0165a\u017ekos\u0165ami. Predov\u0161etk\u00fdm probl\u00e9my s archiv\u00e1ciou \u010dasov\u00fdch l\u00edni\u00ed a \u010fal\u0161\u00edch \u00fadajov. \u010eakujem za ot\u00e1zku!<\/p>\n<p><\/p>\n<p>(Objasnenie: Od ob\u0161\u00edrnych shell skriptov sme upustili <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">v tejto issue<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Dobr\u00fd ve\u010der! \u010eakujem za prezent\u00e1ciu! Zaujala ma funkcia catchup, o ktorej ste hovorili. Stretli ste sa so situ\u00e1ciou, kedy replik\u00e1cia zaost\u00e1va a nijako nedok\u00e1\u017ee dobehn\u00fa\u0165. A v WAL-G som nena\u0161iel popis tejto funkcie v dokument\u00e1cii.<\/em><\/p>\n<p><\/p>\n<p>Catchup sa objavil doslova koncom janu\u00e1ra 2020. S dokument\u00e1ciou by sa mo\u017eno malo pracova\u0165 d\u00f4kladnej\u0161ie. My ju sami p\u00ed\u0161eme a nepisujeme ju \u00faplne dokonale. A od \u0161tudentov by sa mo\u017eno malo za\u010da\u0165 po\u017eadova\u0165, aby ju p\u00edsali.<\/p>\n<p><\/p>\n<p><em>Je u\u017e v vydan\u00ed?<\/em><\/p>\n<p><\/p>\n<p>Pull request u\u017e bol zl\u00fa\u010den\u00fd, t. j. skontroloval som ho. Sk\u00fasil som to na testovacom klastri. Zatia\u013e sme nemali situ\u00e1ciu, kedy by sme to mohli overi\u0165 na re\u00e1lnom pr\u00edklade.<\/p>\n<p><\/p>\n<p><em>Kedy o\u010dak\u00e1va\u0165?<\/em><\/p>\n<p><\/p>\n<p>Neviem. Po\u010dkajte mesiac, ur\u010dite over\u00edme.<\/p>\n<p>Zdroj: <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.4 - 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\/sk\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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: nov\u00e9 mo\u017enosti a roz\u0161\u00edrenie komunity. Georgij Rylov | ProHoster","description":"Odpor\u00fa\u010dam zozn\u00e1mi\u0165 sa s prepisom prezent\u00e1cie z za\u010diatku roku 2020 od Georgija Rylova \"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00edrenie komunity\" U spr\u00e1vcov open-source vyvst\u00e1va mno\u017estvo probl\u00e9mov.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/78887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}