{"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\/nl\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Ik nodig je uit om kennis te nemen van de transcriptie van het rapport van begin 2020 van Georgy Rylov \"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap\"<\/strong><\/p>\n<p><\/p>\n<p>Open-source onderhouders worden geconfronteerd met vele problemen naarmate ze groeien. Hoe schrijf je steeds meer gevraagde functies, los je steeds meer issues op en houd je het bij met steeds meer pull requests? Aan de hand van WAL-G (back-uptool voor PostgreSQL) zal ik uitleggen hoe we deze problemen hebben aangepakt door een cursus over Open-source ontwikkeling op de universiteit op te zetten, wat we hebben bereikt en waar we naartoe willen bewegen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy 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>Iedereen nogmaals hallo! Ik ben ontwikkelaar bij Yandex uit Jekaterinenburg. En vandaag zal ik over WAL-G vertellen.<\/p>\n<p><\/p>\n<p>In de titel van de presentatie stond niet dat het iets met backups te maken had. Weet iemand niet wat WAL-G is? Of weet iedereen het? Steek je hand op als je het niet weet. Verbazingwekkend, je kwam naar de presentatie en weet niet waar het over gaat.<\/p>\n<p><\/p>\n<p>Laat me vertellen wat er vandaag gaat gebeuren. Het toeval wil dat ons team al geruime tijd met backups bezig is. En dit is weer een presentatie in een serie waar we vertellen hoe we gegevens veilig, betrouwbaar, gebruiksvriendelijk en effici\u00ebnt opslaan.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In eerdere series waren er veel presentaties van Andrey Borodin, Vladimir Leskov. We waren met velen. En we hebben allemaal al jaren over WAL-G verteld. <\/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>Deze presentatie zal iets anders zijn dan de andere, omdat het daar voornamelijk over technische zaken ging, en hier zal ik vertellen hoe we geconfronteerd werden met problemen in verband met de groei van de gemeenschap. En hoe we een klein idee bedachten dat ons helpt hiermee om te gaan. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Een paar jaar geleden was WAL-G een vrij klein project dat we van Citus Data overnamen. En we hebben het net opgepakt. En \u00e9\u00e9n persoon ontwikkelde het.<\/p>\n<p><\/p>\n<p>En in WAL-G ontbrak het aan:<\/p>\n<p><\/p>\n<ul>\n<li>Backups van de replica.<\/li>\n<li>Er waren geen incrementele backups.<\/li>\n<li>Er waren geen WAL-Delta backups. <\/li>\n<li>En nog veel meer ontbrak.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>In de afgelopen jaren is WAL-G sterk gegroeid.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>En tegen 2020 was alles wat hierboven vermeld is al aanwezig. En daarbij hebben we nu:<\/p>\n<p><\/p>\n<ul>\n<li>Meer dan 1.000 sterren op GitHub.<\/li>\n<li>150 forks.<\/li>\n<li>Ongeveer 15 open PR\u2019s.<\/li>\n<li>En nog veel meer bijdragers. <\/li>\n<li>En voortdurend open issues. En dat is nog met het feit dat we daar letterlijk elke dag inloggen en eraan werken. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>En we zijn tot de conclusie gekomen dat dit project meer van onze aandacht vereist, zelfs wanneer we zelf niets voor onze Managed Databases-service bij Yandex hoeven te implementeren.<\/p>\n<p><\/p>\n<p>En ergens in de herfst van 2018 kwam het idee bij ons op. Gewoonlijk heeft het team verschillende manieren om bepaalde functies te ontwikkelen of bugs op te lossen als je niet genoeg handen hebt. Je kunt bijvoorbeeld een extra ontwikkelaar aannemen en hem betalen. Of je kunt een stagiair tijdelijk in dienst nemen en hem ook een salaris betalen. Maar er is ook een behoorlijk groot aantal mensen, waarvan een deel al echt kan coderen. Alleen weet je niet altijd van welke kwaliteit die code is.<\/p>\n<p><\/p>\n<p>We hebben nagedacht en besloten te proberen studenten aan te trekken. Maar studenten zullen niet overal bij betrokken zijn. Ze zullen alleen een deel van het werk doen. Ze zullen bijvoorbeeld tests schrijven, bugs oplossen, functies implementeren die de hoofdfunctionaliteit niet be\u00efnvloeden. De hoofdfunctionaliteit is het maken van back-ups en het herstellen van back-ups. Als je een bug toestaat bij het maken van een back-up, kan dat leiden tot gegevensverlies. En niemand wil dat natuurlijk. Iedereen wil dat alles zeer betrouwbaar is. Daarom willen we natuurlijk geen code die we minder vertrouwen dan onze eigen code daar laten. Dat wil zeggen, elke niet-kritische code is wat we graag van onze extra handen zouden willen ontvangen.<\/p>\n<p><\/p>\n<p><strong>Onder welke voorwaarden wordt de PR van een student geaccepteerd<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Ze moeten hun code dekken met tests. Alles moet door de CI gaan. <\/li>\n<li>En we ondergaan ook 2 reviews. E\u00e9n van Andrei Borodin en \u00e9\u00e9n van mij. <\/li>\n<li>En om extra te controleren of het niets in onze dienst zal breken, upload ik apart de build met deze commit. En we controleren in end-to-end tests of er niets instort.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Speciale cursus over Open Source<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Een beetje over waarom dit nodig is en waarom het, denk ik, een tof idee is. <\/p>\n<p><\/p>\n<p><strong>Voor ons is de winst duidelijk:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>We krijgen extra handen. <\/li>\n<li>En we zoeken kandidaten voor het team onder slimme studenten die goede code schrijven. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Wat is de winst voor studenten?<\/strong><\/p>\n<p><\/p>\n<p>Die kan minder voor de hand liggend zijn, omdat studenten ten minste geen geld ontvangen voor de code die ze schrijven, maar alleen cijfers voor hun studiepunten. <\/p>\n<p><\/p>\n<p>Ik vroeg hen daarover. En naar hun zeggen:<\/p>\n<p><\/p>\n<ul>\n<li>Ervaring als contributor in Open Source.<\/li>\n<li>Een regel in hun CV krijgen.<\/li>\n<li>Zichzelf profileren en solliciteren bij Yandex.<\/li>\n<li>Deelnemen aan GSoC.<\/li>\n<li>+1 specialisatie voor degenen die code willen schrijven.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ik ga niet vertellen hoe de cursus was georganiseerd. Ik zal alleen zeggen dat WAL-G het belangrijkste project was. Daarnaast hebben we in deze cursus projecten zoals Odyssey, PostgreSQL en ClickHouse opgenomen.<\/p>\n<p><\/p>\n<p>En we gaven niet alleen opdrachten tijdens deze cursus, maar we gaven ook diploma's en cursuswerk.<\/p>\n<p><\/p>\n<p><strong>En wat is de winst voor de gebruikers?<\/strong><\/p>\n<p><\/p>\n<p>Laten we overgaan naar het gedeelte dat jullie waarschijnlijk interessert. Wat heb je hieraan? Het voordeel is dat de studenten veel bugs hebben opgelost. En ze hebben feature requests gedaan die jullie ons vroegen. <\/p>\n<p><\/p>\n<p>Laat me je vertellen over de dingen die je al lang wilde en die zijn gerealiseerd.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ondersteuning voor tablespaces. De ondersteuning voor tablespaces in WAL-G werd waarschijnlijk al verwacht sinds de release van WAL-G, want WAL-G is de opvolger van een ander back-up tool, WAL-E, waar database back-ups met tablespaces werden ondersteund.<\/p>\n<p><\/p>\n<p>Ik herinner je kort eraan wat het is en waarom het allemaal nodig is. Gewoonlijk nemen al je Postgres-gegevens \u00e9\u00e9n directory op het bestandssysteem in beslag, die de basisdirectory wordt genoemd. En deze directory bevat al de bestanden en subdirectories die Postgres nodig heeft.<\/p>\n<p><\/p>\n<p>Tablespaces zijn directories waar de Postgres-gegevens zijn opgeslagen, maar ze bevinden zich niet buiten de basisdirectory. Op de slide is te zien dat tablespaces zich buiten de basisdirectory bevinden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hoe ziet dit eruit voor Postgres zelf? In de basisdirectory is er een aparte subdirectory pg_tblspc. En daarin liggen symlinks naar de directories waar de echte Postgres-gegevens zich buiten de basisdirectory bevinden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wanneer je al dit gebruikt, kunnen de commando's er zo uitzien. Dat wil zeggen, je maakt een tabel aan in een aangegeven tablespace en kijkt waar deze nu ligt. Dit zijn de laatste twee regels, de laatste aangeroepen commando's. En daar is te zien dat er een pad is. Maar in werkelijkheid is dit geen echt pad. Dit is een pad met een prefix van de basisdirectory naar de tablespace. En vanaf daar is het gekoppeld via een symlink die naar je echte gegevens leidt.<\/p>\n<p><\/p>\n<p>Wij gebruiken dit allemaal niet in ons team, maar veel andere gebruikers van WAL-E hebben ons geschreven dat ze willen overstappen naar WAL-G, maar dat dit hen belemmerde. Nu wordt dit ondersteund.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Een andere functie die onze specialisatie ons bracht, is catchup. Mensen die meer met Oracle dan met Postgres hebben gewerkt, weten waarschijnlijk van catchup.<\/p>\n<p><\/p>\n<p>In een notendop, wat het is. Zo kan de topologie van een cluster in onze service eruit zien. We hebben een master. Er is een replica die de write-ahead log van de master streamt. En de replica informeert de master op welke LSN ze zich nu bevindt. Tegelijkertijd kan het log worden gearchiveerd. Daarnaast worden er ook back-ups naar de cloud gestuurd. En delta-back-ups worden verzonden.<\/p>\n<p><\/p>\n<p>Wat kan het probleem zijn? Wanneer je een behoorlijk grote database hebt, kan het gebeuren dat de replica flink achtergaat op de master. En ze kan zo ver achterlopen dat ze deze nooit meer kan inhalen. Dit probleem moet in de regel op een bepaalde manier worden opgelost. <\/p>\n<p><\/p>\n<p>De eenvoudigste oplossing is om de replica te verwijderen en opnieuw te laden, omdat deze nooit meer kan inhalen, en de problemen moeten worden opgelost. Maar dit duurt behoorlijk lang, omdat het herstellen van een volledige back-up van een database van 10 TB erg, erg lang duurt. We willen dit zo snel mogelijk doen als zich dergelijke problemen voordoen. En daarvoor is catchup bedoeld.<\/p>\n<p><\/p>\n<p>Catchup maakt gebruik van delta-back-ups die op deze manier in de cloud worden opgeslagen. Je geeft aan op welke LSN de achterblijvende replica zich bevindt en geeft die op in het catchup-commando om een delta-back-up te maken tussen die LSN en de LSN waar je cluster zich nu op bevindt. Vervolgens herstel je deze back-up op de replica die achtergebleven was.<\/p>\n<p><\/p>\n<p><strong>Andere databases<\/strong><\/p>\n<p><\/p>\n<p>Bovendien hebben studenten ons meteen veel functies aangeleverd. Aangezien we bij Yandex niet alleen Postgres ontwikkelen, maar ook MySQL, MongoDB, Redis en ClickHouse, hadden we op een gegeven moment behoefte aan de mogelijkheid om back-ups met point-in-time recovery voor MySQL te maken en deze naar de cloud te uploaden.<\/p>\n<p><\/p>\n<p>We wilden dit op een manier doen die lijkt op hoe WAL-G het doet. We besloten een experiment te doen en te kijken hoe dit eruit zou zien.<\/p>\n<p><\/p>\n<p>En in het begin, zonder deze logica te scheiden, hebben we de code in een fork geschreven. We zagen dat we een werkend model hadden en dat het zou kunnen werken. Daarna dachten we dat onze belangrijkste gemeenschap postgres-gebruikers zijn, zij gebruiken WAL-G. Daarom moeten we deze delen op een of andere manier scheiden. Wanneer de code voor Postgres wordt aangepast, breken we MySQL niet, en wanneer we MySQL aanpassen, breken we Postgres niet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Het oorspronkelijke idee om dit te splitsen was om dezelfde aanpak te gebruiken als die in PostgreSQL-extensies. Fondamentaal gezien, om een MySQL-backup te maken, moest je een dynamische bibliotheek installeren. <\/p>\n<p><\/p>\n<p>Maar hier is de asymmetrie van deze aanpak meteen zichtbaar. Wanneer je een backup van Postgres maakt, installeer je een normale backup-tool voor Postgres en alles werkt prima. Voor MySQL echter installeer je zowel een backup-tool voor Postgres als ook een dynamische bibliotheek voor MySQL. Dat klinkt een beetje vreemd. Wij dachten er ook zo over en besloten dat dit niet de oplossing was die we nodig hadden. <\/p>\n<p><\/p>\n<p><strong>Verschillende builds voor Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Maar dit stelde ons, naar onze mening, in staat om tot de juiste oplossing te komen \u2013 verschillende builds voor verschillende databases te scheiden. Dit maakt het mogelijk om de logica die gerelateerd is aan de backups van verschillende databases te isoleren, die toegang hebben tot een gemeenschappelijke API die door WAL-G wordt ge\u00efmplementeerd.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dit is het deel dat we zelf hebben geschreven \u2013 voordat we de studenten hun taken gaven. Dat wil zeggen, dit is precies het gedeelte waarin ze iets verkeerd konden doen, dus besloten we dat het beter was om iets goed te doen en dat alles goed zou zijn. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Daarna gaven we de taken uit. Deze werden meteen ingevuld. Van de studenten werd verwacht dat ze drie databases zouden ondersteunen. <\/p>\n<p><\/p>\n<p>Dit is MySQL, dat we al meer dan een jaar op deze manier back-uppen met WAL-G. <\/p>\n<p><\/p>\n<p>En nu is MongoDB al bijna productie-klaar, daar wordt het nog steeds verder gepolijst. In wezen hebben wij het kader voor dit alles geschreven. Toen schreven de studenten werkende dingen. En vervolgens brengen we ze tot een staat die we bij ons in productie kunnen accepteren.<\/p>\n<p><\/p>\n<p>Deze taken leken niet zo dat de studenten complete backup-tools voor elke van deze databases moesten schrijven. Dat was geen probleem voor ons. Ons probleem was dat we point-in-time recovery wilden en dat we in de cloud wilden back-uppen. We vroegen de studenten om een code te schrijven die dit zou oplossen. De studenten maakten gebruik van bestaande backup-tools die op een bepaalde manier backups maken, en plakte dat vervolgens samen met WAL-G, dat alles naar de cloud verzond. En ze voegden ook point-in-time recovery toe.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wat hebben de studenten nog meer bijgedragen? Ze hebben ondersteuning voor encryptie met Libsodium aan WAL-G toegevoegd.<\/p>\n<p><\/p>\n<p>Ook hebben we opslagbeleid voor backups gekregen. Nu kunnen backups als permanent worden gemarkeerd. En het is op een meer handige manier voor uw service om het proces van hun opslag te automatiseren. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wat is de uitkomst van dit experiment?<\/p>\n<p><\/p>\n<p>Aan het begin waren er meer dan 100 mensen ingeschreven voor de cursus. Ik zei in het begin niet dat de universiteit in Jekaterinenburg de Ural Federale Universi te it is. Daar hebben we alles aangekondigd. 100 mensen schreven zich in. Echt iets begon veel minder te doen, ongeveer 30 mensen. <\/p>\n<p><\/p>\n<p>Minder mensen hebben de cursus afgerond omdat ze tests moesten schrijven voor de bestaande codes. Ook moesten ze een bug fixen of een functie implementeren. En een deel van de studenten heeft de cursus toch afgerond.<\/p>\n<p><\/p>\n<p>Tot nu toe hebben de studenten ongeveer 14 issues opgelost in deze cursus en 10 functies van verschillende omvang gemaakt. En, naar mijn mening, is dit een volwaardige vervanging voor \u00e9\u00e9n of twee ontwikkelaars. <\/p>\n<p><\/p>\n<p>Bovendien hebben we diploma's en cursuswerkn maken van de studenten verstrekt. En 12 hebben hun diploma's gehaald. 6 van hen hebben al hun verdediging met een '5' voltooid. De overige hebben nog geen verdediging gehad, maar ik denk dat zij ook goed zullen doen. <\/p>\n<p><\/p>\n<p>Toekomstplannen<\/p>\n<p><\/p>\n<p>Wat zijn onze plannen voor de toekomst?<\/p>\n<p><\/p>\n<p>Tenminste de functies-requests die we al van gebruikers hebben gehoord en die we willen realiseren. Dit is:<\/p>\n<p><\/p>\n<ul>\n<li>Het bijhouden van de nauwkeurigheid van de tijdlijn in het archief van de back-ups van het HA-cluster. Dit kan met behulp van WAL-G. En ik denk dat we studenten zullen vinden die dit oppakken. <\/li>\n<li>Voor het overdragen van back-ups en WAL tussen de cloud hebben we al een verantwoordelijke persoon. <\/li>\n<li>En onlangs hebben we het idee gepubliceerd dat we WAL-G nog sneller kunnen maken door incrementele back-ups zonder paginaoverschrijving en het optimaliseren van de archieven die we naar daar sturen. <\/li>\n<\/ul>\n<p><\/p>\n<p>Jullie kunnen ze hier delen.<\/p>\n<p><\/p>\n<p>Wat was dit verslag? Het heeft ons, met vier mensen die dit project ondersteunen, geholpen. We hebben extra handen, die er behoorlijk veel zijn. Vooral als je ze persoonlijk benadert. En als je je gegevens back-upt en dit doet met WAL-G of als je wilt overstappen naar WAL-G, dan kunnen we gemakkelijk rekening houden met jullie wensen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dit is een qr-code en link. Je kunt ze gebruiken om alle wensen die je hebt door te geven. Bijvoorbeeld, we repareren een bepaalde bug niet. Of er is een functie die je echt wilt, maar die toch nog niet in een back-up tool zit, ook niet in de onze. Laat het ons alsjeblieft weten.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vragen<\/p>\n<p><\/p>\n<p><em>Hallo! Bedankt voor de presentatie! Ik heb een vraag over WAL-G, maar niet over Postgres. WAL-G maakt backups van MySQL en roept een extra backup aan. Als je moderne installaties op CentOS neemt en je doet een yum install MySQL, dan wordt MariDB ge\u00efnstalleerd. Vanaf versie 10.3 wordt een extra backup niet meer ondersteund, maar MariDB-backup wel. Hoe gaat het bij jullie hiermee?<\/em><\/p>\n<p><\/p>\n<p>Tot nu toe hebben we nog niet geprobeerd om MariDB te backuppen. We hebben verzoeken gehad voor ondersteuning van FoundationDB, maar over het algemeen, als zo'n verzoek er is, kunnen we mensen vinden die dat kunnen doen. Het is niet zo lang en niet zo moeilijk als ik dacht.<\/p>\n<p><\/p>\n<p><em>Goedemiddag! Bedankt voor de presentatie! Ik heb een vraag over potenti\u00eble nieuwe functies. Zijn jullie bereid om WAL-G met tapes te laten werken, zodat we backups op tapes kunnen maken?<\/em><\/p>\n<p><\/p>\n<p>Bedoelt u backups op tape-opslag?<\/p>\n<p><\/p>\n<p><em>Ja.<\/em><\/p>\n<p><\/p>\n<p>Daar is Andrei Borodin, die beter op deze vraag kan antwoorden dan ik. <\/p>\n<p><\/p>\n<p>(Andrei) Ja, bedankt voor de vraag! We hebben een verzoek gehad om een backup naar tape te verplaatsen vanuit cloudopslag. En daarvoor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">wordt er gewerkt aan<\/a><\/noindex> de overdracht tussen clouds. Want de overdracht tussen clouds is een soort algemene versie van overdracht naar tape. Bovendien hebben we een uitbreidbare architectuur als het gaat om Storages. Trouwens, veel van de Storages zijn door studenten geschreven. Als je een Storage voor tape schrijft, dan zal het natuurlijk worden ondersteund. We staan open voor pull requests. Dan moet je een bestand schrijven, een bestand lezen. Als je die dingen in Go doet, is het meestal zo'n 50 regels code. En dan zal tape worden ondersteund in WAL-G. <\/p>\n<p><\/p>\n<p><em>Bedankt voor de presentatie! Een interessant ontwikkelingsproces. Backup is een serieuze functionaliteit die goed getest moet zijn. Toen jullie functionaliteit voor nieuwe databases implementeerden, schreven studenten ook de tests of hebben jullie de tests zelf geschreven en daarna de implementatie aan studenten gegeven?<\/em><\/p>\n<p><\/p>\n<p>De tests werden ook door studenten geschreven. Maar studenten schreven vooral voor functies zoals nieuwe databases. Ze schreven integratietests. En ze schreven unit-tests. Als de integratietests slagen, dat wil zeggen, op dit moment is dit een scenario dat je handmatig uitvoert of dat Cron het voor je doet, bijvoorbeeld. Dat wil zeggen, het scenario is vrij duidelijk. <\/p>\n<p><\/p>\n<p><em>De studenten hebben niet veel ervaring. Hoeveel tijd gaat er verloren met reviews?<\/em><\/p>\n<p><\/p>\n<p>Ja, reviews kosten behoorlijk veel tijd. Dat wil zeggen, meestal als er meerdere committers binnenkomen en zeggen dat ik dit of dat heb gedaan, moet ik erover nadenken en ergens een halve dag uittrekken om te begrijpen wat ze hebben geschreven. Want de code moet zorgvuldig worden gelezen. Ze hebben immers geen interview gehad. We kennen ze niet zo goed, dus dat kost aanzienlijke tijd.<\/p>\n<p><\/p>\n<p><em>Bedankt voor de presentatie! Eerder vermeldde Andrey Borodin dat archive_command in WAL-G rechtstreeks moet worden aangeroepen. Maar in het geval van een patron cluster hebben we extra logica nodig om de node te bepalen van waaruit we de logs moeten verzenden. Hoe lossen jullie dit probleem op?<\/em><\/p>\n<p><\/p>\n<p>Wat is hier precies uw probleem? Heeft u bijvoorbeeld een synchronieke replica waarvan u een backup maakt? Of wat?<\/p>\n<p><\/p>\n<p>(Andrey) Het probleem is dat WAL-G inderdaad is ontworpen om zonder shellscripts te werken. Als er iets ontbreekt, laten we dan de logica toevoegen die binnen WAL-G moet zitten. Wat betreft waar de archivering vandaan moet komen, denken wij dat de archivering vanuit de huidige master in de cluster moet plaatsvinden. Archivering vanaf een replica is een slecht idee. Daar kunnen verschillende scenario\u2019s met problemen mee optreden. In het bijzonder zijn er problemen met het archiveren van tijdlijnen en andere aanvullende informatie. Bedankt voor de vraag!<\/p>\n<p><\/p>\n<p>(Opmerking: We hebben de afhankelijkheid van shellscripts verwijderd <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">in dit issue<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Goedenavond! Bedankt voor de presentatie! De catchup-functie die u beschreef, heeft mijn interesse gewekt. We zijn geconfronteerd met een situatie waarbij een replica niet kon bijbenen. En ik heb de beschrijving van deze functie niet in de WAL-G-documentatie kunnen vinden.<\/em><\/p>\n<p><\/p>\n<p>Catchup verscheen letterlijk rond 20 januari 2020. Wat de documentatie betreft, zou deze wellicht beter aangepakt moeten worden. We schrijven deze zelf en het is niet geweldig. Misschien moeten we van studenten eisen dat zij het schrijven.<\/p>\n<p><\/p>\n<p><em>Is het al in de release?<\/em><\/p>\n<p><\/p>\n<p>De pull request is al samengevoegd, d.w.z. ik heb deze gecontroleerd. Ik heb dit op een testcluster geprobeerd. Tot nu toe hebben we geen situatie gehad waarin we dit op een productievoorbeeld konden controleren.<\/p>\n<p><\/p>\n<p><em>Wanneer kunnen we het verwachten?<\/em><\/p>\n<p><\/p>\n<p>Ik weet het niet. Wacht een maand, dan zullen we het zeker controleren.<\/p>\n<p>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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: nieuwe mogelijkheden en uitbreiding van de gemeenschap. Georgiy Rylov | ProHoster","description":"Ik stel voor om kennis te nemen van de transcriptie van de presentatie van begin 2020 door Georgiy Rylov \u2018WAL-G: nieuwe mogelijkheden en gemeenschapsuitbreiding\u2019. Maintainers van open-source komen met veel problemen.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/78887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}