{"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\/de\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","title":{"rendered":"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>\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;<\/strong><\/p>\n<p><\/p>\n<p>\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 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043a\u0443\u0440\u0441 \u043f\u043e Open-source \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0435, \u0447\u0435\u0433\u043e \u043c\u044b \u0434\u043e\u0431\u0438\u043b\u0438\u0441\u044c \u0438 \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. 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>Hallo zusammen! Ich bin Entwickler bei Yandex aus Jekaterinburg. Heute erz\u00e4hle ich Ihnen von WAL-G.<\/p>\n<p><\/p>\n<p>Im Titel des Vortrags wurde nicht erw\u00e4hnt, dass es etwas mit Backups zu tun hat. Wei\u00df jemand nicht, was WAL-G ist? Oder wissen es alle? Bitte heben Sie die Hand, wenn Sie es nicht wissen. Unglaublich, Sie sind zu einem Vortrag gekommen und wissen nicht, worum es geht.<\/p>\n<p><\/p>\n<p>Lassen Sie mich erkl\u00e4ren, was heute auf dem Programm steht. Unsere Gruppe besch\u00e4ftigt sich seit geraumer Zeit mit Backups. Dies ist ein weiterer Vortrag in einer Reihe, in der wir dar\u00fcber berichten, wie wir Daten sicher, zuverl\u00e4ssig, bequem und effizient speichern.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/4307e7b2acc60cd908d91e3f1b83a9b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In den vorherigen Ausgaben gab es viele Pr\u00e4sentationen von Andrej Borodin und Wladimir Leskow. Wir waren viele, und wir haben schon seit Jahren \u00fcber WAL-G gesprochen. <\/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>Dieser Vortrag wird sich ein wenig von den anderen unterscheiden, da wir hier mehr \u00fcber die technischen Aspekte sprechen werden, w\u00e4hrend ich \u00fcber die Herausforderungen berichten m\u00f6chte, die wir im Zusammenhang mit dem Wachstum der Community erlebt haben. Und wie wir eine kleine Idee entwickelt haben, die uns dabei hilft, damit umzugehen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/ec728f7d99ea9b6a5df4785d7e8a2a75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vor einigen Jahren war WAL-G ein relativ kleines Projekt, das wir von Citus Data \u00fcbernommen haben. Damals hatten wir es nur \u00fcbernommen, und es wurde von einer Person entwickelt.<\/p>\n<p><\/p>\n<p>Und WAL-G hatte damals einfach nicht:<\/p>\n<p><\/p>\n<ul>\n<li>Backups von Replikaten.<\/li>\n<li>Es gab keine inkrementellen Backups.<\/li>\n<li>Es gab keine WAL-Delta-Backups. <\/li>\n<li>Und noch vieles mehr fehlte.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>In diesen wenigen Jahren ist WAL-G stark gewachsen.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/16700dfcc2c54539c5a064894cd1ec88.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bis zum Jahr 2020 waren all die oben genannten Funktionen bereits vorhanden. Zudem haben wir jetzt:<\/p>\n<p><\/p>\n<ul>\n<li>\u00dcber 1.000 Sterne auf GitHub.<\/li>\n<li>150 Forks.<\/li>\n<li>Rund 15 offene PRs.<\/li>\n<li>Und viele Mitwirkende. <\/li>\n<li>Es gibt konstant viele offene Issues. Und das, obwohl wir dort buchst\u00e4blich jeden Tag vorbeischauen und daran arbeiten. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/5e5dea14b328a7f0437017ca834d1eaf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir sind zu dem Schluss gekommen, dass dieses Projekt mehr unserer Aufmerksamkeit bedarf, selbst wenn wir nicht aktiv etwas f\u00fcr unseren Managed Databases-Service bei Yandex umsetzen m\u00fcssen.<\/p>\n<p><\/p>\n<p>Irgendwann im Herbst 2018 kam uns die Idee. Normalerweise hat das Team verschiedene M\u00f6glichkeiten, um Features zu entwickeln oder Bugs zu beheben, wenn nicht gen\u00fcgend Kapazit\u00e4ten vorhanden sind. Man k\u00f6nnte einen weiteren Entwickler einstellen und ihm Gehalt zahlen. Alternativ kann man einen Praktikanten f\u00fcr eine gewisse Zeit anheuern und ebenfalls eine Verg\u00fctung anbieten. Es gibt jedoch auch eine betr\u00e4chtliche Anzahl von Personen, die bereits in der Lage sind, Code zu schreiben. Nur wei\u00df man manchmal nicht, welche Qualit\u00e4t dieser Code hat.<\/p>\n<p><\/p>\n<p>Wir haben dar\u00fcber nachgedacht und beschlossen, Studenten einzubeziehen. Allerdings werden die Studenten nicht an allem teilnehmen. Sie werden nur einen Teil der Arbeit \u00fcbernehmen. Beispielsweise werden sie Tests schreiben, Bugs beheben und Funktionen implementieren, die die Hauptfunktionalit\u00e4t nicht betreffen. Die Hauptfunktionalit\u00e4t besteht im Erstellen von Backups und der Wiederherstellung dieser. Wenn ein Fehler beim Erstellen eines Backups auftritt, kann es zu Datenverlust kommen. Das m\u00f6chte nat\u00fcrlich niemand. Alle w\u00fcnschen sich, dass alles sehr zuverl\u00e4ssig ist. Daher m\u00f6chten wir Code, dem wir weniger vertrauen als unserem eigenen, nicht verwenden. Das hei\u00dft, jeder nicht-kritische Code ist etwas, das wir von unseren zus\u00e4tzlichen Arbeitskr\u00e4ften w\u00fcnschen w\u00fcrden.<\/p>\n<p><\/p>\n<p><strong>Unter welchen Bedingungen wird der PR eines Studenten angenommen?<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Sie sind verpflichtet, ihren Code mit Tests abzudecken. Alles muss im CI-Prozess getestet werden. <\/li>\n<li>Au\u00dferdem gibt es zwei \u00dcberpr\u00fcfungen: eine von Andrej Borodin und eine von mir. <\/li>\n<li>Zus\u00e4tzlich lade ich das Build mit diesem Commit separat hoch, um sicherzustellen, dass nichts in unserem Dienst kaputtgeht. Wir \u00fcberpr\u00fcfen in den End-to-End-Tests, dass alles funktioniert.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Spezialkurs zu Open Source<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/58832406f3acdf294cd68e6adde14ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ein bisschen dar\u00fcber, warum das n\u00f6tig ist und warum ich das f\u00fcr eine gro\u00dfartige Idee halte. <\/p>\n<p><\/p>\n<p><strong>Der Vorteil f\u00fcr uns ist offensichtlich:<\/strong> <\/p>\n<p><\/p>\n<ul>\n<li>Wir bekommen zus\u00e4tzliche Unterst\u00fctzung. <\/li>\n<li>Und wir suchen nach Kandidaten aus einer Gruppe f\u00e4higer Studenten, die guten Code schreiben. <\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Was bringt das den Studenten?<\/strong><\/p>\n<p><\/p>\n<p>Die Vorteile sind vielleicht weniger offensichtlich, denn die Studenten bekommen zumindest kein Geld f\u00fcr den Code, den sie schreiben, sondern nur Noten f\u00fcr ihre Pr\u00fcfungen. <\/p>\n<p><\/p>\n<p>Ich habe sie danach gefragt. Und laut ihrer Aussage:<\/p>\n<p><\/p>\n<ul>\n<li>Erfahrung als Open-Source-Beitragsleister.<\/li>\n<li>Eine Zeile im Lebenslauf.<\/li>\n<li>Sich beweisen und ein Vorstellungsgespr\u00e4ch bei Yandex bestehen.<\/li>\n<li>Teilnehmer von GSoC werden.<\/li>\n<li>+1 Spezialisierungskurs f\u00fcr diejenigen, die Code schreiben m\u00f6chten.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ich werde nicht erl\u00e4utern, wie der Kurs organisiert war. Ich sage nur, dass WAL-G das Hauptprojekt war. Au\u00dferdem haben wir weitere Projekte wie Odyssey, PostgreSQL und ClickHouse in den Kurs integriert.<\/p>\n<p><\/p>\n<p>Und wir haben nicht nur w\u00e4hrend dieses Kurses Aufgaben gestellt, sondern auch Diplome und Projekte vergeben.<\/p>\n<p><\/p>\n<p><strong>Was bringt das den Nutzern?<\/strong><\/p>\n<p><\/p>\n<p>Jetzt kommen wir zu dem Teil, der vor allem f\u00fcr Sie von Interesse ist. Was haben Sie davon? Der Vorteil ist, dass die Studenten viele Bugs behoben haben und Feature-Requests umgesetzt haben, um die Sie uns gebeten haben. <\/p>\n<p><\/p>\n<p>Lassen Sie mich \u00fcber Dinge sprechen, die Sie schon lange wollten und die jetzt umgesetzt wurden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/bb836742bf4f99e1b91c891ed1802bf0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Unterst\u00fctzung von Tablespaces. Die Tablespaces in WAL-G wurden wahrscheinlich seit der Ver\u00f6ffentlichung von WAL-G erwartet, da WAL-G der Nachfolger eines anderen Backup-Werkzeugs, WAL-E, ist, bei dem Datenbank-Backups mit Tablespaces unterst\u00fctzt wurden.<\/p>\n<p><\/p>\n<p>Lassen Sie mich kurz erinnern, was das ist und wof\u00fcr es ben\u00f6tigt wird. In der Regel nehmen alle Ihre Postgres-Daten ein Verzeichnis im Dateisystem ein, das als Basisverzeichnis bezeichnet wird. Dieses Verzeichnis enth\u00e4lt bereits alle erforderlichen Dateien und Unterverzeichnisse f\u00fcr Postgres.<\/p>\n<p><\/p>\n<p>Tablespaces sind Verzeichnisse, in denen Postgres-Daten gespeichert werden, aber sie liegen nicht au\u00dferhalb des Basisverzeichnisses. Auf der Folie ist zu sehen, dass sich die Tablespaces au\u00dferhalb des Basisverzeichnisses befinden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/0f25591cfcaaeaec02903c9b98d8ac65.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wie sieht das f\u00fcr Postgres selbst aus? Im Basisverzeichnis gibt es ein separates Unterverzeichnis pg_tblspc. In diesem Verzeichnis befinden sich Symlinks auf die Verzeichnisse, in denen die Postgres-Daten tats\u00e4chlich au\u00dferhalb des Basisverzeichnisses liegen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/9e9875696c03e6e42bb98b5a7a9acd75.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn Sie all dies nutzen, k\u00f6nnten diese Befehle f\u00fcr Sie so aussehen. Das hei\u00dft, Sie erstellen eine Tabelle in einem bestimmten Tablespace und sehen nach, wo sie jetzt liegt. Diese zwei letzten Zeilen, die zwei letzten ausgef\u00fchrten Befehle, zeigen einen bestimmten Pfad an. Aber in Wirklichkeit ist das kein echter Pfad. Es handelt sich um einen Pfad mit einem Pr\u00e4fix von dem Basisverzeichnis zu dem Tablespace. Von dort aus wird er \u00fcber einen Symlink auf Ihre tats\u00e4chlichen Daten verwiesen.<\/p>\n<p><\/p>\n<p>In unserem Team nutzen wir das alles nicht, aber viele andere WAL-E-Benutzer hatten damit Erfahrungen gemacht und uns mitgeteilt, dass sie auf WAL-G umsteigen m\u00f6chten, aber dadurch behindert wurden. Jetzt wird es unterst\u00fctzt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/95ec319ccefa7e6c8bce193317407229.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Eine andere Funktion, die uns unser Spezialkurs gebracht hat, ist das Catchup. Catchup ist Leuten bekannt, die wahrscheinlich eher mit Oracle als mit Postgres gearbeitet haben.<\/p>\n<p><\/p>\n<p>Kurz gesagt, was es ist. So k\u00f6nnte die Topologie eines Clusters in unserem Service aussehen. Wir haben einen Master. Es gibt eine Replikat, die die Write-Ahead-Logs von ihm streamt. Und die Replikat sagt dem Master, auf welchem LSN sie sich gerade befindet. Gleichzeitig wird das Protokoll archiviert. Neben der Archivierung des Protokolls werden auch Backups in die Cloud gesendet. Au\u00dferdem werden Delta-Backups gesendet.<\/p>\n<p><\/p>\n<p>Was k\u00f6nnte das Problem sein? Wenn Sie eine recht gro\u00dfe Datenbank haben, kann es vorkommen, dass Ihre Replikat stark hinter dem Master zur\u00fcckbleibt. Und sie bleibt so weit zur\u00fcck, dass sie ihn niemals einholen kann. Dieses Problem muss normalerweise irgendwie gel\u00f6st werden. <\/p>\n<p><\/p>\n<p>Der einfachste Weg ist, die Replikat zu entfernen und sie neu zu konfigurieren, weil sie ihn ohnehin nie einholen wird, und das Problem gel\u00f6st werden muss. Aber das kann ziemlich lange dauern, da die Wiederherstellung eines vollst\u00e4ndigen Backups von 10 TB sehr, sehr langwierig ist. Und wir m\u00f6chten dies so schnell wie m\u00f6glich tun, wenn solche Probleme auftreten. Genau daf\u00fcr ist Catchup vorgesehen.<\/p>\n<p><\/p>\n<p>Catchup erm\u00f6glicht die Verwendung von Delta-Backups, die auf diese Weise in der Cloud gespeichert werden. Sie geben an, auf welchem LSN sich die zur\u00fcckgebliebene Replik derzeit befindet und geben diesen in den Catchup-Befehl ein, um ein Delta-Backup zwischen diesem LSN und dem LSN zu erstellen, auf dem sich Ihr Cluster derzeit befindet. Danach stellen Sie dieses Backup auf der zur\u00fcckgebliebenen Replik wieder her.<\/p>\n<p><\/p>\n<p><strong>Andere Datenbanken<\/strong><\/p>\n<p><\/p>\n<p>Au\u00dferdem haben uns die Studenten gleich viele Funktionen gebracht. Da wir bei Yandex nicht nur Postgres entwickeln, sondern auch MySQL, MongoDB, Redis und ClickHouse haben, ben\u00f6tigten wir einen gewissen Zeitpunkt, an dem wir Point-in-Time-Backup-Wiederherstellungen f\u00fcr MySQL machen und diese in die Cloud hochladen k\u00f6nnen.<\/p>\n<p><\/p>\n<p>Wir wollten dies auf eine Weise tun, die der von WAL-G \u00e4hnlich ist. Deshalb entschieden wir uns, zu experimentieren und zu sehen, wie das alles aussehen w\u00fcrde.<\/p>\n<p><\/p>\n<p>Zun\u00e4chst haben wir keinen Unterschied in dieser Logik gemacht und den Code in einem Fork geschrieben. Wir haben gesehen, dass wir ein funktionierendes Modell haben und dass es erfolgreich sein k\u00f6nnte. Dann haben wir uns \u00fcberlegt, dass unsere Hauptgemeinschaft die Postgres-Entwickler sind, die WAL-G verwenden. Daher mussten wir diese Teile irgendwie trennen. Das bedeutet, wenn wir den Code f\u00fcr Postgres \u00e4ndern, brechen wir nicht MySQL, und wenn wir MySQL \u00e4ndern, brechen wir nicht Postgres.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/deef7615eaeb0b8bd790fb253cc42312.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die erste Idee zur Trennung bestand darin, denselben Ansatz zu verwenden, der auch in PostgreSQL-Extensions genutzt wird. Um ein Backup von MySQL zu erstellen, mussten Sie eine bestimmte dynamische Bibliothek installieren. <\/p>\n<p><\/p>\n<p>Hier wird sofort die Asymmetrie dieses Ansatzes deutlich. Wenn Sie Postgres sichern, installieren Sie einfach ein normales Backup-Tool daf\u00fcr, und alles l\u00e4uft reibungslos. Bei MySQL hingegen m\u00fcssen Sie ein Backup-Tool f\u00fcr Postgres installieren und zus\u00e4tzlich eine dynamische Bibliothek f\u00fcr MySQL. Das klingt irgendwie merkw\u00fcrdig. Auch wir dachten so und kamen zu dem Schluss, dass dies nicht die ben\u00f6tigte L\u00f6sung ist. <\/p>\n<p><\/p>\n<p><strong>Separate Builds f\u00fcr Postgres, MySQL, MongoDB, Redis<\/strong><\/p>\n<p><\/p>\n<p>Dies erm\u00f6glichte uns, wie wir glauben, zur richtigen L\u00f6sung zu gelangen \u2013 verschiedene Builds f\u00fcr verschiedene Datenbanken bereitzustellen. Dadurch konnten wir die Logik, die mit den Backups der verschiedenen Datenbanken verbunden ist, isolieren, die auf eine gemeinsame API zugreifen, die von WAL-G bereitgestellt wird.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6c810d5f065de06fc200bdd028707318.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das ist der Teil, den wir selbst geschrieben haben, bevor wir den Studenten Aufgaben gestellt haben. Das ist genau der Teil, wo sie etwas falsch machen k\u00f6nnten, daher haben wir beschlossen, es selbst zu erledigen, damit alles reibungslos verl\u00e4uft. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/3a864a85bfb820ef64cbacc029a9198c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Anschlie\u00dfend haben wir Aufgaben verteilt. Diese wurden sofort \u00fcbernommen. Die Studierenden sollten drei Datenbanken unterst\u00fctzen. <\/p>\n<p><\/p>\n<p>Dabei handelt es sich um MySQL, das wir bereits seit \u00fcber einem Jahr mit WAL-G auf diese Weise sichern. <\/p>\n<p><\/p>\n<p>Jetzt ist auch MongoDB auf dem Weg zur Produktion, wo es noch die letzten Feinarbeiten erh\u00e4lt. Im Grunde genommen haben wir das Grundger\u00fcst daf\u00fcr geschrieben. Danach haben die Studierenden einige funktionierende Dinge erstellt, die wir in einen Zustand bringen, den wir in unserer Produktion akzeptieren k\u00f6nnen.<\/p>\n<p><\/p>\n<p>Diese Aufgaben forderten die Studierenden nicht dazu auf, vollst\u00e4ndige Backup-Tools f\u00fcr jede dieser Datenbanken zu schreiben. Wir hatten nicht dieses Problem. Unser Anliegen war es, eine Point-in-Time-Wiederherstellung zu erm\u00f6glichen und in die Cloud zu sichern. Wir haben die Studierenden gebeten, einen Code zu erstellen, der dies erm\u00f6glicht. Die Studierenden haben bestehende Backup-Tools verwendet, die irgendwie Backups erstellen, und haben dann alles mit WAL-G kombiniert, was die Daten in die Cloud transferierte. Zudem haben sie die Point-in-Time-Wiederherstellung hinzugef\u00fcgt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7494aef259c7599e8bf0b70d77e1bb09.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was haben die Studierenden noch beigetragen? Sie haben WAL-G Unterst\u00fctzung f\u00fcr Libsodium-Verschl\u00fcsselung eingebracht.<\/p>\n<p><\/p>\n<p>Wir haben jetzt Richtlinien zur Speicherung von Backups. Backups k\u00f6nnen nun als dauerhaft markiert werden. So gestaltet sich der Prozess der Speicherung f\u00fcr Ihren Service noch komfortabler und automatisierter. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/6e932ab13dbc3119f7f1da1122443b10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was ist das Ergebnis dieses Experiments?<\/p>\n<p><\/p>\n<p>Urspr\u00fcnglich hatten sich mehr als 100 Personen f\u00fcr den Kurs angemeldet. Ich habe zu Beginn nicht erw\u00e4hnt, dass die Universit\u00e4t in Jekaterinburg \u2013 die Uraler F\u00f6derale Universit\u00e4t \u2013 ist. Dort haben wir alles angek\u00fcndigt. 100 Personen haben sich angemeldet. Tats\u00e4chlich haben viel weniger als 30 aktiv etwas unternommen. <\/p>\n<p><\/p>\n<p>Noch weniger Teilnehmer haben den Kurs abgeschlossen, da sie Tests zu den vorhandenen Codes schreiben und einige Bugs beheben oder Features entwickeln mussten. Dennoch haben einige Studenten den Kurs erfolgreich abgeschlossen.<\/p>\n<p><\/p>\n<p>Bis jetzt haben die Studenten in diesem Kurs etwa 14 Issues behoben und 10 Features unterschiedlicher Gr\u00f6\u00dfe erstellt. Meiner Meinung nach ist das eine vollwertige Ersatzl\u00f6sung f\u00fcr ein oder zwei Entwickler. <\/p>\n<p><\/p>\n<p>Neben all dem haben wir Diplome und Projektarbeiten vergeben. 12 haben Diplome erhalten. 6 von ihnen haben bereits mit \"5\" bestanden. Die anderen hatten noch keine Verteidigung, aber ich bin zuversichtlich, dass es auch bei ihnen gut laufen wird. <\/p>\n<p><\/p>\n<p>Zukunftspl\u00e4ne<\/p>\n<p><\/p>\n<p>Was sind unsere Zukunftspl\u00e4ne?<\/p>\n<p><\/p>\n<p>Mindestens die Funktionen, die wir bereits von unseren Benutzern geh\u00f6rt haben, und die wir umsetzen m\u00f6chten, sind folgende:<\/p>\n<p><\/p>\n<ul>\n<li>\u00dcberwachung der Korrektheit der Timeline-Nachverfolgung im Backup-Archiv des HA-Clusters. Das kann mit Hilfe von WAL-G realisiert werden. Ich denke, wir finden Studenten, die daran arbeiten werden. <\/li>\n<li>F\u00fcr den Transfer von Backups und WAL zwischen den Clouds haben wir bereits eine verantwortliche Person. <\/li>\n<li>Wir haben k\u00fcrzlich die Idee ver\u00f6ffentlicht, dass wir WAL-G noch weiter beschleunigen k\u00f6nnen, indem wir inkrementelle Backups ohne \u00dcberschreibung von Seiten entpacken und die Archive optimieren, die wir dorthin senden. <\/li>\n<\/ul>\n<p><\/p>\n<p>Sie k\u00f6nnen diese hier teilen.<\/p>\n<p><\/p>\n<p>Wozu war dieser Bericht da? Darum, dass wir jetzt neben den vier Personen, die dieses Projekt unterst\u00fctzen, zus\u00e4tzliche Kr\u00e4fte zur Verf\u00fcgung haben, von denen es viele gibt. Besonders, wenn man sie privat anschreibt. Wenn Sie Ihre Daten sichern und dies mit WAL-G tun oder auf WAL-G umsteigen m\u00f6chten, k\u00f6nnen wir Ihre W\u00fcnsche ziemlich leicht ber\u00fccksichtigen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/7b0dc1633121ea6493610b08f68a14d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dies ist der QR-Code und der Link. Sie k\u00f6nnen diesen folgen und uns Ihre W\u00fcnsche mitteilen. Zum Beispiel, wenn wir einen bestimmten Bug nicht beheben. Oder wenn Sie sich eine Funktion w\u00fcnschen, die bisher in keiner Backup-L\u00f6sung vorhanden ist, auch nicht in unserer. Bitte teilen Sie uns das unbedingt mit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov\" src=\"\/wp-content\/uploads\/2020\/04\/56f1c4eef8522d2d6628ea98b1278846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fragen<\/p>\n<p><\/p>\n<p><em>Guten Tag! Vielen Dank f\u00fcr den Vortrag! Ich habe eine Frage zu WAL-G, aber nicht zu Postgres. WAL-G sichert MySQL und f\u00fchrt ein Extra-Backup durch. Wenn man aktuelle Installationen auf CentOS betrachtet und Sie f\u00fchren 'yum install MySQL' aus, wird MariaDB installiert. Ab Version 10.3 wird das Extra-Backup nicht mehr unterst\u00fctzt, daf\u00fcr wird das MariaDB-Backup unterst\u00fctzt. Wie sieht es bei Ihnen damit aus?<\/em><\/p>\n<p><\/p>\n<p>Momentan haben wir nicht versucht, MariaDB zu sichern. Wir hatten Anfragen zur Unterst\u00fctzung von FoundationDB, aber insgesamt, wenn eine solche Anfrage vorliegt, k\u00f6nnen wir Leute finden, die das machen. Es ist nicht so langwierig und nicht so schwierig, wie ich denke.<\/p>\n<p><\/p>\n<p><em>Guten Tag! Vielen Dank f\u00fcr den Vortrag! Ich habe eine Frage zu potenziell neuen Funktionen. Sind Sie bereit, WAL-G mit Bandlaufwerken arbeiten zu lassen, um Backups auf B\u00e4ndern durchzuf\u00fchren?<\/em><\/p>\n<p><\/p>\n<p>Meinen Sie ein Backup auf einem Bandlager?<\/p>\n<p><\/p>\n<p><em>Ja.<\/em><\/p>\n<p><\/p>\n<p>Dort ist Andrei Borodin, der hierzu besser antworten kann als ich. <\/p>\n<p><\/p>\n<p>(Andrej) Ja, danke f\u00fcr die Frage! Wir hatten eine Anfrage f\u00fcr die \u00dcbertragung von Backups auf Tape aus einem Cloud-Speicher. Und daf\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/pull\/596\">wird gerade gearbeitet an<\/a><\/noindex> der \u00dcbertragung zwischen Clouds. Denn die \u00dcbertragung zwischen Clouds ist eine Art generalisierte Version der \u00dcbertragung auf Tape. Dar\u00fcber hinaus haben wir eine erweiterbare Architektur im Bereich Storages. \u00dcbrigens wurden viele Storages von Studenten geschrieben. Und wenn Sie einen Storage f\u00fcr Tape schreiben, wird dieser nat\u00fcrlich unterst\u00fctzt. Wir sind bereit, Pull Requests zu pr\u00fcfen. Dabei muss eine Datei geschrieben und gelesen werden. Wenn man diese Dinge in Go umsetzt, ben\u00f6tigt man in der Regel etwa 50 Zeilen Code. Und dann wird Tape in WAL-G unterst\u00fctzt. <\/p>\n<p><\/p>\n<p><em>Danke f\u00fcr die Pr\u00e4sentation! Ein interessanter Entwicklungsprozess. Backup ist ein ernsthafter Teil der Funktionalit\u00e4t, der gut getestet sein sollte. Bei der Implementierung neuer Funktionen f\u00fcr neue Datenbanken, wurden die Tests ebenfalls von Studenten geschrieben oder haben Sie die Tests selbst geschrieben und dann die Umsetzung an Studenten \u00fcbergeben?<\/em><\/p>\n<p><\/p>\n<p>Die Tests wurden ebenfalls von Studenten durchgef\u00fchrt. Doch die Studenten haben haupts\u00e4chlich f\u00fcr Funktionen wie neue Datenbanken getestet. Sie haben Integrationstests geschrieben. Und sie haben Unit-Tests erstellt. Wenn die Integrationstests erfolgreich sind, d. h. im Moment \u2013 es handelt sich um ein Szenario, das Sie manuell ausf\u00fchren oder das beispielsweise durch cron ausgef\u00fchrt wird. Das Szenario ist also gut nachvollziehbar. <\/p>\n<p><\/p>\n<p><em>Die Studenten haben nicht allzu viel Erfahrung. Wie viel Zeit wird f\u00fcr die Reviews ben\u00f6tigt?<\/em><\/p>\n<p><\/p>\n<p>Ja, die Reviews nehmen recht viel Zeit in Anspruch. In der Regel, wenn mehrere Commiter gleichzeitig kommen und sagen, dass sie dies oder jenes gemacht haben, muss man nachdenken und etwa einen halben Tag einplanen, um zu verstehen, was sie dort geschrieben haben. Denn der Code muss sorgf\u00e4ltig gelesen werden. Sie haben schlie\u00dflich kein Vorstellungsgespr\u00e4ch absolviert. Wir kennen sie nicht besonders gut, daher dauert das erheblich l\u00e4nger.<\/p>\n<p><\/p>\n<p><em>Vielen Dank f\u00fcr den Vortrag! Fr\u00fcher hat Andrei Borodin gesagt, dass der archive_command in WAL-G direkt aufgerufen werden sollte. Doch im Falle eines Patron-Clusters ben\u00f6tigen wir zus\u00e4tzliche Logik, um den Knoten zu bestimmen, von dem wir die WALs senden. Wie l\u00f6sen Sie dieses Problem bei sich?<\/em><\/p>\n<p><\/p>\n<p>Wo liegt Ihr Problem? Angenommen, Sie haben eine synchronisierte Replica, von der Sie ein Backup erstellen? Oder was ist los?<\/p>\n<p><\/p>\n<p>(Andrej) Die Sache ist, dass WAL-G tats\u00e4chlich die Verwendung ohne Skripting im Shell-Umfeld vorsieht. Wenn etwas fehlt, lassen Sie uns die Logik hinzuf\u00fcgen, die innerhalb von WAL-G n\u00f6tig ist. Bezogen auf die Quelle der Archivierung gehen wir davon aus, dass die Archivierung vom aktuellen Master im Cluster erfolgen sollte. Eine Archivierung von der Replica ist keine gute Idee. Dort k\u00f6nnen verschiedene Szenarien mit Problemen auftreten. Insbesondere Probleme bei der Archivierung von Timelines und weiteren Informationen. Vielen Dank f\u00fcr die Frage!<\/p>\n<p><\/p>\n<p>(Hinweis: Wir haben uns von der Einbindung von Shell-Skripten verabschiedet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\/issues\/549\">in diesem Issue<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><em>Guten Abend! Vielen Dank f\u00fcr den Vortrag! Ich fand die Feature 'Catchup', von der Sie gesprochen haben, sehr interessant. Ich hatte bereits die Situation, dass eine Replica hinterherhinkte und nicht aufholen konnte. In der Dokumentation von WAL-G habe ich diese Funktion nicht gefunden.<\/em><\/p>\n<p><\/p>\n<p>'Catchup' wurde buchst\u00e4blich Ende Januar 2020 eingef\u00fchrt. Es w\u00e4re m\u00f6glicherweise sinnvoll, die Dokumentation zu verbessern. Wir selbst schreiben sie und tun dies nicht unbedingt super gut. Vielleicht sollten wir von den Studenten verlangen, dass sie ebenfalls dokumentieren.<\/p>\n<p><\/p>\n<p><em>Ist es bereits ver\u00f6ffentlicht?<\/em><\/p>\n<p><\/p>\n<p>Der Pull-Request wurde bereits zusammengef\u00fchrt, d. h. ich habe ihn \u00fcberpr\u00fcft. Ich habe es auf einem Test-Cluster ausprobiert. Bisher hatten wir nicht die Gelegenheit, es an einem Live-Beispiel zu testen.<\/p>\n<p><\/p>\n<p><em>Wann ist mit einer Ver\u00f6ffentlichung zu rechnen?<\/em><\/p>\n<p><\/p>\n<p>Ich wei\u00df es nicht. Bitte warten Sie einen Monat, dann \u00fcberpr\u00fcfen wir es auf jeden Fall.<\/p>\n<p>Quelle: <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 4.9.10 - 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 \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&#039;\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&#039;\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\" \/>\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\/de\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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 \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&#039;\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&#039;\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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: neue M\u00f6glichkeiten und Community-Erweiterung. Georgiy Rylov | ProHoster","description":"Ich m\u00f6chte Sie auf die Zusammenfassung des Vortrags von Georgiy Rylov aus Anfang 2020 \"WAL-G: neue M\u00f6glichkeiten und Community-Erweiterung\" hinweisen. Bei den Maintainer von Open-Source-Projekten treten viele Probleme auf, w\u00e4hrend sie wachsen. Wie schreibt man immer mehr ben\u00f6tigte Funktionen, behebt immer mehr Issues und schafft es, immer mehr Pull Requests anzusehen? Am Beispiel von WAL-G (Backup-Tool f\u00fcr PostgreSQL) werde ich erz\u00e4hlen, wie wir diese Probleme gel\u00f6st haben.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/wal-g-novye-vozmozhnosti-i-rasshirenie-soobshhestva-georgij-rylov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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 \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'\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'\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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/78887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=78887"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/78887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/78888"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=78887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=78887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=78887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}