{"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\/cs\/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>Doporu\u010duji se sezn\u00e1mit s p\u0159episem zpr\u00e1vy Georgij Rylov z po\u010d\u00e1tku roku 2020 \"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161i\u0159ov\u00e1n\u00ed komunity\"<\/strong><\/p>\n<p><\/p>\n<p>U udr\u017eovatel\u016f open-source se objevuje mnoho probl\u00e9m\u016f s jejich r\u016fstem. Jak ps\u00e1t st\u00e1le v\u00edce po\u017eadovan\u00fdch funkc\u00ed, opravovat st\u00e1le v\u00edce probl\u00e9m\u016f a st\u00edhat sledovat st\u00e1le v\u00edce pull request\u016f? Na p\u0159\u00edkladu WAL-G (backup-tool for PostgreSQL) uk\u00e1\u017eu, jak jsme tyto probl\u00e9my \u0159e\u0161ili spu\u0161t\u011bn\u00edm kurzu o v\u00fdvoji open-source na univerzit\u011b, co jsme dos\u00e1hli a kam chceme d\u00e1l sm\u011b\u0159ovat.<\/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 prezentace nebylo \u0159e\u010deno, \u017ee se jedn\u00e1 o n\u011bco ohledn\u011b z\u00e1loh. N\u011bkdo nev\u00ed, co je WAL-G? Nebo to v\u0161ichni v\u011bd\u00ed? Zvedn\u011bte ruku, kdo nev\u00ed. K \u010dertu, p\u0159i\u0161li jste na p\u0159edn\u00e1\u0161ku a nev\u00edte, o \u010dem je.<\/p>\n<p><\/p>\n<p>Poj\u010fme v\u00e1m \u0159\u00edci, co se dnes bude d\u00edt. Tak se stalo, \u017ee na\u0161e t\u00fdm se ji\u017e n\u011bjakou dobu v\u011bnuje z\u00e1lohov\u00e1n\u00ed. A je to dal\u0161\u00ed p\u0159edn\u00e1\u0161ka v s\u00e9rii, kde vypr\u00e1v\u00edme o tom, jak bezpe\u010dn\u011b, spolehliv\u011b, pohodln\u011b a efektivn\u011b ukl\u00e1d\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 s\u00e9ri\u00edch bylo mnoho p\u0159edn\u00e1\u0161ek Andreje Borodina, Vladimira Leskova. Bylo n\u00e1s hodn\u011b. A u\u017e mnoho let jsme v\u0161ichni hovo\u0159ili 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 p\u0159edn\u00e1\u0161ka bude trochu odli\u0161n\u00e1 od ostatn\u00edch, proto\u017ee se tam v\u00edce zam\u011b\u0159ujeme na technickou \u010d\u00e1st, a zde v\u00e1m pov\u00edm, jak jsme se pot\u00fdkali s probl\u00e9my spojen\u00fdmi s r\u016fstem komunity. A jak jsme vymysleli mal\u00fd n\u00e1pad, kter\u00fd n\u00e1m pom\u00e1h\u00e1 s t\u00edmto vypo\u0159\u00e1dat. <\/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 n\u00e1m byl p\u0159ed\u00e1n od Citus Data. A my jsme ho pr\u00e1v\u011b vzali. A vyv\u00edjel ho jeden \u010dlov\u011bk.<\/p>\n<p><\/p>\n<p>A v WAL-G prakticky chyb\u011blo:<\/p>\n<p><\/p>\n<ul>\n<li>Z\u00e1lohov\u00e1n\u00ed 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\u011bla.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Za ta l\u00e9ta WAL-G v\u00fdrazn\u011b narostl.<\/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 bylo ji\u017e v\u0161e v\u00fd\u0161e uveden\u00e9 k dispozici. A nav\u00edc jsme nyn\u00ed m\u011bli:<\/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>Cca 15 otev\u0159en\u00fdch PR.<\/li>\n<li>A tak\u00e9 mnoho p\u0159isp\u011bvatel\u016f. <\/li>\n<li>A otev\u0159en\u00fdch probl\u00e9m\u016f neust\u00e1le. A to i p\u0159esto, \u017ee tam ka\u017ed\u00fd den doslova chod\u00edme a n\u011bco 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 dosp\u011bli jsme k z\u00e1v\u011bru, \u017ee tento projekt vy\u017eaduje v\u00edce na\u0161\u00ed pozornosti, i kdy\u017e n\u00e1m samotn\u00fdm nic nen\u00ed pot\u0159eba realizovat pro na\u0161i slu\u017ebu Managed Databases v Yandexu.<\/p>\n<p><\/p>\n<p>A n\u011bkde na podzim roku 2018 n\u00e1s napadla my\u0161lenka. Obvykle m\u00e1 t\u00fdm n\u011bkolik zp\u016fsob\u016f, jak vyv\u00edjet nov\u00e9 funkce nebo opravovat chyby, kdy\u017e nem\u00e1te dostatek lid\u00ed. Nap\u0159\u00edklad m\u016f\u017eete naj\u00edt dal\u0161\u00edho v\u00fdvoj\u00e1\u0159e a platit mu pen\u00edze. Nebo si m\u016f\u017eete vz\u00edt st\u00e1\u017eistu na ur\u010ditou dobu a tak\u00e9 mu platit n\u011bjakou mzdu. Ale existuje tak\u00e9 zna\u010dn\u00e1 skupina lid\u00ed, z nich\u017e n\u011bkte\u0159\u00ed u\u017e skute\u010dn\u011b um\u011bj\u00ed ps\u00e1t k\u00f3d. Jen\u017ee ne v\u017edy v\u00edte, jak\u00e9 kvality ten k\u00f3d je.<\/p>\n<p><\/p>\n<p>Rozhodli jsme se zkusit p\u0159il\u00e1kat studenty. Ale studenti se nebudou \u00fa\u010dastnit v\u0161eho. Budou d\u011blat pouze ur\u010ditou \u010d\u00e1st pr\u00e1ce. Nap\u0159\u00edklad budou ps\u00e1t testy, opravovat chyby, implementovat funkce, kter\u00e9 se net\u00fdkaj\u00ed hlavn\u00ed funkcionality. Hlavn\u00ed funkcionalita zahrnuje vytv\u00e1\u0159en\u00ed z\u00e1loh a jejich obnovov\u00e1n\u00ed. Pokud dojde k chyb\u011b p\u0159i vytv\u00e1\u0159en\u00ed z\u00e1lohy, dojde ke ztr\u00e1t\u011b dat. A nikdo to samoz\u0159ejm\u011b nechce. V\u0161ichni cht\u011bj\u00ed, aby v\u0161e bylo velmi spolehliv\u00e9. Proto k\u00f3d, kter\u00e9mu d\u016fv\u011b\u0159ujeme m\u00e9n\u011b ne\u017e sv\u00e9mu vlastn\u00edmu, do n\u011bj samoz\u0159ejm\u011b cht\u00edt nepust\u00edme. Tedy jak\u00fdkoli nekritick\u00fd k\u00f3d je to, co bychom cht\u011bli dostat od na\u0161ich dal\u0161\u00edch pracovn\u00edch sil.<\/p>\n<p><\/p>\n<p><strong>Za jak\u00fdch podm\u00ednek se p\u0159ij\u00edm\u00e1 PR studenta<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Mus\u00ed pokr\u00fdvat sv\u016fj k\u00f3d testy. V\u0161e by m\u011blo prob\u00edhat v CI. <\/li>\n<li>Tak\u00e9 proch\u00e1z\u00edme dv\u011bma revizemi. Jedna od Andreje Borodina a druh\u00e1 moje. <\/li>\n<li>A nav\u00edc, abych zkontroloval, \u017ee to nezlom\u00ed nic v na\u0161em servisu, zvl\u00e1\u0161\u0165 nahr\u00e1v\u00e1m sestaven\u00ed s t\u00edmto commitem. A kontrolujeme pomoc\u00ed end-to-end test\u016f, \u017ee n\u00e1m nic nepad\u00e1.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Speci\u00e1ln\u00ed 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, pro\u010d je to pot\u0159eba a pro\u010d se mi to zd\u00e1 jako skv\u011bl\u00fd n\u00e1pad. <\/p>\n<p><\/p>\n<p><strong>Pro n\u00e1s je profit z\u0159ejm\u00fd:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Z\u00edsk\u00e1v\u00e1me dal\u0161\u00ed ruce. <\/li>\n<li>A hled\u00e1me kandid\u00e1ty do t\u00fdmu mezi schopn\u00fdmi studenty, kte\u0159\u00ed p\u00ed\u0161\u00ed kvalitn\u00ed k\u00f3d. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Jak\u00fd je profit pro studenty?<\/strong><\/p>\n<p><\/p>\n<p>M\u016f\u017ee b\u00fdt m\u00e9n\u011b z\u0159ejm\u00fd, proto\u017ee studenti alespo\u0148 nedost\u00e1vaj\u00ed pen\u00edze za ten k\u00f3d, kter\u00fd p\u00ed\u0161\u00ed, ale dost\u00e1vaj\u00ed pouze zn\u00e1mky do z\u00e1po\u010dtov\u00e9ho listu. <\/p>\n<p><\/p>\n<p>Zeptal jsem se jich na to. A podle jejich slov:<\/p>\n<p><\/p>\n<ul>\n<li>Zku\u0161enost p\u0159isp\u011bvatele v Open Source.<\/li>\n<li>Z\u00edskat polo\u017eku do \u017eivotopisu.<\/li>\n<li>Projevit se a proj\u00edt pohovorem v Yandexu.<\/li>\n<li>St\u00e1t se \u00fa\u010dastn\u00edkem GSoC.<\/li>\n<li>+1 speci\u00e1ln\u00ed kurz pro ty, kte\u0159\u00ed cht\u011bj\u00ed ps\u00e1t k\u00f3d.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nebudu mluvit o tom, jak byl kurz organizov\u00e1n. Jen \u0159eknu, \u017ee WAL-G byl hlavn\u00edm projektem. A tak\u00e9 jsme do tohoto kurzu zahrnuli projekty jako Odyssey, PostgreSQL a ClickHouse.<\/p>\n<p><\/p>\n<p>A \u00fakoly byly zad\u00e1v\u00e1ny nejen v tomto kurzu, ale tak\u00e9 byly ud\u011blov\u00e1ny diplomy a semestr\u00e1ln\u00ed pr\u00e1ce.<\/p>\n<p><\/p>\n<p><strong>A co profit pro u\u017eivatele?<\/strong><\/p>\n<p><\/p>\n<p>Te\u010f se dostaneme k \u010d\u00e1sti, kter\u00e1 v\u00e1s pravd\u011bpodobn\u011b v\u00edce zaj\u00edm\u00e1. Jak\u00fd z toho m\u00e1te u\u017eitek? U\u017eitek je v tom, \u017ee studenti opravili mnoho chyb. A vytvo\u0159ili funkce, o kter\u00e9 jste n\u00e1s \u017e\u00e1dali. <\/p>\n<p><\/p>\n<p>A dovolte mi \u0159\u00edct o v\u011bcech, kter\u00e9 jste dlouho cht\u011bli a kter\u00e9 byly realizov\u00e1ny.<\/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 se \u010dekaly pravd\u011bpodobn\u011b od doby, kdy byl WAL-G uveden na trh, proto\u017ee WAL-G je n\u00e1stupcem jin\u00e9ho n\u00e1stroje pro z\u00e1lohov\u00e1n\u00ed WAL-E, kde byly podporov\u00e1ny z\u00e1lohy datab\u00e1z\u00ed s tablespaces.<\/p>\n<p><\/p>\n<p>Kr\u00e1tce si p\u0159ipomeneme, co to vlastn\u011b je a pro\u010d je to v\u0161echno pot\u0159eba. Obvykle v\u0161echny va\u0161e data PostgreSQL zab\u00edraj\u00ed jeden adres\u00e1\u0159 v souborov\u00e9m syst\u00e9mu, kter\u00fd se naz\u00fdv\u00e1 z\u00e1kladn\u00ed. A tento adres\u00e1\u0159 ji\u017e obsahuje v\u0161echny soubory a podadres\u00e1\u0159e pot\u0159ebn\u00e9 pro PostgreSQL.<\/p>\n<p><\/p>\n<p>Tablespaces jsou adres\u00e1\u0159e, ve kter\u00fdch se nach\u00e1zej\u00ed data PostgreSQL, ale nezab\u00edraj\u00ed m\u00edsto mimo z\u00e1kladn\u00ed adres\u00e1\u0159. Na sn\u00edmku je vid\u011bt, \u017ee tablespaces se nach\u00e1zej\u00ed mimo z\u00e1kladn\u00ed adres\u00e1\u0159.<\/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>Jak to vypad\u00e1 pro samotn\u00fd PostgreSQL? V z\u00e1kladn\u00edm adres\u00e1\u0159i je samostatn\u00fd podadres\u00e1\u0159 pg_tblspc. A v n\u011bm jsou symlinky na adres\u00e1\u0159e, ve kter\u00fdch se skute\u010dn\u011b nach\u00e1z\u00ed data PostgreSQL mimo z\u00e1kladn\u00ed adres\u00e1\u0159.<\/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>Kdy\u017e to v\u0161echno pou\u017e\u00edv\u00e1te, pro v\u00e1s tyto p\u0159\u00edkazy mohou vypadat n\u011bjak takto. T. j. vytvo\u0159\u00edte tabulku v n\u011bjak\u00e9m zvolen\u00e9m tablespace a pod\u00edv\u00e1te se, kde ji nyn\u00ed m\u00e1te. Tyto dv\u011b posledn\u00ed \u0159\u00e1dky, dva posledn\u00ed zavolan\u00e9 p\u0159\u00edkazy. A tam je vid\u011bt, \u017ee existuje n\u011bjak\u00e1 cesta. Ale ve skute\u010dnosti \u2013 to nen\u00ed skute\u010dn\u00e1 cesta. Je to cesta s prefixem z z\u00e1kladn\u00edho adres\u00e1\u0159e k tablespace. A odtud je sp\u00e1rov\u00e1na symlinkem, kter\u00fd sm\u011b\u0159uje k va\u0161im skute\u010dn\u00fdm dat\u016fm.<\/p>\n<p><\/p>\n<p>My to v\u0161e nepou\u017e\u00edv\u00e1me v na\u0161em t\u00fdmu, ale bylo to vyu\u017e\u00edv\u00e1no mnoha dal\u0161\u00edmi u\u017eivateli WAL-E, kte\u0159\u00ed n\u00e1m psali, \u017ee cht\u011bj\u00ed p\u0159ej\u00edt na WAL-G, ale to jim br\u00e1nilo. Nyn\u00ed je to podporov\u00e1no.<\/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>Dal\u0161\u00ed funkce, kterou n\u00e1m p\u0159inesl n\u00e1\u0161 specializovan\u00fd kurz, je catchup. O catchupu v\u011bd\u00ed lid\u00e9, kte\u0159\u00ed pravd\u011bpodobn\u011b v\u00edce pracovali s Oracle ne\u017e s PostgreSQL.<\/p>\n<p><\/p>\n<p>Stru\u010dn\u011b o tom, co to je. Takto m\u016f\u017ee obvykle vypadat topologie clusteru v na\u0161\u00ed slu\u017eb\u011b. M\u00e1me mastera. Existuje replikace, kter\u00e1 streamuje write-ahead log. A replikace informuje mastera, na jak\u00e9m LSN se pr\u00e1v\u011b nach\u00e1z\u00ed. A n\u011bkde paraleln\u011b s t\u00edm se m\u016f\u017ee arch\u00edvovat \u017eurn\u00e1l. Krom\u011b arch\u00edvace \u017eurn\u00e1lu se tak\u00e9 pos\u00edlaj\u00ed z\u00e1lohy do cloudu. A odes\u00edlaj\u00ed se delta-z\u00e1lohy.<\/p>\n<p><\/p>\n<p>Jak\u00fd m\u016f\u017ee b\u00fdt probl\u00e9m? Kdy\u017e m\u00e1te docela velkou datab\u00e1zi, m\u016f\u017ee se st\u00e1t, \u017ee replikace za\u010dne zaost\u00e1vat za masterem. A ona zaost\u00e1v\u00e1 tak siln\u011b, \u017ee jej u\u017e nikdy nem\u016f\u017ee dohnat. Tento probl\u00e9m je obvykle t\u0159eba n\u011bjak vy\u0159e\u0161it. <\/p>\n<p><\/p>\n<p>A nejjednodu\u0161\u0161\u00ed zp\u016fsob je odstranit replikaci a nal\u00edt ji znovu, proto\u017ee ji u\u017e nikdy dohnat nem\u016f\u017ee a je t\u0159eba se s probl\u00e9mem vyrovnat. Ale to trv\u00e1 docela dlouho, proto\u017ee obnovit celou z\u00e1lohu datab\u00e1ze o velikosti 10 TB \u2013 to je velmi, velmi dlouh\u00e9. A chceme to d\u011blat co nejrychleji, kdy\u017e takov\u00e9 probl\u00e9my nastanou. A pr\u00e1v\u011b k tomu je ur\u010den catchup.<\/p>\n<p><\/p>\n<p>Catchup umo\u017e\u0148uje pou\u017e\u00edvat delta-z\u00e1lohy, kter\u00e9 se ukl\u00e1daj\u00ed do cloudu t\u00edmto zp\u016fsobem. \u0158eknete, na jak\u00e9m LSN se pr\u00e1v\u011b nach\u00e1z\u00ed zaost\u00e1vaj\u00edc\u00ed replikace a uvedete jej v p\u0159\u00edkazu catchup, abyste vytvo\u0159ili delta-z\u00e1lohu mezi t\u00edmto LSN a LSN, na kter\u00e9m se pr\u00e1v\u011b nach\u00e1z\u00ed v\u00e1\u0161 cluster. A pot\u00e9 obnov\u00edte tuto z\u00e1lohu na replikaci, kter\u00e1 zaost\u00e1vala.<\/p>\n<p><\/p>\n<p><strong>Dal\u0161\u00ed datab\u00e1ze<\/strong><\/p>\n<p><\/p>\n<p>Nav\u00edc n\u00e1m studenti p\u0159inesli hned n\u011bkolik funkc\u00ed. Proto\u017ee v Yandexu se nezam\u011b\u0159ujeme pouze na Postgres, m\u00e1me tak\u00e9 MySQL, MongoDB, Redis, ClickHouse, tak\u017ee v n\u011bjak\u00e9m okam\u017eiku jsme pot\u0159ebovali, abychom mohli d\u011blat z\u00e1lohy s point-in-time recovery pro MySQL a aby byla mo\u017enost je nahr\u00e1t do cloudu.<\/p>\n<p><\/p>\n<p>A cht\u011bli jsme to d\u011blat n\u011bjak podobn\u00fdm zp\u016fsobem, jak\u00fdm to d\u011bl\u00e1 WAL-G. A rozhodli jsme se experimentovat a pod\u00edvat se, jak to v\u0161echno bude vypadat.<\/p>\n<p><\/p>\n<p>A zprvu jsme tuto logiku nijak nerozli\u0161ovali v forku, napsali jsme k\u00f3d. Vid\u011bli jsme, \u017ee m\u00e1me n\u011bjak\u00fd funk\u010dn\u00ed model a \u017ee to m\u016f\u017ee fungovat. Pak jsme si uv\u011bdomili, \u017ee na\u0161e hlavn\u00ed komunita jsou postgresist\u00e9, kte\u0159\u00ed pou\u017e\u00edvaj\u00ed WAL-G. A proto je pot\u0159eba tyto \u010d\u00e1sti n\u011bjak odd\u011blit. Tedy kdy\u017e upravujeme k\u00f3d pro Postgres, nezlom\u00edme MySQL, a kdy\u017e upravujeme MySQL, nezlom\u00edme 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>Prvn\u00ed my\u0161lenkou, jak to rozd\u011blit, bylo pou\u017e\u00edt stejn\u00fd p\u0159\u00edstup, jak\u00fd se pou\u017e\u00edv\u00e1 v extensions PostgreSQL. A vlastn\u011b, abyste provedli z\u00e1lohu MySQL, museli jste nainstalovat n\u011bjakou dynamickou knihovnu. <\/p>\n<p><\/p>\n<p>Ale hned je vid\u011bt asymetri\u010dnost tohoto p\u0159\u00edstupu. Kdy\u017e z\u00e1lohujete Postgres, nainstalujete na n\u011bj norm\u00e1ln\u00ed z\u00e1lohovac\u00ed n\u00e1stroj pro Postgres a v\u0161e funguje skv\u011ble. A pro MySQL to vych\u00e1z\u00ed tak, \u017ee nainstalujete z\u00e1lohovac\u00ed n\u00e1stroj pro Postgres a k tomu je\u0161t\u011b dynamickou knihovnu pro MySQL. Zn\u00ed to n\u011bjak zvl\u00e1\u0161tn\u011b. I my jsme na to pomysleli a rozhodli jsme se, \u017ee to nen\u00ed to \u0159e\u0161en\u00ed, kter\u00e9 pot\u0159ebujeme. <\/p>\n<p><\/p>\n<p><strong>R\u016fzn\u00e9 sestaven\u00ed pro Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Ale to n\u00e1m, jak si mysl\u00edme, umo\u017enilo dosp\u011bt k spr\u00e1vn\u00e9mu \u0159e\u0161en\u00ed - vy\u010dlenit r\u016fzn\u00e1 sestaven\u00ed pro r\u016fzn\u00e9 datab\u00e1ze. T\u00edm jsme mohli izolovat logiku spojenou se z\u00e1lohami r\u016fzn\u00fdch datab\u00e1z\u00ed, kter\u00e9 budou p\u0159istupovat ke spole\u010dn\u00e9mu API, kter\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 ta \u010d\u00e1st, kterou jsme napsali sami - p\u0159edt\u00edm, ne\u017e jsme uvedli student\u016fm \u00fakoly. Tedy toto je ta \u010d\u00e1st, kde mohli n\u011bco ud\u011blat \u0161patn\u011b, proto jsme se rozhodli, \u017ee l\u00e9pe ud\u011bl\u00e1me n\u011bco tak, aby v\u0161echno bylo skv\u011bl\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\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po tom jsme zadali \u00fakoly. Ty hned p\u0159evzali. Od student\u016f se o\u010dek\u00e1valo, \u017ee podpo\u0159\u00ed t\u0159i datab\u00e1ze. <\/p>\n<p><\/p>\n<p>To je MySQL, kterou z\u00e1lohujeme pomoc\u00ed WAL-G t\u00edmto zp\u016fsobem u\u017e v\u00edce ne\u017e rok. <\/p>\n<p><\/p>\n<p>A nyn\u00ed se MongoDB bl\u00ed\u017e\u00ed k produkci, tam ji jemn\u011b dola\u010fuj\u00ed. V podstat\u011b jsme napsali kostru pro to v\u0161echno. Pot\u00e9 studenti napsali n\u011bjak\u00e9 funk\u010dn\u00ed v\u011bci. A pot\u00e9 je dovedeme do stavu, kter\u00fd m\u016f\u017eeme p\u0159ijmout do na\u0161eho produk\u010dn\u00edho prost\u0159ed\u00ed.<\/p>\n<p><\/p>\n<p>Tyto \u00fakoly nevypadaly tak, \u017ee by studenti museli napsat kompletn\u00ed z\u00e1lohovac\u00ed n\u00e1stroje pro ka\u017edou z t\u011bchto datab\u00e1z\u00ed. Toto nebyl n\u00e1\u0161 probl\u00e9m. Na\u0161\u00edm probl\u00e9mem bylo to, \u017ee jsme cht\u011bli point-in-time recovery a cht\u011bli jsme z\u00e1lohovat do cloudu. A po\u017e\u00e1dali jsme studenty, aby napsali n\u011bjak\u00fd k\u00f3d, kter\u00fd to bude \u0159e\u0161it. Studenti vyu\u017eili ji\u017e existuj\u00edc\u00ed z\u00e1lohovac\u00ed n\u00e1stroje, kter\u00e9 n\u011bjak\u00fdm zp\u016fsobem prov\u00e1d\u011bj\u00ed z\u00e1lohy, a potom to spojili s WAL-G, kter\u00fd v\u0161echno p\u0159en\u00e1\u0161el do cloudu. A tak\u00e9 k tomu p\u0159idali point-in-time recovery.<\/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>Co je\u0161t\u011b p\u0159inesli studenti? P\u0159inesli do WAL-G podporu \u0161ifrov\u00e1n\u00ed Libsodium.<\/p>\n<p><\/p>\n<p>Tak\u00e9 jsme zavedli z\u00e1sady uchov\u00e1v\u00e1n\u00ed z\u00e1loh. Nyn\u00ed lze z\u00e1lohy ozna\u010dovat jako trval\u00e9. A je n\u011bjak pohodln\u011bj\u0161\u00ed pro va\u0161i slu\u017ebu automatizovat proces jejich uchov\u00e1v\u00e1n\u00ed. <\/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>Co se z tohoto experimentu vyvinulo?<\/p>\n<p><\/p>\n<p>Na kurz se p\u016fvodn\u011b zaregistrovalo v\u00edce ne\u017e 100 lid\u00ed. Na za\u010d\u00e1tku jsem ne\u0159ekl, \u017ee univerzita v Jekat\u011brinburgu je Uralsk\u00e1 feder\u00e1ln\u00ed univerzita. Tam jsme to v\u0161echno ozn\u00e1mili. 100 lid\u00ed se zaregistrovalo. Opravu n\u011bco za\u010dalo d\u011blat mnohem m\u00e9n\u011b, p\u0159ibli\u017en\u011b 30 lid\u00ed. <\/p>\n<p><\/p>\n<p>Kurz uzav\u0159elo je\u0161t\u011b m\u00e9n\u011b lid\u00ed, proto\u017ee bylo pot\u0159eba napsat testy k ji\u017e existuj\u00edc\u00edm k\u00f3d\u016fm. A tak\u00e9 opravit n\u011bjakou chybu nebo vytvo\u0159it n\u011bjakou funkci. A \u010d\u00e1st student\u016f kurz opravdu dokon\u010dila.<\/p>\n<p><\/p>\n<p>V sou\u010dasn\u00e9 dob\u011b studenti v tomto kurzu opravili p\u0159ibli\u017en\u011b 14 probl\u00e9m\u016f, vytvo\u0159ili 10 funkc\u00ed r\u016fzn\u00fdch velikost\u00ed. A, jak se domn\u00edv\u00e1m, je to plnohodnotn\u00e1 n\u00e1hrada jednoho a\u017e dvou v\u00fdvoj\u00e1\u0159\u016f. <\/p>\n<p><\/p>\n<p>Krom\u011b toho jsme vyd\u00e1vali diplomy a z\u00e1v\u011bre\u010dn\u00e9 pr\u00e1ce. 12 z nich z\u00edskalo diplomy. 6 z nich u\u017e obh\u00e1jilo na \u201e5\u201c. U zb\u00fdvaj\u00edc\u00edch obhajoby je\u0161t\u011b nebyly, ale mysl\u00edm, \u017ee to u nich tak\u00e9 dopadne dob\u0159e. <\/p>\n<p><\/p>\n<p>Pl\u00e1ny do budoucna<\/p>\n<p><\/p>\n<p>Jak\u00e9 m\u00e1me pl\u00e1ny do budoucna?<\/p>\n<p><\/p>\n<p>Minim\u00e1ln\u011b ty po\u017eadavky na funkce, kter\u00e9 jsme od u\u017eivatel\u016f sly\u0161eli a chceme je realizovat. To je:<\/p>\n<p><\/p>\n<ul>\n<li>Sledov\u00e1n\u00ed spr\u00e1vnosti sledov\u00e1n\u00ed \u010dasov\u00e9ho pl\u00e1nu v archivu z\u00e1loh HA-klastru. S pomoc\u00ed WAL-G je to mo\u017en\u00e9. A mysl\u00edm, \u017ee najdeme studenty, kte\u0159\u00ed se toho ujmou. <\/li>\n<li>Za p\u0159enos z\u00e1loh a WAL mezi cloudy u\u017e m\u00e1me odpov\u011bdn\u00e9ho \u010dlov\u011bka. <\/li>\n<li>A ned\u00e1vno jsme zve\u0159ejnili n\u00e1pad na to, jak m\u016f\u017eeme urychlit WAL-G je\u0161t\u011b v\u00edc pomoc\u00ed rozbalov\u00e1n\u00ed inkrement\u00e1ln\u00edch z\u00e1loh bez p\u0159episov\u00e1n\u00ed str\u00e1nek a optimalizace archiv\u016f, kter\u00e9 tam pos\u00edl\u00e1me. <\/li>\n<\/ul>\n<p><\/p>\n<p>M\u016f\u017eete se o n\u011b pod\u011blit tady<\/p>\n<p><\/p>\n<p>K \u010demu byla tato prezentace? K tomu, \u017ee nyn\u00ed, krom\u011b n\u00e1s \u010dty\u0159 lid\u00ed, kte\u0159\u00ed tento projekt podporuj\u00ed, m\u00e1me spoustu dal\u0161\u00edch rukou. Zejm\u00e9na, pokud jim nap\u00ed\u0161ete soukromou zpr\u00e1vu. A pokud z\u00e1lohujete sv\u00e1 data a d\u011bl\u00e1te to pomoc\u00ed WAL-G nebo byste cht\u011bli p\u0159ej\u00edt na WAL-G, va\u0161e p\u0159\u00e1n\u00ed m\u016f\u017eeme snadno zohlednit.<\/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>Tohle je qr-k\u00f3d a odkaz. M\u016f\u017eete se podle nich dostat a napsat v\u0161echny va\u0161e po\u017eadavky. Nap\u0159\u00edklad, n\u011bjakou chybu neopravujeme. Nebo n\u011bjakou funkci, kterou velmi chcete, ale n\u011bjak\u00fdm zp\u016fsobem je\u0161t\u011b nen\u00ed v \u017e\u00e1dn\u00e9m z\u00e1lohovac\u00edm n\u00e1stroji, v\u010detn\u011b na\u0161eho. Ur\u010dit\u011b n\u00e1m o tom dejte v\u011bd\u011bt.<\/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 den! D\u011bkuji za prezentaci! M\u00e1m ot\u00e1zku ohledn\u011b WAL-G, ale ne ohledn\u011b Postgresu. WAL-G z\u00e1lohuje MySQL a prov\u00e1d\u00ed extra z\u00e1lohu. Pokud vezmete modern\u00ed instalace na CentOS a provedete yum install MySQL, nainstaluje se MariaDB. Od verze 10.3 se extra z\u00e1loha nepodporuje, podporuje se MariaDB z\u00e1loha. Jak to m\u00e1te s t\u00edm?<\/em><\/p>\n<p><\/p>\n<p>V tuto chv\u00edli jsme se nesna\u017eili z\u00e1lohovat MariaDB. M\u011bli jsme popt\u00e1vky po podpo\u0159e FoundationDB, ale obecn\u011b, pokud je takov\u00e1 popt\u00e1vka, m\u016f\u017eeme naj\u00edt lidi, kte\u0159\u00ed to ud\u011blaj\u00ed. Nen\u00ed to tak dlouh\u00e9 a slo\u017eit\u00e9, jak se mi zd\u00e1.<\/p>\n<p><\/p>\n<p><em>Dobr\u00fd den! D\u011bkuji za prezentaci! M\u00e1m ot\u00e1zku ohledn\u011b potenci\u00e1ln\u011b nov\u00fdch funkc\u00ed. Jste p\u0159ipraveni donutit WAL-G pracovat s p\u00e1skami, aby bylo mo\u017en\u00e9 z\u00e1lohovat na p\u00e1sky?<\/em><\/p>\n<p><\/p>\n<p>Z\u00e1loha na p\u00e1skov\u00e9m \u00falo\u017ei\u0161ti m\u00e1 b\u00fdt?<\/p>\n<p><\/p>\n<p><em>Ano.<\/em><\/p>\n<p><\/p>\n<p>Je tam Andrej Borodin, kter\u00fd na tuto ot\u00e1zku m\u016f\u017ee l\u00e9pe odpov\u011bd\u011bt ne\u017e j\u00e1. <\/p>\n<p><\/p>\n<p>(Andrej) Ano, d\u011bkuji za ot\u00e1zku! M\u011bli jsme popt\u00e1vku na p\u0159enos z\u00e1lohy na p\u00e1sku z cloudov\u00e9ho \u00falo\u017ei\u0161t\u011b. A pro to <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">se vyv\u00edj\u00ed<\/a><\/noindex> p\u0159enos mezi cloudy. Proto\u017ee p\u0159enos mezi cloudy je jak\u00e1si obecn\u00e1 verze p\u0159enosu na p\u00e1sku. Krom\u011b toho m\u00e1me roz\u0161i\u0159itelnou architekturu v \u010d\u00e1sti \u00falo\u017ei\u0161\u0165. Mimochodem, mnoh\u00e1 \u00falo\u017ei\u0161t\u011b byla naps\u00e1na studenty. A pokud nap\u00ed\u0161ete \u00falo\u017ei\u0161t\u011b pro p\u00e1sku, bude to samoz\u0159ejm\u011b podporov\u00e1no. Jsme otev\u0159eni pull request\u016fm. Tam je pot\u0159eba zapsat soubor, p\u0159e\u010d\u00edst soubor. Pokud tyto v\u011bci ud\u011bl\u00e1te ve vyvozu, obvykle to vyjde na 50 \u0159\u00e1dk\u016f k\u00f3du. A pak bude v WAL-G p\u00e1ska podporov\u00e1na. <\/p>\n<p><\/p>\n<p><em>D\u011bkuji za prezentaci! Zaj\u00edmav\u00fd proces v\u00fdvoje. Z\u00e1loha je v\u00e1\u017en\u00e1 \u010d\u00e1st funkcionality, kter\u00e1 by m\u011bla b\u00fdt dob\u0159e pokryt\u00e1 testy. Kdy\u017e jste implementovali funkcionalitu pro nov\u00e9 datab\u00e1ze, psali tak\u00e9 testy studenti, nebo jste testy napsali vy sami a potom je p\u0159edali student\u016fm k implementaci?<\/em><\/p>\n<p><\/p>\n<p>Testy psali tak\u00e9 studenti. Ale studenti psali v\u00edce pro takov\u00e9 funkce, jako jsou nov\u00e9 datab\u00e1ze. Psali integra\u010dn\u00ed testy. A psali jednotkov\u00e9 testy. Pokud integra\u010dn\u00ed testy prob\u011bhnou, t. j. v tuto chv\u00edli \u2013 je to sc\u00e9n\u00e1\u0159, kter\u00fd vykon\u00e1v\u00e1te ru\u010dn\u011b nebo v\u00e1m to d\u011bl\u00e1 cron, nap\u0159\u00edklad. T. j. ten sc\u00e9n\u00e1\u0159 je velmi srozumiteln\u00fd. <\/p>\n<p><\/p>\n<p><em>Studenti nemaj\u00ed moc zku\u0161enost\u00ed. Kolik \u010dasu zabere revize?<\/em><\/p>\n<p><\/p>\n<p>Ano, recenze skute\u010dn\u011b zabere hodn\u011b \u010dasu. T. j. obvykle, kdy\u017e p\u0159ijde hned n\u011bkolik komit\u00e9r\u016f a \u0159\u00edkaj\u00ed, \u017ee jsem ud\u011blal to \u010di ono, mus\u00edm p\u0159em\u00fd\u0161let a vyhradit si p\u016flden na to, abych se se v\u0161\u00edm, co napsali, sezn\u00e1mil. Proto\u017ee k\u00f3d je t\u0159eba d\u016fkladn\u011b p\u0159e\u010d\u00edst. Oni p\u0159ece nepro\u0161li pohovorem. Nezn\u00e1me je moc dob\u0159e, a proto to zabere zna\u010dn\u00fd \u010das.<\/p>\n<p><\/p>\n<p><em>D\u011bkuji za p\u0159edn\u00e1\u0161ku! D\u0159\u00edve Andrej Borodin uvedl, \u017ee archive_command v WAL-G by m\u011bl b\u00fdt vyvol\u00e1v\u00e1n p\u0159\u00edmo. Ale v p\u0159\u00edpad\u011b n\u011bjak\u00e9ho patron clusteru, pot\u0159ebujeme dal\u0161\u00ed logiku pro ur\u010den\u00ed uzlu, ze kter\u00e9ho odeslat WAL soubory. Jak tuto problematiku \u0159e\u0161\u00edte vy?<\/em><\/p>\n<p><\/p>\n<p>V \u010dem tu m\u00e1te probl\u00e9m? M\u011bjte na pam\u011bti, \u017ee m\u00e1te synchronn\u00ed repliku, ze kter\u00e9 d\u011bl\u00e1te z\u00e1lohu? Nebo co?<\/p>\n<p><\/p>\n<p>(Andrej) Skute\u010dnost\u00ed je, \u017ee WAL-G skute\u010dn\u011b p\u0159edpokl\u00e1d\u00e1 pou\u017eit\u00ed bez obalu shell skripty. Pokud n\u011bco chyb\u00ed, mohli bychom doplnit logiku, kter\u00e1 by m\u011bla b\u00fdt uvnit\u0159 WAL-G. Co se t\u00fd\u010de toho, odkud by m\u011bla b\u00fdt archiverace, pova\u017eujeme za spr\u00e1vn\u00e9 archiveraci prov\u00e1d\u011bt z aktu\u00e1ln\u00edho master uzlu v clusteru. Archiverace z repliky je \u0161patn\u00fd n\u00e1pad. Mohou se tam objevit r\u016fzn\u00e9 sc\u00e9n\u00e1\u0159e s probl\u00e9mov\u00fdmi situacemi. Zejm\u00e9na probl\u00e9my s archiverac\u00ed \u010dasov\u00fdch lini\u00ed a dal\u0161\u00edmi informacemi. D\u011bkuji za ot\u00e1zku!<\/p>\n<p><\/p>\n<p>(Up\u0159esn\u011bn\u00ed: Od obalu shell skripty jsme se zbavili) <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">v t\u00e9to z\u00e1le\u017eitosti<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Dobr\u00fd ve\u010der! D\u011bkuji za p\u0159edn\u00e1\u0161ku! Zaujal m\u011b prvek catchup, o kter\u00e9m jste hovo\u0159ili. Setkali jsme se se situac\u00ed, kdy replika zaost\u00e1vala a nemohla dohnat. A v dokumentaci k WAL-G jsem nena\u0161el popis t\u00e9to funkce.<\/em><\/p>\n<p><\/p>\n<p>Catchup se objevil doslova na p\u0159elomu ledna 2020. S dokumentac\u00ed by se mo\u017en\u00e1 m\u011blo l\u00e9pe pracovat. My ji sami p\u00ed\u0161eme a nep\u00ed\u0161eme ji dokonale. A mo\u017en\u00e1 by se od student\u016f m\u011blo za\u010d\u00edt vy\u017eadovat, aby ji psali.<\/p>\n<p><\/p>\n<p><em>Je u\u017e v releasu?<\/em><\/p>\n<p><\/p>\n<p>Pull request u\u017e byl slou\u010den, t. j. zkontroloval jsem ho. Zkou\u0161el jsem to na testovac\u00edm clusteru. Doposud jsme nem\u011bli situaci, kdy bychom to mohli ov\u011b\u0159it na re\u00e1ln\u00e9m p\u0159\u00edkladu.<\/p>\n<p><\/p>\n<p><em>Kdy o\u010dek\u00e1vat?<\/em><\/p>\n<p><\/p>\n<p>Nev\u00edm. Po\u010dkejte m\u011bs\u00edc, ur\u010dit\u011b to zkontrolujeme.<\/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.3 - 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\/cs\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\u00ed\u0159en\u00ed komunity. Georgij Rylov | ProHoster","description":"Navrhuji se sezn\u00e1mit s p\u0159episem p\u0159edn\u00e1\u0161ky Georgije Rylova z za\u010d\u00e1tku roku 2020 \"WAL-G: nov\u00e9 mo\u017enosti a roz\u0161\u00ed\u0159en\u00ed komunity\" U maintainer\u016f open-source se objevuje spousta probl\u00e9m\u016f.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/78887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}