{"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\/nl\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","title":{"rendered":"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Hallo, Habr-leden. Vandaag beginnen de lessen in de eerste groep van de cursus <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/nwhU\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>. In dit verband willen we jullie vertellen over het open webinar dat we hebben gehouden over deze cursus.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en 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\">het volgende open les<\/a><\/noindex> bespraken we de uitdagingen waarmee SQL-databases worden geconfronteerd in het tijdperk van cloud en Kubernetes. Daarnaast keken we hoe SQL-databases zich aanpassen en evolueren door deze uitdagingen.<\/p>\n<p>Het webinar werd geleid door <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/IVe0\/\">Valery Bezrukov<\/a><\/noindex>, Google Cloud Practice Delivery Manager bij EPAM Systems.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Toen de bomen nog klein waren\u2026<\/h3>\n<p>\nLaten we beginnen met het terugblikken op hoe de selectie van databasesystemen aan het einde van de vorige eeuw begon. Dat is geen moeite, want de keuze van databasesystemen was toen nogal beperkt. <b>Oracle<\/b>. <\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/5fdf02523892e7477fd47dd01eb21d04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAan het einde van de jaren '90 en het begin van de jaren '00 was er eigenlijk niet veel keuze als het ging om industri\u00eble schaalbare databases. Ja, er waren IBM DB2, Sybase en een paar andere databases die opkwamen en weer verdwenen, maar over het algemeen waren ze niet zo op de voorgrond vergeleken met Oracle. De vaardigheden van ingenieurs in die tijd waren hoe dan ook verbonden aan die ene keuze die er was.<\/p>\n<p>Een Oracle DBA moest kunnen:<\/p>\n<ul>\n<li> Oracle Server installeren vanuit de distributie;<\/li>\n<li> Oracle Server configureren:<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>init.ora;<\/li>\n<li>listener.ora;<\/li>\n<\/ul>\n<p>\n\u2014 cre\u00ebren:<\/p>\n<ul>\n<li>tabellenruimtes;<\/li>\n<li>schema's;<\/li>\n<li>gebruikers;<\/li>\n<\/ul>\n<p>\u2014 back-ups maken en herstellen;<br \/>\n\u2014 monitoring uitvoeren;<br \/>\n\u2014 omgaan met suboptimale queries.<\/p>\n<p>Daarbij werd van de Oracle DBA niet veel vereist:<\/p>\n<ul>\n<li>de optimale database of een andere technologie voor opslag en verwerking van data kiezen;<\/li>\n<li>hoge beschikbaarheid en horizontale schaalbaarheid waarborgen (dat was niet altijd de verantwoordelijkheid van de DBA);<\/li>\n<li>de materie, infrastructuur, applicatiearchitectuur en OS goed kennen;<\/li>\n<li>data-import en -export uitvoeren, data migreren tussen verschillende databasesystemen.<\/li>\n<\/ul>\n<p>Over het algemeen lijkt de keuze in die tijd op de keuze in een Sovjetwinkel aan het eind van de jaren '80:<\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/70b37faf295170d8507d5c605f4b2047.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Onze tijd<\/h3>\n<p>\nSindsdien zijn de bomen natuurlijk gegroeid, de wereld is veranderd, en is het zo gegaan:<\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e8698d658bd09e0071f02a672a5cb81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe database-markt is veranderd, zoals blijkt uit het recente rapport van Gartner:<\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/745f3969a3ad2e65162ef41cda6c0658.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn het is belangrijk op te merken dat de cloud zijn plek heeft veroverd, waarvan de populariteit toeneemt. Als we hetzelfde rapport van Gartner lezen, zullen we de volgende conclusies zien:<\/p>\n<ol>\n<li>Veel klanten zijn bezig met de overgang van applicaties naar de cloud. <\/li>\n<li>Nieuwe technologie\u00ebn verschijnen eerst in de cloud en het is niet zeker dat ze ooit naar een niet-cloud infrastructuur zullen verhuizen.<\/li>\n<li>Het principe van pay-as-you-go is gebruikelijk geworden in prijsstelling. Iedereen wil alleen betalen voor wat ze gebruiken, en dit is al lang geen trend meer, maar gewoon een feit. <\/li>\n<\/ol>\n<p><\/p>\n<h3>Wat is de situatie nu?<\/h3>\n<p>\nVandaag de dag bevinden we ons allemaal in de cloud. De vragen die we hebben, zijn keuzevragen. En die zijn enorm, zelfs als we alleen praten over de keuze van database technologie\u00ebn in On-premises format. En we hebben ook managed services en SaaS. Hierdoor wordt de keuze elk jaar alleen maar ingewikkelder.<\/p>\n<p>Naast keuzevragen spelen ook <b>beperkende factoren<\/b>:<\/p>\n<ul>\n<li><b>price<\/b>. Veel technologie\u00ebn kosten nog steeds geld;<\/li>\n<li><b>vaardigheden<\/b>. Als we het hebben over open source software, rijst de vraag naar vaardigheden, want gratis software vereist voldoende competentie van de mensen die het implementeren en onderhouden;<\/li>\n<li><b>functionaliteit<\/b>. Niet alle services die beschikbaar zijn in de cloud en gebouwd zijn op bijvoorbeeld dezelfde Postgres, beschikken over dezelfde functies als Postgres On-premises. Dit is een cruciale factor die men moet kennen en begrijpen. Sterker nog, deze factor wordt belangrijker dan kennis van verborgen mogelijkheden van een specifieke database. <\/li>\n<\/ul>\n<p>\n<b>Wat verwacht men momenteel van DA\/DE:<\/b><\/p>\n<ul>\n<li>goede kennis van het vakgebied en toegepaste architectuur;<\/li>\n<li>in staat zijn om de juiste database technologie te kiezen rekening houdend met de gestelde taak;<\/li>\n<li>in staat zijn om de optimale implementatiemethode van de gekozen technologie te selecteren binnen de bestaande beperkingen;<\/li>\n<li>in staat zijn om gegevensoverdracht en migratie uit te voeren;<\/li>\n<li>in staat zijn om de gekozen oplossingen te implementeren en te onderhouden.<\/li>\n<\/ul>\n<p>\nHet onderstaande voorbeeld <b>op basis van GCP<\/b> demonstrateert hoe de keuze van een bepaalde technologie voor gegevensverwerking afhankelijk is van hun structuur:<\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/fe324d8af9ed8f6afb58ed930dc21327.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLet op dat PostgreSQL niet in het schema voorkomt, omdat het verborgen is onder de terminologie van <b>Cloud SQL<\/b>. En wanneer we in Cloud SQL komen, moeten we opnieuw een keuze maken:<\/p>\n<p><img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/bdf523e0b10fbfe753318a02a686a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet is belangrijk op te merken dat deze keuze niet altijd duidelijk is, daarom laten ontwikkelaars van applicaties zich vaak leiden door hun intu\u00eftie. <\/p>\n<p><b>Kortom:<\/b><\/p>\n<ol>\n<li>Naarmate de tijd verstrijkt, wordt de keuzevraag steeds relevanter. En zelfs als we alleen naar GCP, managed services en SaaS kijken, komt er pas in stap 4 enige vermelding van RDBMS (en daar staat Spanner naast). Bovendien verschijnt de keuze voor PostgreSQL pas in stap 5, met daarnaast ook MySQL en SQL Server, wat betekent <b>er is veel keuze, maar er moet gekozen worden<\/b>. <\/li>\n<li>Je moet ook de beperkingen niet vergeten, ondanks de verleiding. Over het algemeen wil iedereen Spanner, maar het is duur. Uiteindelijk ziet een typische aanvraag er ongeveer zo uit: <i>\u201eMaak alsjeblieft Spanner voor ons, maar dan tegen de prijs van Cloud SQL, jullie zijn toch professionals!\u201d<\/i><\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/cc656b46d37d08fc6aeca937e1e9085b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>En wat moeten we doen?<\/h3>\n<p>\nZonder de waarheid in laatste instantie te claimen, laten we het volgende zeggen:<\/p>\n<p><b>De aanpak van het leren moet veranderen:<\/b><\/p>\n<ul>\n<li>op de oude manier zoals DBA\u2019s leren heeft geen zin;<\/li>\n<li>kennis van \u00e9\u00e9n product is tegenwoordig niet genoeg;<\/li>\n<li>en om tientallen producten op hetzelfde niveau te kennen, is onmogelijk.<\/li>\n<\/ul>\n<p>\nJe moet niet alleen het product kennen, maar ook:<\/p>\n<ul>\n<li>de use case voor toepassing;<\/li>\n<li>verschillende implementatiemethoden;<\/li>\n<li>de voor- en nadelen van elke methode;<\/li>\n<li>vergelijkbare en alternatieve producten, om weloverwogen en optimale keuzes te maken en niet altijd voor het bekende product te kiezen.<\/li>\n<\/ul>\n<p>\nEn je moet ook in staat zijn om gegevens te migreren en de basisprincipes van integratie met ETL te begrijpen.<\/p>\n<h3>Een echte casus<\/h3>\n<p>\nIn het recente verleden moest ik een backend maken voor een mobiele applicatie. Tegen de tijd dat ik eraan begon, was de backend al ontwikkeld en klaar voor implementatie, en het ontwikkelingsteam had ongeveer twee jaar aan dit project gewerkt. Hierbij waren de volgende taken gesteld:<\/p>\n<ul>\n<li>CI\/CD opzetten;<\/li>\n<li>architectuur review uitvoeren;<\/li>\n<li>alles in gebruik nemen. <\/li>\n<\/ul>\n<p>\nDe applicatie zelf was microservices-gebaseerd, en de code in Python\/Django was vanaf nul ontwikkeld en direct in GCP. Wat de doelgroep betreft, ging men ervan uit dat er twee regio\u2019s zouden zijn \u2014 de VS en de EU, en het verkeer werd verdeeld via een Global Load Balancer. Alle workloads en rekenkracht werkten in Google Kubernetes Engine. <\/p>\n<p>Wat de gegevens betreft, waren er 3 structuren:<\/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=\"Hoe een SQL-database te overleven in de 21ste eeuw: cloud, Kubernetes en PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e6e38b1d861b2871edf20fb09378b491.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEr zou de vraag kunnen ontstaan waarom Cloud SQL is gekozen? Eerlijk gezegd geeft deze vraag in de afgelopen jaren een ongemakkelijke pauze \u2014 het lijkt alsof mensen verlegen zijn om met relationele databases te werken, maar desondanks blijven ze ze actief gebruiken ;-). <\/p>\n<p>Wat ons geval betreft, werd Cloud SQL om de volgende redenen gekozen:<\/p>\n<ol>\n<li>Zoals eerder vermeld, werd de applicatie ontwikkeld met Django, en het bevat een model dat permanente gegevens uit de SQL-database omzet in Python-objecten (Django ORM).<\/li>\n<li>Het framework ondersteunde een redelijk eindige lijst van databasebeheersystemen:<\/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>\nBijgevolg werd PostgreSQL intu\u00eftief uit deze lijst gekozen (we kiezen toch geen Oracle, toch?).<\/p>\n<p><b>Wat ontbrak:<\/b><\/p>\n<ul>\n<li>de applicatie was alleen in twee regio's uitgerold, en er waren plannen voor een derde (Azi\u00eb);<\/li>\n<li>de database bevond zich in de Noord-Amerikaanse regio (Iowa);<\/li>\n<li>van de kant van de klant waren er zorgen over mogelijke <b>vertragingen in de toegang<\/b> uit Europa en Azi\u00eb en <b>onderbrekingen <\/b><b>in de dienstverlening<\/b> in het geval van een uitval van de database. <\/li>\n<\/ul>\n<p>\nHoewel Django zelf met meerdere databases tegelijkertijd kan werken en deze kan splitsen naar lezen en schrijven, waren er in de applicatie niet veel schrijfbewerkingen (meer dan 90% was lezen). In het algemeen, als het mogelijk was om een <b>read-replica van de hoofd-database in Europa en Azi\u00eb te maken<\/b>, zou dat een compromisoplossing zijn geweest. Wat was daar zo moeilijk aan?<\/p>\n<p>De moeilijkheid lag in het feit dat de klant niet wilde afzien van het gebruik van managed services en Cloud SQL. En de mogelijkheden van Cloud SQL zijn momenteel beperkt. Cloud SQL ondersteunt hoge beschikbaarheid (HA) en Read Replica (RR), maar die laatste wordt alleen in \u00e9\u00e9n regio ondersteund. Door een database in de Amerikaanse regio te cre\u00ebren, kan je met Cloud SQL geen read-replica in de Europese regio maken, hoewel PostgreSQL dat zelf wel toelaat. Correspondentie met werknemers van Google leidde tot niets en eindigde met beloftes in de trant van 'we zijn ons bewust van het probleem en werken eraan, het zal ooit opgelost worden'. <\/p>\n<p>Als we de mogelijkheden van Cloud SQL puntsgewijs zouden opsommen, zou het er ongeveer als volgt uitzien:<\/p>\n<p><b>1. Hoge beschikbaarheid (HA):<\/b><\/p>\n<ul>\n<li>binnen \u00e9\u00e9n regio;<\/li>\n<li>via schijfreplicatie;<\/li>\n<li>de mechanismen van PostgreSQL worden niet gebruikt;<\/li>\n<li>automatisch en handmatig beheer is mogelijk \u2014 failover\/failback;<\/li>\n<li>tijdens de switch is de database enkele minuten niet beschikbaar.<\/li>\n<\/ul>\n<p>\n<b>2. Read Replica (RR):<\/b><\/p>\n<ul>\n<li>binnen \u00e9\u00e9n regio;<\/li>\n<li>hot standby;<\/li>\n<li>PostgreSQL streaming replicatie.<\/li>\n<\/ul>\n<p>\nBovendien, zoals gebruikelijk, kom je bij het kiezen van een technologie altijd beperkingen tegen. <b>de klant wilde geen entiteiten vermenigvuldigen en IaaS gebruiken, behalve via GKE;<\/b>:<\/p>\n<ul>\n<li>de klant wilde geen self-service PostgreSQL\/MySQL uitrollen;<\/li>\n<li>de klant wilde geen self-service PostgreSQL\/MySQL implementeren;<\/li>\n<li>Trouwens, Google Spanner zou prima zijn, ware het niet de prijs. Maar Django ORM kan er niet mee werken, anders is het een prima product.<\/li>\n<\/ul>\n<p>\nGelet op de situatie, ontvang ik een wervende vraag van de opdrachtgever: <i>\u00abKunnen jullie iets soortgelijks maken dat lijkt op Google Spanner, maar ook werkt met Django ORM?\u00bb<\/i><\/p>\n<h3>Oplossing optie \u2116 0<\/h3>\n<p>\nAls eerste kwam het volgende in me op:<\/p>\n<ul>\n<li>vast te houden aan CloudSQL;<\/li>\n<li>er zal in geen enkele vorm ingebouwde replicatie tussen regio's zijn;<\/li>\n<li>te proberen een replica aan de bestaande Cloud SQL by PostgreSQL te koppelen;<\/li>\n<li>ergens en op een bepaalde manier een PostgreSQL-instantie draaien, maar tenminste de master niet aanraken.<\/li>\n<\/ul>\n<p>\nHelaas bleek dat zo niet mogelijk was, omdat er geen toegang tot de host is (die is helemaal in een ander project) \u2014 pg_hba en dergelijke, en ook geen toegang onder superuser.<\/p>\n<h3>Oplossing optie \u2116 1<\/h3>\n<p>\nNa opnieuw te hebben nagedacht en met inachtneming van de eerdere omstandigheden, wijzigde de gedachtegang enigszins:<\/p>\n<ul>\n<li>Proberen nog steeds binnen CloudSQL te blijven, maar over te stappen naar MySQL, omdat Cloud SQL by MySQL een externe master heeft, die:<\/li>\n<\/ul>\n<p>\n\u2014 fungeert als proxy voor externe MySQL;<br \/>\n\u2014 eruitziet als een MySQL-instantie;<br \/>\n\u2014 uitgevonden is voor het migreren van gegevens vanuit andere cloud-omgevingen of On-premises.<\/p>\n<p>Aangezien de configuratie van MySQL-replicatie geen toegang tot de host vereist, werkte alles in principe, maar heel onstabiel en ongemakkelijk. En toen we verder gingen, werd het echt beangstigend, omdat we de hele structuur met terraform uitrolden, en ineens bleek dat externe master niet door terraform ondersteund werd. Ja, Google heeft CLI, maar om de een of andere reden werkte het ook hier sporadisch \u2014 soms werd het aangemaakt, soms niet. Mogelijk omdat CLI bedacht is voor het migreren van gegevens van buitenaf, en niet voor replicaties.<\/p>\n<p>Eigenlijk werd het duidelijk dat Cloud SQL totaal niet geschikt is. Zoals ze zeggen, we hebben alles geprobeerd wat we konden. <\/p>\n<h3>Oplossing optie \u2116 2<\/h3>\n<p>\nAangezien het niet lukte om binnen Cloud SQL te blijven, probeerden we de eisen voor een compromisoplossing te formuleren. De eisen waren als volgt:<\/p>\n<ul>\n<li>werken in Kubernetes, optimaal gebruik maken van de middelen en mogelijkheden van Kubernetes (DCS, \u2026) en GCP (LB, \u2026);<\/li>\n<li>geen ballast van een hoop onnodige cloud-dingen zoals HA proxy;<\/li>\n<li>mogelijk om HA PostgreSQL of MySQL in de belangrijkste regio te draaien; in andere regio's - HA van de primaire regio plus een kopie daarvan (voor betrouwbaarheid);<\/li>\n<li>multi master (verbinden was niet echt de bedoeling, maar het was niet heel principieel)<\/li>\n<\/ul>\n<p>. <br \/>\nAls resultaat van deze eisen kwam er eindelijk iets op de horizon.<b>geschikte opties voor database en middleware<\/b>:<\/p>\n<ul>\n<li>MySQL Galera;<\/li>\n<li>CockroachDB;<\/li>\n<li>PostgreSQL-hulpmiddelen<\/li>\n<\/ul>\n<p>:<br \/>\n\u2014 pgpool-II;<br \/>\n\u2014 Patroni.<\/p>\n<h3>MySQL Galera<\/h3>\n<p>\nDe MySQL Galera-technologie is ontwikkeld door Codership en is een plugin voor InnoDB. Kenmerken:<\/p>\n<ul>\n<li>multi-master;<\/li>\n<li>synchrone replicatie;<\/li>\n<li>lezen vanaf elke node;<\/li>\n<li>schrijven naar elke node;<\/li>\n<li>ingebouwd HA-mechanisme;<\/li>\n<li>er is een Helm-chart van Bitnami.<\/li>\n<\/ul>\n<p><\/p>\n<h3>CockroachDB<\/h3>\n<p>\nVolgens de beschrijving is het een geweldig project en is het een open source-project geschreven in Go. De belangrijkste speler is Cockroach Labs (opgericht door voormalige Google-medewerkers). Deze relationele database is oorspronkelijk ontworpen om gedistribueerd (met horizontale schaalbaarheid \u2018out of the box\u2019) en failover-veilig te zijn. De auteurs hebben als doel gesteld \u2018de rijkdom van SQL-functionaliteit te combineren met de horizontale beschikbaarheid, die gebruikelijk is voor NoSQL-oplossingen\u2019.<\/p>\n<p>Als aangename bonus \u2014 ondersteuning voor het PostgreSQL-connectieprotocol. <\/p>\n<h3>Pgpool<\/h3>\n<p>\nDit is een laag bovenop PostgreSQL; eigenlijk een nieuwe entiteit die alle verbindingen beheert. Het heeft zijn eigen load balancer en parser, en is gelicenseerd onder de BSD-licentie. Het biedt uitgebreide mogelijkheden, maar ziet er enigszins intimiderend uit, omdat het bestaan van een nieuwe entiteit potentieel extra problemen kan opleveren. <\/p>\n<h3>Patroni<\/h3>\n<p>\nDit is het laatste waar ik op viel, en zoals het bleek, niet zonder reden. Patroni is een open source-tool die in wezen een daemon in Python is, die automatisch PostgreSQL-clusters met verschillende replicatietypen en automatische roloverschakeling beheert. Het ding bleek erg interessant omdat het goed integreert met Kubernetes en geen nieuwe entiteiten met zich meebrengt. <\/p>\n<h3>Wat uiteindelijk werd gekozen<\/h3>\n<p>\nDe keuze was niet eenvoudig:<\/p>\n<ol>\n<li><b>CockroachDB <\/b>\u2014 geweldig, maar eng;<\/li>\n<li><b>MySQL Galera<\/b> \u2014 ook niet slecht, wordt op veel plaatsen gebruikt, maar MySQL;<\/li>\n<li><b>Pgpool <\/b>\u2014 te veel overbodige entiteiten, matige integratie met de cloud en K8s;<\/li>\n<li><b>Patroni <\/b>\u2014 uitstekende integratie met K8s, geen overbodige entiteiten, goed ge\u00efntegreerd met GCP LB.<\/li>\n<\/ol>\n<p>\nDus de keuze viel op Patroni. <\/p>\n<h3>Conclusies<\/h3>\n<p>\nHet is tijd om een kort overzicht te geven. Ja, de wereld van IT-infrastructuur is aanzienlijk veranderd, en dit is nog maar het begin. En als cloud vroeger slechts een ander type infrastructuur was, is het nu anders. Bovendien verschijnen innovaties in de cloud constant, en zullen mogelijk alleen in de cloud verschijnen en later, door middel van start-ups, naar On-premises worden overgebracht.<\/p>\n<p>Wat betreft SQL, SQL zal blijven bestaan. Dit betekent dat je PostgreSQL en MySQL moet kennen en ermee moet kunnen werken, maar nog belangrijker is het om ze op de juiste manier toe te passen.<br \/>\n<br \/>Bron: <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 5.0.3 - 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.\" \/>\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\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster\" \/>\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\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/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\udd47Hoe een SQL-database te laten overleven in de 21e eeuw: clouds, Kubernetes en PostgreSQL multimaster | ProHoster","description":"Hallo, Habr-bezoekers. Vandaag beginnen de lessen in de eerste groep van de cursus \u00abPostgreSQL\u00bb.","canonical_url":"https:\/\/prohoster.info\/nl\/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":"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\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.","og:url":"https:\/\/prohoster.info\/nl\/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","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\/54366","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=54366"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/54366\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=54366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=54366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=54366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}