{"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\/hu\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Javaslatom az olvas\u00f3knak, hogy ismerkedjenek meg Georgy Rilov 2020 elej\u00e9n tartott el\u0151ad\u00e1s\u00e1nak \"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s a k\u00f6z\u00f6ss\u00e9g b\u0151v\u00fcl\u00e9se\" c\u00edm\u0171 anyag\u00e1val.<\/strong><\/p>\n<p><\/p>\n<p>Az open-source fenntart\u00f3inak sok probl\u00e9m\u00e1val kell szemben\u00e9zni\u00fck n\u00f6veked\u00e9s\u00fck sor\u00e1n. Hogyan lehet egyre t\u00f6bb sz\u00fcks\u00e9ges funkci\u00f3t \u00edrni, egyre t\u00f6bb probl\u00e9m\u00e1t megoldani \u00e9s egyre t\u00f6bb pull requestet \u00e1ttekinteni? A WAL-G (PostgreSQL biztons\u00e1gi ment\u0151eszk\u00f6z) p\u00e9ld\u00e1j\u00e1n kereszt\u00fcl bemutatom, hogyan oldottuk meg ezeket a kih\u00edv\u00e1sokat, mik\u00f6zben elind\u00edtottuk az Open-source fejleszt\u00e9si kurzust az egyetemen, mit \u00e9rt\u00fcnk el eddig, \u00e9s merre tartunk tov\u00e1bb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. 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>Mindenkinek \u00fcdv\u00f6zlet ism\u00e9t! \u00c9n egy fejleszt\u0151 vagyok a Yandexn\u00e9l, Jekatyerinburgb\u00f3l. Ma a WAL-G-r\u00f3l fogok besz\u00e9lni.<\/p>\n<p><\/p>\n<p>Az el\u0151ad\u00e1s c\u00edm\u00e9ben nem szerepelt, hogy ez valami a biztons\u00e1gi ment\u00e9sekr\u0151l sz\u00f3l. Valaki nem tudja, mi az a WAL-G? Vagy mindenki tudja? Emelj\u00e9tek fel a kezet, aki nem tudja. Hihetetlen, hogy elj\u00f6ttetek az el\u0151ad\u00e1sra, \u00e9s nem tudj\u00e1tok, mir\u0151l van sz\u00f3.<\/p>\n<p><\/p>\n<p>Mes\u00e9lj\u00fcnk arr\u00f3l, hogy mi lesz ma. \u00dagy n\u00e9z ki, hogy a csapatunk m\u00e1r el\u00e9g r\u00e9g\u00f3ta foglalkozik a biztons\u00e1gi ment\u00e9sekkel. Ez egy \u00fajabb el\u0151ad\u00e1s a sorozatban, ahol arr\u00f3l besz\u00e9l\u00fcnk, hogy hogyan t\u00e1roljuk az adatokat biztons\u00e1gosan, megb\u00edzhat\u00f3an, k\u00e9nyelmesen \u00e9s hat\u00e9konyan.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az el\u0151z\u0151 r\u00e9szekben sok el\u0151ad\u00e1s hangzott el Andrej Borodin \u00e9s Vladimir Leskov r\u00e9sz\u00e9r\u0151l. Sokan voltunk. \u00c9s m\u00e1r \u00e9vek \u00f3ta besz\u00e9l\u00fcnk a WAL-G-r\u00f3l. <\/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>Ez az el\u0151ad\u00e1s egy kicsit elt\u00e9r a t\u00f6bbit\u0151l, mert itt ink\u00e1bb a k\u00f6z\u00f6ss\u00e9g n\u00f6veked\u00e9s\u00e9vel kapcsolatos probl\u00e9m\u00e1kkal foglalkozom. Elmondom, hogyan tal\u00e1ltunk egy kis \u00f6tletet, ami seg\u00edt nek\u00fcnk ezekkel megbirk\u00f3zni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9h\u00e1ny \u00e9vvel ezel\u0151tt a WAL-G egy viszonylag kicsi projekt volt, amelyet a Citus Data-t\u00f3l \u00f6r\u00f6k\u00f6lt\u00fcnk. Csak most vett\u00fck \u00e1t. Ezt kor\u00e1bban egy ember fejlesztette.<\/p>\n<p><\/p>\n<p>\u00c9s csak a WAL-G-b\u00f3l hi\u00e1nyoztak:<\/p>\n<p><\/p>\n<ul>\n<li>Replik\u00e1r\u00f3l t\u00f6rt\u00e9n\u0151 biztons\u00e1gi ment\u00e9sek.<\/li>\n<li>Nem voltak inkrement\u00e1lis biztons\u00e1gi ment\u00e9sek.<\/li>\n<li>Nem voltak WAL-Delta biztons\u00e1gi ment\u00e9sek. <\/li>\n<li>\u00c9s m\u00e9g rengeteg minden hi\u00e1nyzott.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Az elm\u00falt n\u00e9h\u00e1ny \u00e9vben a WAL-G jelent\u0151sen megn\u0151tt.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>2020-ra m\u00e1r mindez megval\u00f3sult. Tov\u00e1bb\u00e1, ami most m\u00e1r van:<\/p>\n<p><\/p>\n<ul>\n<li>T\u00f6bb mint 1 000 csillag a GitHubon.<\/li>\n<li>150 fork.<\/li>\n<li>K\u00f6r\u00fclbel\u00fcl 15 nyitott PR.<\/li>\n<li>\u00c9s m\u00e9g sok k\u00f6zrem\u0171k\u00f6d\u0151. <\/li>\n<li>\u00c9s folyamatosan nyitott probl\u00e9m\u00e1k. \u00c9s ez annak ellen\u00e9re, hogy mi naponta betessz\u00fck oda, hogy foglalkozzunk vele. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Arra a k\u00f6vetkeztet\u00e9sre jutottunk, hogy ennek a projektnek t\u00f6bb figyelmet kell szenteln\u00fcnk, m\u00e9g akkor is, amikor nek\u00fcnk magunknak nincs sz\u00fcks\u00e9g\u00fcnk arra, hogy valamit megval\u00f3s\u00edtsunk a Yandex Managed Databases szolg\u00e1ltat\u00e1s\u00e1hoz.<\/p>\n<p><\/p>\n<p>2018 \u0151sz\u00e9n egy \u00f6tlet \u00fct\u00f6tte fel a fej\u00e9t. A csapatnak \u00e1ltal\u00e1ban t\u00f6bb m\u00f3dja van arra, hogy funkci\u00f3kat hozzon l\u00e9tre vagy hib\u00e1kat jav\u00edtson, ha a kezek sz\u00e1ma nem elegend\u0151. P\u00e9ld\u00e1ul felvehetn\u00e9nk egy \u00faj fejleszt\u0151t, akinek fizetn\u00fcnk kell. Vagy esetleg egy gyakornokot is felvehetn\u00e9nk egy id\u0151re, akinek szint\u00e9n fizetn\u00fcnk kell. De l\u00e9tezik egy viszonylag nagy r\u00e9teg is, ahol n\u00e9h\u00e1nyan m\u00e1r tudnak k\u00f3dot \u00edrni. Csak \u00e9ppen sosem tudhatod, hogy ez a k\u00f3d milyen min\u0151s\u00e9g\u0171.<\/p>\n<p><\/p>\n<p>Gondolkodtunk, \u00e9s \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy megpr\u00f3b\u00e1lunk di\u00e1kokat bevonni. De a di\u00e1kok nem fognak mindenben r\u00e9szt venni. Csak a munka egy r\u00e9sz\u00e9t fogj\u00e1k elv\u00e9gezni. P\u00e9ld\u00e1ul teszteket fognak \u00edrni, hib\u00e1kat jav\u00edtani, olyan funkci\u00f3kat megval\u00f3s\u00edtani, amelyek nem \u00e9rintik az alapvet\u0151 funkcionalit\u00e1st. Az alapvet\u0151 funkcionalit\u00e1s a biztons\u00e1gi ment\u00e9sek l\u00e9trehoz\u00e1sa \u00e9s vissza\u00e1ll\u00edt\u00e1sa. Ha hib\u00e1t ejt\u00fcnk a biztons\u00e1gi ment\u00e9s l\u00e9trehoz\u00e1s\u00e1n\u00e1l, az adatveszt\u00e9shez vezethet. \u00c9s ezt senki sem szeretn\u00e9. Mindenki azt szeretn\u00e9, hogy minden nagyon megb\u00edzhat\u00f3 legyen. Ez\u00e9rt a k\u00f3d, amelyben kev\u00e9sb\u00e9 b\u00edzunk, mint a saj\u00e1tunkban, ott nem akarjuk alkalmazni. Teh\u00e1t b\u00e1rmilyen nem kritikus k\u00f3dot, amit kieg\u00e9sz\u00edt\u0151 munkat\u00e1rsakt\u00f3l szeretn\u00e9nk, \u00f6r\u00f6mmel l\u00e1tunk.<\/p>\n<p><\/p>\n<p><strong>Milyen felt\u00e9telek mellett fogadjuk el a di\u00e1kok PR-j\u00e1t<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>K\u00f6telez\u0151, hogy a k\u00f3djukat tesztekkel fedj\u00e9k le. Mindennek \u00e1t kell mennie a CI-n. <\/li>\n<li>Ezen k\u00edv\u00fcl k\u00e9t fel\u00fclvizsg\u00e1laton is \u00e1tesik. Az egyik Andrej Borodin\u00e9t\u00f3l, a m\u00e1sik pedig az eny\u00e9m. <\/li>\n<li>Tov\u00e1bb\u00e1, hogy ellen\u0151rizzem, nem t\u00f6rik-e meg semmi a szolg\u00e1ltat\u00e1sunkban, k\u00fcl\u00f6n felt\u00f6lt\u00f6m a buildet ezzel a commit-tal. \u00c9s ellen\u0151rizz\u00fck az end-to-end tesztekben, hogy semmi nem d\u0151l \u00f6ssze.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Speci\u00e1lis tanfolyam az Open Source-r\u00f3l<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Egy kicsit arr\u00f3l, hogy mi\u00e9rt van erre sz\u00fcks\u00e9g \u00e9s mi\u00e9rt tartom ezt men\u0151 \u00f6tletnek. <\/p>\n<p><\/p>\n<p><strong>Sz\u00e1munkra a haszon nyilv\u00e1nval\u00f3:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Tov\u00e1bbi kezeket kapunk. <\/li>\n<li>\u00c9s keres\u00fcnk csapattagokat \u00fcgyes di\u00e1kok k\u00f6z\u00f6tt, akik tudnak j\u00f3l k\u00f3dot \u00edrni. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Milyen haszont ny\u00fajt a di\u00e1koknak?<\/strong><\/p>\n<p><\/p>\n<p>Ezek tal\u00e1n kev\u00e9sb\u00e9 nyilv\u00e1nval\u00f3k, mert a di\u00e1kok legal\u00e1bbis nem kapnak p\u00e9nzt a k\u00f3djuk\u00e9rt, csak jegyeket a kreditk\u00f6nyv\u00fckbe. <\/p>\n<p><\/p>\n<p>Megk\u00e9rdeztem t\u0151l\u00fck err\u0151l, \u00e9s a k\u00f6vetkez\u0151ket mondt\u00e1k:<\/p>\n<p><\/p>\n<ul>\n<li>Open Source contributor tapasztalat.<\/li>\n<li>CV-be ker\u00fcl\u0151 bejegyz\u00e9s.<\/li>\n<li>Megmutatkozni \u00e9s eljutni egy interj\u00fara a Yandexhez.<\/li>\n<li>R\u00e9szt venni a GSoC-ban.<\/li>\n<li>+1 speci\u00e1lis tanfolyam azok sz\u00e1m\u00e1ra, akik k\u00f3dot szeretn\u00e9nek \u00edrni.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nem fogom mes\u00e9lni, hogyan volt megszervezve a kurzus. Csak annyit mondok, hogy a WAL-G volt a f\u0151 projekt. A kurzusunkba olyan projekteket is belevett\u00fcnk, mint az Odyssey, PostgreSQL \u00e9s ClickHouse.<\/p>\n<p><\/p>\n<p>Feladatokat nemcsak ezen a kurzuson adtak, hanem diplomamunk\u00e1kat \u00e9s kurzusokat is kiadtak.<\/p>\n<p><\/p>\n<p><strong>\u00c9s mi a haszon a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra?<\/strong><\/p>\n<p><\/p>\n<p>Most t\u00e9rj\u00fcnk \u00e1t arra a r\u00e9szre, ami val\u00f3sz\u00edn\u0171leg \u00f6n\u00f6ket jobban \u00e9rdekli. Mi a hasznuk ebb\u0151l? Az a haszon, hogy a hallgat\u00f3k sok hib\u00e1t kijav\u00edtottak. \u00c9s megcsin\u00e1lt\u00e1k azokat a funkci\u00f3k\u00e9r\u00e9seket, amelyeket k\u00e9rt t\u0151l\u00fcnk. <\/p>\n<p><\/p>\n<p>\u00c9s hadd mes\u00e9ljek el dolgokat, amiket r\u00e9g\u00f3ta szeretett volna, \u00e9s amelyeket megval\u00f3s\u00edtottak.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tablespace t\u00e1mogat\u00e1s. A tablespace-ek a WAL-G-ban tal\u00e1n a WAL-G kiad\u00e1sa \u00f3ta v\u00e1rakoztak, mivel a WAL-G a WAL-E nev\u0171 m\u00e1sik ment\u00e9si eszk\u00f6z ut\u00f3dja, ahol a tablespace-ekkel rendelkez\u0151 adatb\u00e1zisok biztons\u00e1gi ment\u00e9sei voltak t\u00e1mogatva.<\/p>\n<p><\/p>\n<p>R\u00f6viden eml\u00e9keztetem, hogy mi ez \u00e9s mi\u00e9rt van sz\u00fcks\u00e9g r\u00e1. \u00c1ltal\u00e1ban a Postgres \u00f6sszes adata egyetlen k\u00f6nyvt\u00e1rban helyezkedik el a f\u00e1jlrendszeren, amelyet alap k\u00f6nyvt\u00e1rnak neveznek. Ez a k\u00f6nyvt\u00e1r m\u00e1r tartalmazza az \u00f6sszes f\u00e1jlt \u00e9s almapp\u00e1t, amely a Postgres m\u0171k\u00f6d\u00e9s\u00e9hez sz\u00fcks\u00e9ges.<\/p>\n<p><\/p>\n<p>A tablespace-ek olyan k\u00f6nyvt\u00e1rak, ahol a Postgres adatai tal\u00e1lhat\u00f3k, de nem helyezkednek el az alap k\u00f6nyvt\u00e1ron k\u00edv\u00fcl. A di\u00e1n l\u00e1that\u00f3, hogy a tablespace-ek az alap k\u00f6nyvt\u00e1ron k\u00edv\u00fcl tal\u00e1lhat\u00f3k.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan n\u00e9z ez ki mag\u00e1nak a Postgres-nek? Az alap k\u00f6nyvt\u00e1rban van egy k\u00fcl\u00f6n almappa, a pg_tblspc. Itt szimbolikus linkek tal\u00e1lhat\u00f3k azoknak a k\u00f6nyvt\u00e1raknak a hely\u00e9re, ahol a Postgres adatai t\u00e9nylegesen helyezkednek el az alap k\u00f6nyvt\u00e1ron k\u00edv\u00fcl.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Amikor ezt haszn\u00e1lja, ezek a parancsok \u00edgy n\u00e9zhetnek ki. Teh\u00e1t l\u00e9trehoz egy t\u00e1bl\u00e1t egy megadott tablespace-ben, \u00e9s megn\u00e9zi, hol helyezkedik el most. Az utols\u00f3 k\u00e9t sor, az utols\u00f3 k\u00e9t h\u00edvott parancsott. Ott l\u00e1that\u00f3, hogy van egy \u00fatvonal. De val\u00f3j\u00e1ban ez nem a val\u00f3s \u00fatvonal. Ez az alap k\u00f6nyvt\u00e1rhoz tartoz\u00f3 prefixszel rendelkez\u0151 \u00fatvonal a tablespace-hez. \u00c9s onnan egy szimbolikus linken kereszt\u00fcl vezet val\u00f3di adataihoz.<\/p>\n<p><\/p>\n<p>N\u00e1lunk ez mindez nem haszn\u00e1latos a csapatunkban, viszont sok m\u00e1s WAL-E felhaszn\u00e1l\u00f3n\u00e1l haszn\u00e1lt\u00e1k, akik \u00edrtak nek\u00fcnk, hogy szeretn\u00e9nek WAL-G-ra v\u00e1ltani, de ez h\u00e1tr\u00e1ltatta \u0151ket. Most ez t\u00e1mogatott.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A m\u00e1sik funkci\u00f3, amelyet a speci\u00e1lis kurzusunk hozott nek\u00fcnk, a catchup. A catchupr\u00f3l azok tudnak, akik val\u00f3sz\u00edn\u0171leg t\u00f6bbet dolgoztak Oracle-lal, mint Postgres-szel.<\/p>\n<p><\/p>\n<p>R\u00f6viden arr\u00f3l, hogy mi ez. \u00cdgy \u00e1ltal\u00e1ban kin\u00e9zhet a cluster topol\u00f3gia a szolg\u00e1ltat\u00e1sunkban. Van egy mester. Van egy replik\u00e1ci\u00f3, ami streameli a write-ahead logot t\u0151le. A replik\u00e1ci\u00f3 t\u00e1j\u00e9koztatja a mestert, hogy \u00e9ppen milyen LSN-en van. Ek\u00f6zben p\u00e1rhuzamosan archiv\u00e1lhat\u00f3 a napl\u00f3. Ezen k\u00edv\u00fcl a felh\u0151be k\u00e9sz\u00edt\u00fcnk biztons\u00e1gi ment\u00e9seket. \u00c9s delta-biztons\u00e1gi m\u00e1solatok is k\u00fcld\u00e9sre ker\u00fclnek.<\/p>\n<p><\/p>\n<p>Milyen probl\u00e9ma ad\u00f3dhat? Amikor el\u00e9g nagy adatb\u00e1zisod van, el\u0151fordulhat, hogy a replik\u00e1ci\u00f3 jelent\u0151sen lemarad a mestert\u0151l. \u00c9s olyannyira lemarad, hogy soha t\u00f6bb\u00e9 nem tudja utol\u00e9rni. Ezt a probl\u00e9m\u00e1t \u00e1ltal\u00e1ban valahogy meg kell oldani. <\/p>\n<p><\/p>\n<p>A legegyszer\u0171bb m\u00f3dja ennek az, hogy elt\u00e1vol\u00edtod a replik\u00e1ci\u00f3t \u00e9s \u00fajra l\u00e9trehozod, mert soha t\u00f6bb\u00e9 nem fog utol\u00e9rni, a probl\u00e9m\u00e1t pedig meg kell oldani. De ez el\u00e9g id\u0151ig\u00e9nyes, mert 10 TB-os teljes biztons\u00e1gi ment\u00e9s helyre\u00e1ll\u00edt\u00e1sa nagyon-nagyon hossz\u00fa. \u00c9s azt akarjuk, hogy ez min\u00e9l gyorsabban t\u00f6rt\u00e9njen, ha ilyen probl\u00e9m\u00e1k mer\u00fclnek fel. Erre val\u00f3 a catchup.<\/p>\n<p><\/p>\n<p>A catchup lehet\u0151v\u00e9 teszi, hogy delta-biztons\u00e1gi m\u00e1solatokat haszn\u00e1ljunk, amelyek a felh\u0151ben vannak t\u00e1rolva. Megmondod, hogy \u00e9ppen milyen LSN-en van a lemarad\u00f3 replik\u00e1ci\u00f3, \u00e9s ezt megadod a catchup parancsban a delta-biztons\u00e1gi m\u00e1solat l\u00e9trehoz\u00e1s\u00e1hoz az adott LSN \u00e9s a jelenlegi cluster LSN k\u00f6z\u00f6tt. Ezut\u00e1n ezt a biztons\u00e1gi m\u00e1solatot helyre\u00e1ll\u00edtod a lemarad\u00f3 replik\u00e1ci\u00f3n.<\/p>\n<p><\/p>\n<p><strong>Egy\u00e9b adatb\u00e1zisok<\/strong><\/p>\n<p><\/p>\n<p>Tov\u00e1bb\u00e1 a di\u00e1kok t\u00f6bb funkci\u00f3t is hoztak nek\u00fcnk. Mivel a Yandexn\u00e9l nemcsak Postgres-t haszn\u00e1lunk, hanem MySQL-t, MongoDB-t, Redis-t, ClickHouse-t is, egy id\u0151ben sz\u00fcks\u00e9g\u00fcnk volt arra, hogy k\u00e9pesek legy\u00fcnk point-in-time recovery biztons\u00e1gi m\u00e1solatokat k\u00e9sz\u00edteni MySQL-b\u0151l, \u00e9s hogy lehet\u0151s\u00e9g legyen azokat a felh\u0151be felt\u00f6lteni.<\/p>\n<p><\/p>\n<p>Azt akartuk, hogy ezt hasonl\u00f3 m\u00f3don val\u00f3s\u00edtsuk meg, ahogy a WAL-G teszi. \u00c9s \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy k\u00eds\u00e9rletez\u00fcnk, \u00e9s megn\u00e9zz\u00fck, hogyan n\u00e9z ki mindez.<\/p>\n<p><\/p>\n<p>Kezdetben nem k\u00fcl\u00f6nv\u00e1lasztva ezt a logik\u00e1t, forkban \u00edrtuk a k\u00f3dot. L\u00e1thattuk, hogy van valami m\u0171k\u00f6d\u0151 modell\u00fcnk, \u00e9s ez m\u0171k\u00f6dhet. Azt\u00e1n arra gondoltunk, hogy a f\u0151 k\u00f6z\u00f6ss\u00e9g\u00fcnk a Postgres felhaszn\u00e1l\u00f3k, \u0151k haszn\u00e1lj\u00e1k a WAL-G-t. Ez\u00e9rt sz\u00fcks\u00e9ges, hogy ezeket a r\u00e9szeket valahogy sz\u00e9tv\u00e1lasszuk. Azaz, amikor jav\u00edtjuk a k\u00f3dot a Postgreshez, nem z\u00fazzuk le a MySQL-t, \u00e9s amikor a MySQL-t jav\u00edtjuk, akkor nem z\u00fazzuk le a Postgres-t.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az els\u0151 \u00f6tlet arr\u00f3l, hogy hogyan lehet ezt sz\u00e9tv\u00e1lasztani, a PostgreSQL b\u0151v\u00edtm\u00e9nyekn\u00e9l haszn\u00e1lt megk\u00f6zel\u00edt\u00e9s alkalmaz\u00e1sa volt. Alapvet\u0151en ahhoz, hogy MySQL-t menthess\u00fcnk, valamilyen dinamikus k\u00f6nyvt\u00e1rat kellett telep\u00edteni. <\/p>\n<p><\/p>\n<p>De itt azonnal l\u00e1tszik ennek a megk\u00f6zel\u00edt\u00e9snek az aszimmetri\u00e1ja. Amikor Postgres-t mentesz, egy norm\u00e1lis ment\u0151programot telep\u00edtesz r\u00e1, \u00e9s minden j\u00f3l m\u0171k\u00f6dik. MySQL eset\u00e9ben viszont \u00fagy t\u0171nik, hogy egy Postgres ment\u0151programot kell telep\u00edtened, \u00e9s ehhez m\u00e9g egy dinamikus k\u00f6nyvt\u00e1rat a MySQL-hez. Ez furcs\u00e1n hangzik. Mi is \u00edgy gondoltuk, \u00e9s \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy ez nem az a megold\u00e1s, amire sz\u00fcks\u00e9g\u00fcnk van. <\/p>\n<p><\/p>\n<p><strong>K\u00fcl\u00f6nb\u00f6z\u0151 \u00f6sszes\u00edt\u00e9sek a Postgres, MySQL, MongoDB, Redis sz\u00e1m\u00e1ra.<\/strong><\/p>\n<p><\/p>\n<p>De \u00fagy t\u0171nik, ez lehet\u0151v\u00e9 tette sz\u00e1munkra, hogy a helyes megold\u00e1shoz jussunk \u2013 k\u00fcl\u00f6nb\u00f6z\u0151 \u00f6sszes\u00edt\u00e9sek kiemel\u00e9se a k\u00fcl\u00f6nb\u00f6z\u0151 adatb\u00e1zisokhoz. Ez lehet\u0151v\u00e9 tette a k\u00fcl\u00f6nb\u00f6z\u0151 adatb\u00e1zisok ment\u00e9si logik\u00e1j\u00e1nak elk\u00fcl\u00f6n\u00edt\u00e9s\u00e9t, amelyek egy k\u00f6z\u00f6s API-hoz fordulnak, amelyet a WAL-G val\u00f3s\u00edt meg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez az a r\u00e9sz, amit mi \u00edrtunk \u2013 miel\u0151tt a di\u00e1koknak feladatokat adtunk. Teh\u00e1t ez az a r\u00e9sz, ahol \u0151k val\u00f3sz\u00edn\u0171leg hib\u00e1zni tudtak, ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy ink\u00e1bb mi csin\u00e1lunk valamit, \u00e9s akkor minden rendben lesz. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezut\u00e1n kiadtuk a feladatokat. Ezeket azonnal meg is oldott\u00e1k. A di\u00e1kokt\u00f3l azt v\u00e1rtuk el, hogy h\u00e1rom adatb\u00e1zist t\u00e1mogassanak. <\/p>\n<p><\/p>\n<p>Ez a MySQL, amelyet m\u00e1r t\u00f6bb mint egy \u00e9ve ment\u00fcnk a WAL-G seg\u00edts\u00e9g\u00e9vel. <\/p>\n<p><\/p>\n<p>\u00c9s most a MongoDB m\u00e1r a produkci\u00f3hoz k\u00f6zel\u00edt, ott apr\u00f3 jav\u00edt\u00e1sokat v\u00e9geznek. Alapvet\u0151en ezeknek a munk\u00e1latoknak a keret\u00e9t mi \u00edrtuk. A di\u00e1kok pedig \u00edrtak n\u00e9h\u00e1ny m\u0171k\u00f6d\u0151 dolgot. Ezut\u00e1n mi ezeket olyan \u00e1llapotba hoztuk, hogy el tudjuk fogadni a produkci\u00f3nkban.<\/p>\n<p><\/p>\n<p>Ezek a feladatok nem \u00fagy n\u00e9ztek ki, hogy a di\u00e1koknak teljes backup eszk\u00f6z\u00f6ket kellett volna \u00edrniuk minden egyes adatb\u00e1zis sz\u00e1m\u00e1ra. Ez a probl\u00e9ma nem \u00e1llt fenn. A probl\u00e9m\u00e1nk az volt, hogy point-in-time recovery-t akartunk, \u00e9s azt, hogy a felh\u0151be ments\u00fcnk. K\u00e9rt\u00fck a di\u00e1kokat, hogy \u00edrjanak valamilyen k\u00f3dot, amely ezt megoldja. A di\u00e1kok a m\u00e1r megl\u00e9v\u0151 backup eszk\u00f6z\u00f6ket haszn\u00e1lt\u00e1k, amelyek valamilyen m\u00f3don k\u00e9sz\u00edtenek ment\u00e9seket, majd ezeket \u00f6sszeszerelt\u00e9k a WAL-G-vel, ami mindent felk\u00fcld a felh\u0151be. Ezen k\u00edv\u00fcl hozz\u00e1adt\u00e1k a point-in-time recovery-t is.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi m\u00e1st hoztak a di\u00e1kok? Hozz\u00e1tett\u00e9k a WAL-G-hez a Libsodium titkos\u00edt\u00e1si t\u00e1mogat\u00e1st.<\/p>\n<p><\/p>\n<p>Illetve bevezet\u00e9sre ker\u00fcltek a ment\u00e9sek t\u00e1rol\u00e1s\u00e1nak politik\u00e1i. Mostant\u00f3l a ment\u00e9sek permanensnek jel\u00f6lhet\u0151k. \u00cdgy k\u00e9nyelmesebb\u00e9 v\u00e1lik a szolg\u00e1ltat\u00e1sod sz\u00e1m\u00e1ra a t\u00e1rol\u00e1si folyamat automatiz\u00e1l\u00e1sa. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi lett a k\u00eds\u00e9rlet eredm\u00e9nye?<\/p>\n<p><\/p>\n<p>Eredetileg t\u00f6bb mint 100 f\u0151 regisztr\u00e1lt a tanfolyamra. Eleinte nem mondtam, hogy az egyetem Jekatyerinburgban az Ural Sz\u00f6vets\u00e9gi Egyetem. Itt hirdett\u00fck meg. 100 f\u0151 regisztr\u00e1lt. Val\u00f3j\u00e1ban sokkal kevesebben kezdtek el dolgozni, k\u00f6r\u00fclbel\u00fcl 30 f\u0151. <\/p>\n<p><\/p>\n<p>M\u00e9g kevesebb ember fejezte be a kurzust, mert ott teszteket kellett \u00edrni a m\u00e1r megl\u00e9v\u0151 k\u00f3dokhoz. Emellett meg kellett jav\u00edtani egy hib\u00e1t, vagy k\u00e9sz\u00edteni egy \u00faj funkci\u00f3t. N\u00e9h\u00e1ny di\u00e1k m\u00e9gis befejezte a kurzust.<\/p>\n<p><\/p>\n<p>Jelenleg a di\u00e1kok k\u00f6r\u00fclbel\u00fcl 14 probl\u00e9m\u00e1t jav\u00edtottak ki ezen a kurzuson, \u00e9s 10 k\u00fcl\u00f6nb\u00f6z\u0151 m\u00e9ret\u0171 funkci\u00f3t k\u00e9sz\u00edtettek. V\u00e9lem\u00e9nyem szerint ez egy-k\u00e9t fejleszt\u0151 teljes \u00e9rt\u00e9k\u0171 helyettes\u00edt\u00e9se. <\/p>\n<p><\/p>\n<p>Tov\u00e1bb\u00e1 diplom\u00e1kat \u00e9s kurzusmunk\u00e1kat adtunk ki. 12 di\u00e1k vette \u00e1t a diplom\u00e1j\u00e1t. 6 m\u00e1r \u201e5\u201d-\u00f6s oszt\u00e1lyzatot kapott az \u00e1llamvizsg\u00e1n. A t\u00f6bbieknek m\u00e9g nem volt v\u00e9d\u00e9s\u00fck, de \u00fagy gondolom, hogy n\u00e1luk is minden rendben lesz. <\/p>\n<p><\/p>\n<p>J\u00f6v\u0151beli tervek<\/p>\n<p><\/p>\n<p>Mik a j\u00f6v\u0151beli terveink?<\/p>\n<p><\/p>\n<p>Legal\u00e1bbis azok a funkci\u00f3k, amelyeket m\u00e1r hallottunk a felhaszn\u00e1l\u00f3kt\u00f3l, \u00e9s amelyeket szeretn\u00e9nk megval\u00f3s\u00edtani. Ezek a k\u00f6vetkez\u0151k:<\/p>\n<p><\/p>\n<ul>\n<li>A HA klaszter h\u00e1tter\u00e9nek arch\u00edvum\u00e1ban a timeline helyess\u00e9g\u00e9nek nyomon k\u00f6vet\u00e9se. Ezt a WAL-G seg\u00edts\u00e9g\u00e9vel meg lehet csin\u00e1lni. \u00c9s \u00fagy gondolom, tal\u00e1lunk di\u00e1kokat, akik elv\u00e1llalj\u00e1k ezt a feladatot. <\/li>\n<li>A felh\u0151k k\u00f6z\u00f6tti biztons\u00e1gi m\u00e1solatok \u00e9s WAL \u00e1tvitel\u00e9nek felel\u0151se m\u00e1r megvan. <\/li>\n<li>Nemr\u00e9giben k\u00f6zz\u00e9tett\u00fck azt az \u00f6tletet, hogy a WAL-G-t m\u00e9g gyorsabb\u00e1 tudjuk tenni az inkrement\u00e1lis biztons\u00e1gi ment\u00e9sek kicsomagol\u00e1s\u00e1val an\u00e9lk\u00fcl, hogy fel\u00fcl\u00edrn\u00e1nk az oldalakat, \u00e9s az arch\u00edvumok optimaliz\u00e1l\u00e1s\u00e1val, amelyeket oda k\u00fcld\u00fcnk. <\/li>\n<\/ul>\n<p><\/p>\n<p>Itt megoszthatod \u0151ket<\/p>\n<p><\/p>\n<p>Mi volt ennek a besz\u00e1mol\u00f3nak a c\u00e9lja? Az, hogy most, rajtunk k\u00edv\u00fcl 4 ember, aki ezt a projektet t\u00e1mogatja, vannak tov\u00e1bbi kezek, akiket el\u00e9g k\u00f6nnyen el\u00e9rhetsz. K\u00fcl\u00f6n\u00f6sen, ha szem\u00e9lyesen \u00edrsz nekik. Ha biztons\u00e1gi m\u00e1solatot k\u00e9sz\u00edtesz az adatokr\u00f3l, \u00e9s ezt WAL-G seg\u00edts\u00e9g\u00e9vel teszed, vagy szeretn\u00e9l a WAL-G-re \u00e1tt\u00e9rni, akkor a k\u00edv\u00e1ns\u00e1gaidat viszonylag k\u00f6nnyen figyelembe tudjuk venni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez a QR-k\u00f3d \u00e9s hivatkoz\u00e1s. Ezek seg\u00edts\u00e9g\u00e9vel \u00e1t tudsz t\u00e9rni \u00e9s meg tudod \u00edrni minden k\u00edv\u00e1ns\u00e1godat. P\u00e9ld\u00e1ul, ha egy hib\u00e1t nem jav\u00edtunk ki. Vagy egy funkci\u00f3t szeretn\u00e9l, de valami\u00e9rt m\u00e9g nincs a biztons\u00e1gi m\u00e1solatok k\u00f6z\u00f6tt, bele\u00e9rtve a mi\u00e9nket is. Mindenk\u00e9ppen \u00edrd meg ezt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e9rd\u00e9sek<\/p>\n<p><\/p>\n<p><em>Hell\u00f3! K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! K\u00e9rd\u00e9sem van a WAL-G-vel kapcsolatban, de nem a Postgresr\u0151l. A WAL-G menti a MySQL-t, \u00e9s extrament\u00e9st kezdem\u00e9nyez. Ha a modern telep\u00edt\u00e9seket n\u00e9zz\u00fck CentOS-on, \u00e9s ha megcsin\u00e1lja a yum install MySQL-t, akkor a MariaDB telep\u00fcl. A 10.3-as verzi\u00f3t\u00f3l az extrament\u00e9s nem t\u00e1mogatott, a MariaDB-ment\u00e9s t\u00e1mogatott. Milyen a helyzet ezzel \u00f6n\u00f6kn\u00e9l?<\/em><\/p>\n<p><\/p>\n<p>Jelenleg nem pr\u00f3b\u00e1ltuk meg a MariaDB ment\u00e9s\u00e9t. Volt k\u00e9r\u00e9s\u00fcnk a FoundationDB t\u00e1mogat\u00e1s\u00e1ra, de \u00f6sszess\u00e9g\u00e9ben, ha van ilyen k\u00e9r\u00e9s, akkor tal\u00e1lhatunk embereket, akik ezt megcsin\u00e1lj\u00e1k. Nem olyan hossz\u00fa \u00e9s nem olyan neh\u00e9z, mint nekem t\u0171nik.<\/p>\n<p><\/p>\n<p><em>J\u00f3 napot! K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! K\u00e9rd\u00e9sem van a potenci\u00e1lisan \u00faj funkci\u00f3kr\u00f3l. K\u00e9szen \u00e1llnak arra, hogy a WAL-G-t m\u0171k\u00f6d\u00e9sbe hozz\u00e1k szalagokkal, hogy ment\u00e9st v\u00e9gezhess\u00fcnk szalagokra?<\/em><\/p>\n<p><\/p>\n<p>A szalagos t\u00e1rol\u00f3r\u00f3l van sz\u00f3, ugye?<\/p>\n<p><\/p>\n<p><em>Igen.<\/em><\/p>\n<p><\/p>\n<p>Ott van Andrej Borodin, aki erre a k\u00e9rd\u00e9sre jobban tud v\u00e1laszolni n\u00e1lam. <\/p>\n<p><\/p>\n<p>(Andrej) Igen, k\u00f6sz\u00f6n\u00f6m a k\u00e9rd\u00e9st! Volt k\u00e9r\u00e9s a felh\u0151b\u0151l szalagra t\u00f6rt\u00e9n\u0151 ment\u00e9shez. \u00c9s ez\u00e9rt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">fejleszt\u00e9s alatt \u00e1ll<\/a><\/noindex> a felh\u0151k k\u00f6z\u00f6tti \u00e1tvitelt. Mert a felh\u0151k k\u00f6z\u00f6tti \u00e1tvitel egy bizonyos \u00e1ltal\u00e1nos verzi\u00f3ja a szalagra t\u00f6rt\u00e9n\u0151 \u00e1tvitelnek. Ezenk\u00edv\u00fcl b\u0151v\u00edthet\u0151 architekt\u00far\u00e1nk van a t\u00e1rol\u00f3k ter\u00e9n. \u00c9rdekes, hogy sok t\u00e1rol\u00f3t di\u00e1kok \u00edrtak. Ha \u00edr egy t\u00e1rol\u00f3t szalagra, akkor azt term\u00e9szetesen t\u00e1mogatni fogjuk. K\u00e9szen \u00e1llunk a pull requestek megfontol\u00e1s\u00e1ra. Fel kellene \u00edrni egy f\u00e1jlt, el kellene olvasni egy f\u00e1jlt. Ha ezeket Go-ra \u00edrj\u00e1k, akkor \u00e1ltal\u00e1ban 50 sor k\u00f3dot kapunk. \u00c9s akkor a WAL-G t\u00e1mogatni fogja a szalagot. <\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! \u00c9rdekes fejleszt\u00e9si folyamat. A ment\u00e9s egy komoly funkci\u00f3, amelynek j\u00f3l kell teszteltnek lennie. Amikor \u00faj adatb\u00e1zisokhoz val\u00f3s\u00edtott\u00e1k meg a funkci\u00f3t, a teszteket is di\u00e1kok \u00edrt\u00e1k, vagy \u00f6n\u00f6k maguk \u00edrt\u00e1k a teszteket, majd adt\u00e1k \u00e1t a megval\u00f3s\u00edt\u00e1st di\u00e1koknak?<\/em><\/p>\n<p><\/p>\n<p>A teszteket is di\u00e1kok \u00edrt\u00e1k. De a di\u00e1kok t\u00f6bbet \u00edrtak az olyan funkci\u00f3khoz, mint az \u00faj adatb\u00e1zisok. \u00cdrtak integr\u00e1ci\u00f3s teszteket. \u00c9s \u00edrtak unit-teszteket is. Ha az integr\u00e1ci\u00f3s tesztek \u00e1tmennek, azaz jelenleg ez egy forgat\u00f3k\u00f6nyv, amit manu\u00e1lisan hajtanak v\u00e9gre vagy amit p\u00e9ld\u00e1ul a cron v\u00e9gez, akkor ez a forgat\u00f3k\u00f6nyv nagyon is \u00e9rthet\u0151. <\/p>\n<p><\/p>\n<p><em>A di\u00e1koknak nem sok tapasztalatuk van. Mennyire sok id\u0151be telik a fel\u00fclvizsg\u00e1lat?<\/em><\/p>\n<p><\/p>\n<p>Igen, a fel\u00fclvizsg\u00e1lat val\u00f3ban sok id\u0151t ig\u00e9nyel. Teh\u00e1t \u00e1ltal\u00e1ban, amikor egyszerre t\u00f6bb elk\u00f6vet\u0151 \u00e9rkezik, \u00e9s azt mondj\u00e1k, hogy ezt tettem, azt tettem, akkor r\u00e1 kell sz\u00e1nni egy f\u00e9l napot, hogy meg\u00e9rts\u00fck, mit \u00edrtak. Mert a k\u00f3dot alaposan kell olvasni. \u0150k nem vettek r\u00e9szt a interj\u00fan. Nem igaz\u00e1n ismerj\u00fck \u0151ket, ez\u00e9rt ez jelent\u0151s id\u0151t vesz ig\u00e9nybe.<\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! Kor\u00e1bban Andrej Borodin azt \u00e1ll\u00edtotta, hogy az archive_command-nak a WAL-G-ban k\u00f6zvetlen\u00fcl kellene h\u00edv\u00f3dnia. De valamilyen patron klaszter eset\u00e9n sz\u00fcks\u00e9g\u00fcnk van tov\u00e1bbi logik\u00e1ra a nodok meghat\u00e1roz\u00e1s\u00e1hoz, ahonnan az wal-kat k\u00fcldeni kell. Hogyan oldj\u00e1k meg ezt a probl\u00e9m\u00e1t?<\/em><\/p>\n<p><\/p>\n<p>Milyen probl\u00e9m\u00e1ba \u00fctk\u00f6zik itt? P\u00e9ld\u00e1ul van egy szinkron replik\u00e1ja, ahonnan biztons\u00e1gi m\u00e1solatot k\u00e9sz\u00edt? Vagy mi?<\/p>\n<p><\/p>\n<p>(Andrej) Az a helyzet, hogy a WAL-G val\u00f3ban shell-scriptek haszn\u00e1lat\u00e1t felt\u00e9telezi. Ha valami hi\u00e1nyzik, akkor \u00edrjunk egy logik\u00e1t, ami a WAL-G-n bel\u00fcl kellene, hogy legyen. Ami azt illeti, hogy honnan kell a archiv\u00e1l\u00e1s, \u00fagy gondoljuk, hogy a archiv\u00e1ci\u00f3nak a jelenlegi masterb\u0151l kell t\u00f6rt\u00e9nnie a klaszterben. A replik\u00e1r\u00f3l t\u00f6rt\u00e9n\u0151 archiv\u00e1l\u00e1s rossz \u00f6tlet. Ott k\u00fcl\u00f6nf\u00e9le probl\u00e9m\u00e1kkal j\u00e1rhatnak. K\u00fcl\u00f6n\u00f6sen probl\u00e9m\u00e1k lehetnek az arch\u00edvum id\u0151vonalakkal \u00e9s egy\u00e9b inform\u00e1ci\u00f3kkal. K\u00f6sz\u00f6n\u00f6m a k\u00e9rd\u00e9st!<\/p>\n<p><\/p>\n<p>(Jav\u00edt\u00e1s: Megszabadultunk a shell-scriptek l\u00e1ncol\u00e1s\u00e1t\u00f3l <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">ebben a probl\u00e9m\u00e1ban<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>J\u00f3 est\u00e9t! K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! \u00c9rdekes volt a catchup funkci\u00f3, amir\u0151l besz\u00e9lt\u00e9l. Tal\u00e1lkoztunk olyan helyzettel, amikor a replik\u00e1nak nem siker\u00fclt utol\u00e9rnie az esem\u00e9nyeket. A WAL-G-ban nem tal\u00e1ltam a dokumentumban ennek a funkci\u00f3nak a le\u00edr\u00e1s\u00e1t.<\/em><\/p>\n<p><\/p>\n<p>A Catchup sz\u00f3 szerint 2020 janu\u00e1r 20-a k\u00f6rny\u00e9k\u00e9n jelent meg. A dokument\u00e1ci\u00f3t tal\u00e1n \u00e9rdemes lenne jobban kidolgozni. Magunk \u00edrjuk, \u00e9s nem igaz\u00e1n \u00edrtuk meg olyan szuper j\u00f3l. \u00c9s tal\u00e1n a di\u00e1kokt\u00f3l is meg kellene k\u00f6vetelni, hogy \u0151ket \u00edrj\u00e1k.<\/p>\n<p><\/p>\n<p><em>M\u00e1r a kiad\u00e1sban van?<\/em><\/p>\n<p><\/p>\n<p>A pull request m\u00e1r \u00f6ssze lett f\u0171zve, teh\u00e1t ellen\u0151riztem. Kipr\u00f3b\u00e1ltam ezt egy teszt klaszteren. Eddig nem volt olyan helyzet, amikor ezt \u00e9les p\u00e9ld\u00e1n tudtuk volna ellen\u0151rizni.<\/p>\n<p><\/p>\n<p><em>Mikor lehet sz\u00e1m\u00edtani r\u00e1?<\/em><\/p>\n<p><\/p>\n<p>Nem tudom. V\u00e1rj egy h\u00f3napot, biztosan ellen\u0151rizz\u00fck.<\/p>\n<p>Forr\u00e1s: <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\/hu\/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=\"hu_HU\" \/>\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\/hu\/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: \u00faj lehet\u0151s\u00e9gek \u00e9s k\u00f6z\u00f6ss\u00e9gi b\u0151v\u00fcl\u00e9s. Georgij Rylov | ProHoster","description":"Javaslom, hogy ismerkedjen meg Georgij Rylov 2020 eleji el\u0151ad\u00e1s\u00e1nak \u00e1t\u00edr\u00e1s\u00e1val, ami a WAL-G: \u00faj lehet\u0151s\u00e9gek \u00e9s a k\u00f6z\u00f6ss\u00e9g b\u0151v\u00edt\u00e9se c\u00edmet viseli. Az open-source fenntart\u00f3inak sz\u00e1mos probl\u00e9m\u00e1val kell szemben\u00e9zni\u00fck.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/78887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}