{"id":54366,"date":"2019-12-24T00:00:00","date_gmt":"2019-12-23T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster"},"modified":"2020-02-18T14:02:22","modified_gmt":"2020-02-18T11:02:22","slug":"kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","title":{"rendered":"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Hallo, Habr-Nutzer. Heute beginnen die Kurse der ersten Gruppe. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/nwhU\/\">\u201ePostgreSQL\u201c<\/a><\/noindex>. In diesem Zusammenhang m\u00f6chten wir Ihnen von unserem offenen Webinar zu diesem Kurs berichten.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e66e0d4919d45284dbdc4696d6cab555.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=yiXP8ihL2eA\">einer weiteren offenen Lektion<\/a><\/noindex> haben wir dar\u00fcber gesprochen, mit welchen Herausforderungen SQL-Datenbanken in der \u00c4ra von Cloud und Kubernetes konfrontiert sind. Gleichzeitig haben wir uns angesehen, wie sich SQL-Datenbanken unter dem Einfluss dieser Herausforderungen anpassen und ver\u00e4ndern.<\/p>\n<p>Das Webinar wurde gehalten von <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/IVe0\/\">Walerij Besrukow<\/a><\/noindex>, Google Cloud Practice Delivery Manager bei EPAM Systems.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Als die B\u00e4ume noch klein waren\u2026<\/h3>\n<p>\nLassen Sie uns zun\u00e4chst daran erinnern, wie die Auswahl von Datenbankmanagementsystemen (DBMS) Ende des letzten Jahrhunderts begann. Das sollte nicht schwerfallen, denn die Auswahl der DBMS damals begann und endete <b>Oracle<\/b>. <\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/5fdf02523892e7477fd47dd01eb21d04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn den sp\u00e4ten 90er und fr\u00fchen 2000er Jahren gab es im Grunde genommen nicht viel Auswahl, wenn es um industrielle, skalierbare Datenbanken ging. Ja, es gab IBM DB2, Sybase und ein paar andere Datenbanken, die auftauchten und verschwanden, aber insgesamt waren sie im Vergleich zu Oracle nicht so auff\u00e4llig. Entsprechend waren die F\u00e4higkeiten der Ingenieure dieser Zeit irgendwie an die einzige Option gebunden, die es gab.<\/p>\n<p>Ein Oracle DBA musste folgende F\u00e4higkeiten besitzen:<\/p>\n<ul>\n<li> Oracle Server aus dem Distributionspaket installieren;<\/li>\n<li> Oracle Server konfigurieren:<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>init.ora;<\/li>\n<li>listener.ora;<\/li>\n<\/ul>\n<p>\n\u2014 erstellen:<\/p>\n<ul>\n<li>Tabellenr\u00e4ume;<\/li>\n<li>Schemas;<\/li>\n<li>Benutzer;<\/li>\n<\/ul>\n<p>\u2014 Backup und Wiederherstellung durchf\u00fchren;<br \/>\n\u2014 Monitoring durchf\u00fchren;<br \/>\n\u2014 mit suboptimalen Abfragen umgehen.<\/p>\n<p>Dabei wurde von einem Oracle DBA nicht unbedingt verlangt:<\/p>\n<ul>\n<li>die optimale Datenbank oder eine andere Technologie zur Speicherung und Verarbeitung von Daten auszuw\u00e4hlen;<\/li>\n<li>hohe Verf\u00fcgbarkeit und horizontale Skalierbarkeit zu gew\u00e4hrleisten (das war nicht immer eine Frage f\u00fcr den DBA);<\/li>\n<li>die Fachdom\u00e4ne, Infrastruktur, Anwendungsarchitektur und das Betriebssystem gut zu kennen;<\/li>\n<li>Daten zu importieren und zu exportieren sowie Migrationen zwischen verschiedenen Datenbanken durchzuf\u00fchren.<\/li>\n<\/ul>\n<p>Im Gro\u00dfen und Ganzen, wenn man von der Auswahl in jenen Zeiten spricht, \u00e4hnelt sie der Auswahl in einem sowjetischen Gesch\u00e4ft Ende der 80er Jahre:<\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/70b37faf295170d8507d5c605f4b2047.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Unsere Zeit<\/h3>\n<p>\nSeitdem sind die B\u00e4ume nat\u00fcrlich gewachsen, die Welt hat sich ver\u00e4ndert, und es sieht irgendwie so aus:<\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e8698d658bd09e0071f02a672a5cb81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Markt der Datenbanken hat sich ebenfalls ver\u00e4ndert, was in den aktuellen Berichten von Gartner gut zu erkennen ist:<\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/745f3969a3ad2e65162ef41cda6c0658.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier ist zudem zu erw\u00e4hnen, dass Clouds ihren Platz eingenommen haben, deren Beliebtheit w\u00e4chst. Wenn man denselben Gartner-Bericht liest, sieht man die folgenden Schlussfolgerungen:<\/p>\n<ol>\n<li>Viele Kunden befinden sich auf dem Weg, ihre Anwendungen in die Cloud zu migrieren. <\/li>\n<li>Neue Technologien erscheinen zuerst in der Cloud, und es ist ungewiss, ob sie jemals in eine nicht-cloudbasierte Infrastruktur \u00fcberf\u00fchrt werden.<\/li>\n<li>Das Preismodell nach dem Prinzip 'pay-as-you-go' ist zur Norm geworden. Alle wollen nur f\u00fcr das bezahlen, was sie tats\u00e4chlich nutzen, und das ist nicht mehr nur ein Trend, sondern eine grundlegende Tatsache. <\/li>\n<\/ol>\n<p><\/p>\n<h3>Was passiert jetzt?<\/h3>\n<p>\nHeute sind wir alle in der Cloud. Die Fragen, die wir haben, betreffen die Auswahl. Und die M\u00f6glichkeiten sind riesig, selbst wenn wir nur \u00fcber die Auswahl von DB-Technologien im On-Premises-Format sprechen. Zudem gibt es Managed Services und SaaS. So wird die Entscheidungsfindung mit jedem Jahr komplexer.<\/p>\n<p>Neben den Auswahlfragen gibt es auch <b>einschr\u00e4nkende Faktoren<\/b>:<\/p>\n<ul>\n<li><b>Preis<\/b>. Viele Technologien kosten nach wie vor Geld;<\/li>\n<li><b>F\u00e4higkeiten<\/b>. Wenn wir \u00fcber Open Source sprechen, stellt sich die Frage nach den F\u00e4higkeiten, da kostenlose Software von den Personen, die sie einrichten und betreiben, ein gewisses Ma\u00df an Kompetenz verlangt;<\/li>\n<li><b>Funktionalit\u00e4t<\/b>. Nicht alle Dienstleistungen, die in der Cloud verf\u00fcgbar sind und beispielsweise auf der gleichen Basis wie Postgres basieren, weisen die gleichen Funktionen auf wie Postgres vor Ort. Dies ist ein wesentlicher Faktor, den man kennen und verstehen sollte. Dar\u00fcber hinaus gewinnt dieser Faktor an Bedeutung gegen\u00fcber dem Wissen \u00fcber bestimmte versteckte Funktionen einer einzelnen Datenbank. <\/li>\n<\/ul>\n<p>\n<b>Was man jetzt von DA\/DE erwartet:<\/b><\/p>\n<ul>\n<li>ein gutes Verst\u00e4ndnis des Fachgebiets und der Anwendungsarchitektur;<\/li>\n<li>die F\u00e4higkeit, die geeignete Datenbanktechnologie unter Ber\u00fccksichtigung der gestellten Aufgabe korrekt auszuw\u00e4hlen;<\/li>\n<li>die F\u00e4higkeit, die optimale Methode zur Umsetzung der gew\u00e4hlten Technologie im Kontext vorhandener Einschr\u00e4nkungen auszuw\u00e4hlen;<\/li>\n<li>die F\u00e4higkeit, Daten\u00fcbertragungen und Migrationen durchzuf\u00fchren;<\/li>\n<li>die F\u00e4higkeit, die gew\u00e4hlten L\u00f6sungen zu implementieren und zu betreiben.<\/li>\n<\/ul>\n<p>\nDas folgende Beispiel <b>auf Basis von GCP<\/b> zeigt, wie die Wahl der jeweiligen Technologie zur Datenverarbeitung von deren Struktur abh\u00e4ngt:<\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/fe324d8af9ed8f6afb58ed930dc21327.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBitte beachten Sie, dass PostgreSQL im Schema nicht vorhanden ist, da es unter dem Begriff <b>Cloud SQL<\/b>verborgen ist. Und wenn wir in Cloud SQL gelangen, m\u00fcssen wir erneut eine Wahl treffen:<\/p>\n<p><img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/bdf523e0b10fbfe753318a02a686a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs sollte beachtet werden, dass diese Wahl nicht immer offensichtlich ist, sodass die App-Entwickler oft auf ihr Bauchgef\u00fchl h\u00f6ren. <\/p>\n<p><b>Insgesamt:<\/b><\/p>\n<ol>\n<li>Je weiter man geht, desto relevanter wird die Wahlfrage. Sogar wenn man nur die GCP betrachtet, erscheinen verwaltete Dienste und SaaS im vierten Schritt zum ersten Mal, und dort ist Spanner gleich dabei. Zudem wird die Wahl von PostgreSQL erst im f\u00fcnften Schritt erw\u00e4hnt, wo auch MySQL und SQL Server stehen, das hei\u00dft <b>es gibt viel Auswahl, aber die Entscheidung muss getroffen werden.<\/b>. <\/li>\n<li>Man darf die Einschr\u00e4nkungen nicht vergessen, die den Versuchungen gegen\u00fcberstehen. Im Grunde wollen alle Spanner, aber er ist teuer. Letztlich sieht eine typische Anfrage etwa so aus: <i>\u201eBitte realisieren Sie uns Spanner, aber zum Preis von Cloud SQL, Sie sind doch Profis!\u201c<\/i><\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/cc656b46d37d08fc6aeca937e1e9085b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Und was soll man tun?<\/h3>\n<p>\nOhne den Anspruch auf endg\u00fcltige Wahrheit zu erheben, sagen wir folgendes:<\/p>\n<p><b>Es ist an der Zeit, den Ansatz f\u00fcr das Training zu \u00e4ndern:<\/b><\/p>\n<ul>\n<li>Es macht keinen Sinn, die DBA fr\u00fcher so zu schulen, wie man es gewohnt war;<\/li>\n<li>die Kenntnis eines einzelnen Produkts ist jetzt nicht mehr ausreichend;<\/li>\n<li>und es ist unm\u00f6glich, Dutzende auf dem Niveau eines einzigen zu beherrschen.<\/li>\n<\/ul>\n<p>\nMan muss nicht nur das Produkt kennen, sondern auch:<\/p>\n<ul>\n<li>die Anwendungsf\u00e4lle;<\/li>\n<li>die verschiedenen Bereitstellungsmethoden;<\/li>\n<li>die Vor- und Nachteile jeder Methode;<\/li>\n<li>vergleichbare und alternative Produkte, um eine informierte und optimale Entscheidung zu treffen, und nicht immer zugunsten des bekannten Produkts.<\/li>\n<\/ul>\n<p>\nAu\u00dferdem ist es wichtig, Daten migrieren zu k\u00f6nnen und die grundlegenden Prinzipien der Integration mit ETL zu verstehen.<\/p>\n<h3>Ein praktisches Beispiel<\/h3>\n<p>\nIn der j\u00fcngeren Vergangenheit war es erforderlich, das Backend f\u00fcr eine mobile Anwendung zu entwickeln. Zu Beginn der Arbeit an diesem Projekt war das Backend bereits entwickelt und bereit f\u00fcr die Implementierung, und das Entwicklerteam hatte etwa zwei Jahre f\u00fcr dieses Projekt aufgewendet. Dabei wurden folgende Aufgaben gestellt:<\/p>\n<ul>\n<li>CI\/CD aufzubauen;<\/li>\n<li>eine Architektur-\u00dcberpr\u00fcfung durchzuf\u00fchren;<\/li>\n<li>alles in Betrieb zu nehmen. <\/li>\n<\/ul>\n<p>\nDie Anwendung selbst war mikrodienstbasiert, und der Code in Python\/Django wurde von Grund auf neu und direkt in GCP entwickelt. Was die Zielgruppe angeht, so wurde angenommen, dass es zwei Regionen geben w\u00fcrde \u2014 die USA und die EU, und der Datenverkehr wurde \u00fcber den Global Load Balancer verteilt. Alle Workloads und die Rechenlast liefen in Google Kubernetes Engine. <\/p>\n<p>Was die Daten betrifft, so gab es 3 Strukturen:<\/p>\n<ul>\n<li>Cloud Storage;<\/li>\n<li>Datastore;<\/li>\n<li>Cloud SQL (PostgreSQL).<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Wie SQL-Datenbanken im 21. Jahrhundert \u00fcberleben: Cloud, Kubernetes und PostgreSQL Multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e6e38b1d861b2871edf20fb09378b491.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs stellt sich vielleicht die Frage, warum Cloud SQL gew\u00e4hlt wurde. Ehrlich gesagt, verursacht diese Frage in den letzten Jahren eine gewisse Verlegenheit \u2013 es scheint, als h\u00e4tten die Leute eine Abneigung gegen relationale Datenbanken entwickelt, aber dennoch setzen sie sie aktiv ein ;-). <\/p>\n<p>In unserem Fall wurde Cloud SQL aus folgenden Gr\u00fcnden gew\u00e4hlt:<\/p>\n<ol>\n<li>Wie bereits erw\u00e4hnt, wurde die Anwendung mit Django entwickelt, und darin gibt es ein Modell, das permanente Daten aus der SQL-Datenbank in Python-Objekte (Django ORM) abbildet.<\/li>\n<li>Das Framework unterst\u00fctzte eine ausreichend begrenzte Liste an DBMS:<\/li>\n<\/ol>\n<p><\/p>\n<ul>\n<li>PostgreSQL;<\/li>\n<li>MariaDB;<\/li>\n<li>MySQL;<\/li>\n<li>Oracle;<\/li>\n<li>SQLite.<\/li>\n<\/ul>\n<p>\nDaher wurde PostgreSQL eher intuitiv aus dieser Liste ausgew\u00e4hlt (nun, Oracle wollte man wirklich nicht w\u00e4hlen).<\/p>\n<p><b>Was fehlte:<\/b><\/p>\n<ul>\n<li>Die Anwendung wurde nur in 2 Regionen bereitgestellt, und es war geplant, eine dritte (Asien) hinzuzuf\u00fcgen;<\/li>\n<li>Die Datenbank befand sich in der nordamerikanischen Region (Iowa);<\/li>\n<li>Von Seiten des Kunden gab es Bedenken hinsichtlich m\u00f6glicher <b>Zugriffsverz\u00f6gerungen<\/b> aus Europa und Asien und <b>Unterbrechungen <\/b><b>im Dienst<\/b> im Falle eines Ausfalls der DBMS. <\/li>\n<\/ul>\n<p>\nObwohl Django mehrere Datenbanken parallel verwalten und diese nach Lese- und Schreiboperationen aufteilen kann, war die Anzahl der Schreibvorg\u00e4nge in der Anwendung nicht besonders hoch (\u00fcber 90 % \u2013 Lesevorg\u00e4nge). Insgesamt w\u00e4re es, wenn m\u00f6glich, eine kompromissbereite L\u00f6sung gewesen. <b>Eine Read-Replica der Hauptdatenbank in Europa und Asien<\/b>, w\u00e4re eine solche L\u00f6sung. Was ist daran so kompliziert?<\/p>\n<p>Die Schwierigkeit lag darin, dass der Kunde nicht auf die Nutzung von Managed Services und Cloud SQL verzichten wollte. Die M\u00f6glichkeiten von Cloud SQL sind derzeit jedoch eingeschr\u00e4nkt. Cloud SQL unterst\u00fctzt hohe Verf\u00fcgbarkeit (HA) und Read Replicas (RR), aber die RR wird nur in einer Region unterst\u00fctzt. Wird eine Datenbank in der amerikanischen Region erstellt, kann eine Read-Replica in der europ\u00e4ischen Region mit den Mitteln von Cloud SQL nicht eingerichtet werden, obwohl PostgreSQL das nicht einschr\u00e4nkt. Der Austausch mit den Mitarbeitern von Google brachte nichts und endete mit Versprechungen wie \"Wir kennen das Problem und arbeiten daran, irgendwann wird das Problem gel\u00f6st sein.\" <\/p>\n<p>Wenn man die M\u00f6glichkeiten von Cloud SQL stichpunktartig auflistet, w\u00fcrde das ungef\u00e4hr so aussehen:<\/p>\n<p><b>1. Hohe Verf\u00fcgbarkeit (HA):<\/b><\/p>\n<ul>\n<li>innerhalb einer Region;<\/li>\n<li>durch Festplattenreplikation;<\/li>\n<li>ohne Verwendung der PostgreSQL-Mechanismen;<\/li>\n<li>Es sind automatische und manuelle Steuerungen m\u00f6glich \u2013 Failover\/Fallback;<\/li>\n<li>bei der Umschaltung ist die DBMS f\u00fcr einige Minuten nicht verf\u00fcgbar.<\/li>\n<\/ul>\n<p>\n<b>2. Read Replica (RR):<\/b><\/p>\n<ul>\n<li>innerhalb einer Region;<\/li>\n<li>Hot Standby;<\/li>\n<li>PostgreSQL Streaming-Replikation.<\/li>\n<\/ul>\n<p>\nAu\u00dferdem st\u00f6\u00dft man bei der Auswahl von Technologien immer auf irgendwelche <b>Einschr\u00e4nkungen.<\/b>:<\/p>\n<ul>\n<li>Der Kunde wollte keine Entit\u00e4ten schaffen und IaaS nur \u00fcber GKE nutzen;<\/li>\n<li>der Kunde wollte keinen Self-Service f\u00fcr PostgreSQL\/MySQL bereitstellen;<\/li>\n<li>und \u00fcberhaupt w\u00e4re Google Spanner eine gute L\u00f6sung, w\u00e4re da nicht der Preis; allerdings kann Django ORM damit nicht arbeiten, aber im Prinzip ist es ein gutes Produkt.<\/li>\n<\/ul>\n<p>\nAngesichts der Situation stellte der Kunde eine Herausforderung: <i>\u201eK\u00f6nnten Sie etwas \u00c4hnliches machen, das wie Google Spanner funktioniert, aber auch mit Django ORM arbeitet?\u201c<\/i><\/p>\n<h3>L\u00f6sungsoption Nr. 0<\/h3>\n<p>\nDas Erste, was mir in den Sinn kam:<\/p>\n<ul>\n<li>bei CloudSQL bleiben;<\/li>\n<li>es wird keine integrierte Replikation zwischen Regionen in irgendeiner Form geben;<\/li>\n<li>versuchen, eine Replikation an die bestehende Cloud SQL by PostgreSQL anzuh\u00e4ngen;<\/li>\n<li>irgendwo und irgendwie eine PostgreSQL-Instanz starten, aber zumindest den Master nicht anfassen.<\/li>\n<\/ul>\n<p>\nLeider stellte sich heraus, dass dies nicht m\u00f6glich ist, da kein Zugriff auf den Host besteht (er befindet sich in einem anderen Projekt) \u2013 pg_hba usw. sind nicht verf\u00fcgbar und es gibt keinen Zugang als Superuser.<\/p>\n<h3>L\u00f6sungsoption Nr. 1<\/h3>\n<p>\nNach weiteren \u00dcberlegungen und unter Ber\u00fccksichtigung der vorherigen Umst\u00e4nde hat sich unser Denkansatz etwas ge\u00e4ndert:<\/p>\n<ul>\n<li>Wir versuchen nach wie vor, im Rahmen von CloudSQL zu bleiben, wechseln jedoch zu MySQL, da Cloud SQL von MySQL einen externen Master hat, der:<\/li>\n<\/ul>\n<p>\n\u2014 als Proxy f\u00fcr MySQL dient;<br \/>\n\u2014 wie eine MySQL-Instanz aussieht;<br \/>\n\u2014 f\u00fcr die Migration von Daten aus anderen Clouds oder von On-Premises konzipiert wurde.<\/p>\n<p>Da die Konfiguration der MySQL-Replikation keinen Zugriff auf den Host erfordert, funktionierte im Prinzip alles, aber es war sehr instabil und unbequem. Und als wir weitergingen, wurde es richtig be\u00e4ngstigend, da wir die gesamte Struktur mit Terraform ausrollten und pl\u00f6tzlich herausfanden, dass der externe Master von Terraform nicht unterst\u00fctzt wird. Ja, Google hat eine CLI, aber irgendwie funktionierte alles nur sporadisch \u2013 manchmal wird es erstellt, manchmal nicht. Vielleicht, weil die CLI zur Migration von Daten von au\u00dfen gedacht ist und nicht f\u00fcr Replikate.<\/p>\n<p>Da wurde klar, dass Cloud SQL ganz und gar nicht geeignet ist. Wie man so sch\u00f6n sagt, wir haben alles versucht, was wir konnten. <\/p>\n<h3>L\u00f6sungsoption Nr. 2<\/h3>\n<p>\nDa es nicht m\u00f6glich war, im Rahmen von Cloud SQL zu bleiben, versuchten wir, die Anforderungen an eine Kompromissl\u00f6sung zu formulieren. Die Anforderungen waren folgende:<\/p>\n<ul>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430 \u0432 Kubernetes, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Kubernetes (DCS, &#8230;) \u0438 GCP (LB, &#8230;);<\/li>\n<li>keine Ballaststoffe durch eine Vielzahl unn\u00f6tiger cloud-basierter Elemente wie HA Proxy;<\/li>\n<li>die M\u00f6glichkeit, in der Hauptregion HA PostgreSQL oder MySQL zu starten; in anderen Regionen \u2013 HA aus der Hauptregion plus einer Kopie (zur Zuverl\u00e4ssigkeit);<\/li>\n<li>Multi-Master (sich damit zu verbinden, war nicht unbedingt gew\u00fcnscht, aber auch nicht v\u00f6llig unbedeutend)<\/li>\n<\/ul>\n<p>. <br \/>\nInfolge dieser Anforderungen sind endlich geeignete Optionen f\u00fcr Datenbanksysteme und ihre Anbindung in Sicht<b>MySQL Galera;<\/b>:<\/p>\n<ul>\n<li>CockroachDB;<\/li>\n<li>PostgreSQL-Tools<\/li>\n<li>\u2014 pgpool-II;<\/li>\n<\/ul>\n<p>:<br \/>\n\u2014 Patroni.<br \/>\n\u2014 Patronen.<\/p>\n<h3>MySQL Galera<\/h3>\n<p>\nDie MySQL Galera-Technologie wurde von Codership entwickelt und ist ein Plugin f\u00fcr InnoDB. Eigenschaften:<\/p>\n<ul>\n<li>Multi-Master;<\/li>\n<li>synchronisierte Replikation;<\/li>\n<li>lesen von jedem Knoten;<\/li>\n<li>schreiben auf jeden Knoten;<\/li>\n<li>eingebauter HA-Mechanismus;<\/li>\n<li>es gibt ein Helm-Chart von Bitnami.<\/li>\n<\/ul>\n<p><\/p>\n<h3>CockroachDB<\/h3>\n<p>\nDas beschriebene Produkt ist wirklich beeindruckend und stellt ein Open-Source-Projekt dar, das in Go entwickelt wurde. Der Hauptakteur ist Cockroach Labs (gegr\u00fcndet von ehemaligen Google-Mitarbeitern). Diese relationale Datenbank wurde urspr\u00fcnglich als verteilte L\u00f6sung mit horizontaler Skalierbarkeit \u201eout of the box\u201c und Hochverf\u00fcgbarkeit entwickelt. Ihre Entwickler haben sich zum Ziel gesetzt, die Funktionalit\u00e4t von SQL mit der horizontalen Verf\u00fcgbarkeit, die man von NoSQL-L\u00f6sungen gewohnt ist, zu kombinieren.<\/p>\n<p>Ein netter Bonus ist die Unterst\u00fctzung des PostgreSQL-Anschlussprotokolls. <\/p>\n<h3>Pgpool<\/h3>\n<p>\nDies ist eine Erweiterung f\u00fcr PostgreSQL, die im Grunde eine neue Entit\u00e4t ist, die alle Verbindungen \u00fcbernimmt und bearbeitet. Sie verf\u00fcgt \u00fcber einen eigenen Lastenausgleich und Parser und ist unter der BSD-Lizenz lizenziert. Sie bietet umfangreiche M\u00f6glichkeiten, sieht jedoch etwas einsch\u00fcchternd aus, da das Vorhandensein einer neuen Entit\u00e4t einige zus\u00e4tzliche Herausforderungen mit sich bringen k\u00f6nnte. <\/p>\n<h3>Patroni<\/h3>\n<p>\nDas ist das letzte, was ins Auge fiel, und es war nicht umsonst. Patroni ist ein Open-Source-Tool, das im Grunde ein Python-Daemon ist, der es erm\u00f6glicht, PostgreSQL-Cluster mit verschiedenen Replikationsarten und automatischem Failover zu verwalten. Es ist \u00e4u\u00dferst interessant, da es sich gut in Kubernetes integriert und keine neuen Entit\u00e4ten mit sich bringt. <\/p>\n<h3>Was schlie\u00dflich ausgew\u00e4hlt wurde<\/h3>\n<p>\nDie Entscheidung fiel nicht leicht:<\/p>\n<ol>\n<li><b>CockroachDB <\/b>\u2014 spannend, aber riskant;<\/li>\n<li><b>MySQL Galera<\/b> \u2014 ebenfalls nicht schlecht, wird h\u00e4ufig verwendet, aber MySQL;<\/li>\n<li><b>Pgpool <\/b>\u2014 viele \u00fcberfl\u00fcssige Entit\u00e4ten, mittelm\u00e4\u00dfige Integration mit der Cloud und K8s;<\/li>\n<li><b>Patroni <\/b>\u2014 hervorragende Integration mit K8s, keine \u00fcberfl\u00fcssigen Entit\u00e4ten, gut integriert mit GCP LB.<\/li>\n<\/ol>\n<p>\nSomit fiel die Wahl auf Patroni. <\/p>\n<h3>Fazit<\/h3>\n<p>\nEs ist an der Zeit, eine kurze Zusammenfassung zu ziehen. Ja, die Welt der IT-Infrastruktur hat sich erheblich ver\u00e4ndert, und das ist erst der Anfang. Fr\u00fcher waren Clouds lediglich eine andere Art von Infrastruktur, aber jetzt ist alles anders. Zudem erscheinen st\u00e4ndig Innovationen in den Clouds, und m\u00f6glicherweise werden diese nur in Cloud-Umgebungen entwickelt, um sp\u00e4ter durch Startups in On-Premises-Umgebungen \u00fcbertragen zu werden.<\/p>\n<p>Was SQL betrifft, so ist SQL nach wie vor relevant. Das bedeutet, dass man PostgreSQL und MySQL kennen und damit umgehen k\u00f6nnen muss, aber es ist noch wichtiger, sie richtig anzuwenden.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/481644\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54366","post","type-post","status-publish","format-standard","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\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c\" \/>\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\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster\" \/>\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\udd47\u041a\u0430\u043a \u0432\u044b\u0436\u0438\u0442\u044c SQL-\u0431\u0430\u0437\u0435 \u0432 21 \u0432\u0435\u043a\u0435: \u043e\u0431\u043b\u0430\u043a\u0430, Kubernetes \u0438 PostgreSQL multimaster | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster\" \/>\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=\"2019-12-23T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:22+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\udd47Wie eine SQL-Datenbank im 21. Jahrhundert \u00fcberleben kann: Cloud, Kubernetes und PostgreSQL Multimaster | ProHoster","description":"Hallo, Habr-Bewohner. Heute starten die Kurse der ersten Gruppe im Kurs \u201ePostgreSQL\u201c. In diesem Zusammenhang m\u00f6chten wir Ihnen von dem offenen Webinar zu diesem Kurs erz\u00e4hlen. In der neuesten offenen Lektion haben wir dar\u00fcber gesprochen, mit welchen Herausforderungen SQL-Datenbanken in der \u00c4ra von Cloud und Kubernetes konfrontiert sind. Au\u00dferdem haben wir er\u00f6rtert, wie sich SQL-Datenbanken anpassen und unter dem Einfluss ver\u00e4ndern.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","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\udd47\u041a\u0430\u043a \u0432\u044b\u0436\u0438\u0442\u044c SQL-\u0431\u0430\u0437\u0435 \u0432 21 \u0432\u0435\u043a\u0435: \u043e\u0431\u043b\u0430\u043a\u0430, Kubernetes \u0438 PostgreSQL multimaster | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","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":"2019-12-23T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54366","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":"2026-01-24 11:06:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:30:12","updated":"2026-01-24 11:06:21"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54366","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=54366"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54366\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=54366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=54366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=54366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}