{"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\/et\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","title":{"rendered":"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Tere, Habr'i kasutajad. T\u00e4na algavad kursuse esimese grupi tunnid <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/nwhU\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>. Seoses sellega tahame r\u00e4\u00e4kida teile, kuidas toimus avatud veebinar selle kursuse kohta.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e66e0d4919d45284dbdc4696d6cab555.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUues <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=yiXP8ihL2eA\">j\u00e4rgmine avatud \u00f5ppetund<\/a><\/noindex> r\u00e4\u00e4giti sellest, milliste v\u00e4ljakutsetega SQL-andmebaasid silmitsi seisavad pilvetehnoloogia ja Kubernetes'iga. Samuti vaatasime, kuidas SQL-andmebaasid kohanduvad ja muteeruvad nendele v\u00e4ljakutsetele vastates.<\/p>\n<p>Veebinari viis l\u00e4bi <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/IVe0\/\">Valeri Bezrukov<\/a><\/noindex>, Google Cloud Practice Delivery Manager EPAM Systems'is.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Kui puud olid v\u00e4ikesed ...<\/h3>\n<p>\nEsiteks, meenutame, kuidas toona viimase sajandi l\u00f5pus andmebaaside valik algas. Kuid see ei tohiks olla keeruline, sest andmebaaside valik sel ajal algas ja l\u00f5ppes <b>Oracle<\/b>. <\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/5fdf02523892e7477fd47dd01eb21d04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n90ndate l\u00f5pus ja 2000. alguses ei olnud tegelikult suurt valikut t\u00f6\u00f6stuslike skaleeritavate andmebaaside osas. Jah, oli IBM DB2, Sybase ja veel m\u00f5ned andmebaasid, mis tulid ja kadusid, kuid \u00fcldiselt ei olnud nad Oracle'i taustal eriti silmatorkavad. Seet\u00f5ttu olid nende aegade inseneride oskused seotud selle ainukese valikuga, mis olemas oli.<\/p>\n<p>Oracle DBA pidi oskama:<\/p>\n<ul>\n<li> installer Oracle Serverit distribuutsioonist;<\/li>\n<li> seade Oracle Serverit:<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>init.ora;<\/li>\n<li>listener.ora;<\/li>\n<\/ul>\n<p>\n\u2014 luua:<\/p>\n<ul>\n<li>tabeliruumid;<\/li>\n<li>skeemid;<\/li>\n<li>kasutajad;<\/li>\n<\/ul>\n<p>\u2014 teostada varukoopiate loomine ja taastamine;<br \/>\n\u2014 teostada j\u00e4lgimist;<br \/>\n\u2014 v\u00f5idelda mitteoptimaalsete p\u00e4ringutega.<\/p>\n<p>Samal ajal ei n\u00f5utud Oracle DBA-lt eriti:<\/p>\n<ul>\n<li>osata valida optimaalseid andmebaasis\u00fcsteeme v\u00f5i muid andmete salvestamise ja t\u00f6\u00f6tlemise tehnoloogiaid;<\/li>\n<li>tagada k\u00f5rge k\u00e4ttesaadavus ja horisontaalne skaleeritavus (see ei olnud alati DBA k\u00fcsimus);<\/li>\n<li>h\u00e4sti tunda valdkonna, infrastruktuuri, rakenduste arhitektuuri, OS-i;<\/li>\n<li>teostada andmete laadimist ja v\u00e4ljastamist, andmete migreerimist erinevate andmebaaside vahel.<\/li>\n<\/ul>\n<p>\u00dcldiselt, kui r\u00e4\u00e4kida selle aja valikust, sarnaneb see valikuga N\u00f5ukogude poe l\u00f5pus 80ndatel:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/70b37faf295170d8507d5c605f4b2047.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Meie aeg<\/h3>\n<p>\nAlates sellest ajast on puud muidugi kasvanud, maailm on muutunud ja n\u00fc\u00fcd on see kuidagi nii:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e8698d658bd09e0071f02a672a5cb81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAndmebaasiturgu on samuti muutunud, mida t\u00f5endab v\u00e4rske Gartneri raport:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/745f3969a3ad2e65162ef41cda6c0658.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJa siinkohal ei saa mainimata j\u00e4tta, et oma ni\u0161i on leidnud pilvetehnoloogiad, mille populaarsus kasvab. Kui lugeda sama Gartneri raportit, n\u00e4eme j\u00e4rgmisi j\u00e4reldusi:<\/p>\n<ol>\n<li>Paljud kliendid on teel rakenduste pilve viimise poole. <\/li>\n<li>Uued tehnoloogiad ilmuvad k\u00f5igepealt pilve ja pole sugugi kindel, et need kunagi \u00fcleminekuks mitte-pilve infrastruktuuri leiavad.<\/li>\n<li>Maksustamismodel, mis p\u00f5hineb pay-as-you-go p\u00f5him\u00f5ttel, on saanud tavap\u00e4raseks. K\u00f5ik soovivad maksta ainult selle eest, mida nad kasutavad, ja see on isegi enam mitte trend, vaid lihtsalt fakti konstateerimine. <\/li>\n<\/ol>\n<p><\/p>\n<h3>Mis n\u00fc\u00fcd?<\/h3>\n<p>\nT\u00e4na oleme k\u00f5ik pilves. Ja k\u00fcsimused, mis meil tekivad, on valikuk\u00fcsimused. Need on tohutud, isegi kui r\u00e4\u00e4gime ainult andmebaaside valikust On-premises formaadis. Ja meil on ka hallatud teenused ja SaaS. Seega, valikud keerduvad iga aastaga aina rohkem.<\/p>\n<p>Valikuk\u00fcsimustega koos toimivad ka <b>piiravad tegurid<\/b>:<\/p>\n<ul>\n<li><b>hind<\/b>. Paljud tehnoloogiad maksavad endiselt raha;<\/li>\n<li><b>oskused<\/b>. Kui r\u00e4\u00e4gime vabavarast, siis t\u00f5statub oskuste k\u00fcsimus, kuna tasuta tarkvara n\u00f5uab inimestelt, kes seda juurutavad ja kasutavad, piisavat kompetentsust;<\/li>\n<li><b>funktsionaalsus<\/b>. Mitte k\u00f5ik teenused, mis on saadaval pilves ja mis on ehitatud n\u00e4iteks PostgreSQL alusel, ei oma samu funktsioone, mis PostgreSQL On-premises. See on oluline tegur, mida tuleb teada ja m\u00f5ista. Lisaks muutub see tegur tihti olulisemaks kui teadmised mingitest varjatud v\u00f5imalustest konkreetse andmebaasi kohta. <\/li>\n<\/ul>\n<p>\n<b>Mis on DA\/DE ootused:<\/b><\/p>\n<ul>\n<li>hea arusaam valdkonnast ja rakendusarhitektuurist;<\/li>\n<li>oskus valida sobiv andmebaasitehnoloogia arvestades seatud \u00fclesandeid;<\/li>\n<li>oskus valida valitud tehnoloogia rakendamise optimaalne meetod olemasolevate piirangute kontekstis;<\/li>\n<li>oskus andmete \u00fcleviimiseks ja migreerimiseks;<\/li>\n<li>oskus rakendada ja hallata valitud lahendusi.<\/li>\n<\/ul>\n<p>\nAllj\u00e4rgnev n\u00e4ide <b>GCP alusel<\/b> demonstrib, kuidas toimub valiku tegemine s\u00f5ltuvalt andmete struktuurist:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/fe324d8af9ed8f6afb58ed930dc21327.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPange t\u00e4hele, et skeemist puudub PostgreSQL, kuna see varjatakse terminoloogia <b>Cloud SQL<\/b>. Ja kui satume Cloud SQL-i, siis peame j\u00e4lle valima:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/bdf523e0b10fbfe753318a02a686a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiinkohal tuleb m\u00e4rkida, et see valik ei ole alati arusaadav, seega arendajad juhinduvad sageli intuitsioonist. <\/p>\n<p><b>Kokkuv\u00f5tteks:<\/b><\/p>\n<ol>\n<li>Mida kaugemale, seda aktuaalsemaks muutub valikute k\u00fcsimus. Ja isegi kui vaadata ainult GCP-d, siis managed teenuste ja SaaS-i puhul ilmub mingisugune viide RDBMS-ile alles 4. sammul (ja seal on Spanner k\u00f5rval). Lisaks, PostgreSQL-i valik ilmub \u00fcldse alles 5. sammul, samas kui k\u00f5rval on veel MySQL ja SQL Server, ehk <b>k\u00f5ike on palju, aga valida tuleb.<\/b>. <\/li>\n<li>Ei saa unustada ka piiranguid ahvatluste taustal. Peamiselt soovivad k\u00f5ik Spannerit, kuid see on kallis. L\u00f5ppkokkuv\u00f5ttes n\u00e4eb t\u00fc\u00fcpiline p\u00e4ring v\u00e4lja umbes nii: <i>\u00abPalun tehke meile Spanner, kuid Cloud SQL-i hinnaga, noh, teie olete professionaalid!\u00bb<\/i><\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/cc656b46d37d08fc6aeca937e1e9085b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Aga mida siis teha?<\/h3>\n<p>\nIlma l\u00f5pliku t\u00f5e pretensioonita \u00fctleme j\u00e4rgmist:<\/p>\n<p><b>On vaja muuta l\u00e4henemist \u00f5ppimisele:<\/b><\/p>\n<ul>\n<li>ei ole m\u00f5tet \u00f5petada nagu varem DBA-sid;<\/li>\n<li>\u00fche toote teadmine ei ole enam piisav;<\/li>\n<li>ja k\u00fcmne tasemel \u00fche puhul on v\u00f5imatu.<\/li>\n<\/ul>\n<p>\nOn vaja teada mitte ainult toodet, vaid ka:<\/p>\n<ul>\n<li>kasutuse juhtumit;<\/li>\n<li>erinevaid rakendusmeetodeid;<\/li>\n<li>iga meetodi eelised ja puudused;<\/li>\n<li>sarnased ja alternatiivsed tooted, et teha teadlik ja optimaalne valik ning mitte alati tuttava toote kasuks.<\/li>\n<\/ul>\n<p>\nJa veel tuleb osata andmeid migreerida ja m\u00f5ista ETL-i p\u00f5hiprintsiipe.<\/p>\n<h3>Reaalne juhtum<\/h3>\n<p>\nHiljuti tuli teha mobiilirakenduse tagapoolt. Enne t\u00f6\u00f6 alustamist oli tagapool juba v\u00e4lja t\u00f6\u00f6tatud ja valmis rakendamiseks, ning arendajate meeskond oli sellele projektile kulutanud umbes kaks aastat. Sel ajal pandi paika j\u00e4rgmised \u00fclesanded:<\/p>\n<ul>\n<li>luua CI\/CD;<\/li>\n<li>teha arhitektuuri \u00fclevaatus;<\/li>\n<li>k\u00e4ivitada k\u00f5ik see tootmisse. <\/li>\n<\/ul>\n<p>\nIse rakendus oli mikroteenustel p\u00f5hinev, ning Python\/Django kood oli v\u00e4lja t\u00f6\u00f6tatud nullist ja kohe GCP-s. Mis puudutas sihtr\u00fchma, siis eeldati, et piirkondi on kaks \u2014 USA ja EL, ning liiklus jaotati \u00fclemaailmse koormuse tasandaja kaudu. K\u00f5ik t\u00f6\u00f6koormused ja arvutuskoormus t\u00f6\u00f6tasid Google Kubernetes Engine'is. <\/p>\n<p>Andmete osas oli 3 struktuuri:<\/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=\"Kuidas ellu j\u00e4\u00e4da SQL-p\u00f5hises maailmas 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e6e38b1d861b2871edf20fb09378b491.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00f5ib tekkida k\u00fcsimus, miks valiti Cloud SQL? T\u00f5ele au andes tekitab see k\u00fcsimus viimastel aastatel m\u00f5ningast kohmetust \u2014 tundub, et inimesed on hakanud rikkaid andmebaase h\u00e4benema, kuid siiski j\u00e4tkavad nad nende aktiivset kasutamist ;-). <\/p>\n<p>Mis puutub meie juhtumisse, siis Cloud SQL valiti j\u00e4rgmistel p\u00f5hjustel:<\/p>\n<ol>\n<li>Nagu mainitud, rakendust arendati Django abil, kus on mudel, mis n\u00e4itab p\u00fcsivaid andmeid SQL-andmebaasist Python (Django ORM) objektidesse.<\/li>\n<li>Kogu raamistik toetas \u00fcsna piiratud nimekirja andmebaasihalduss\u00fcsteemidest:<\/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>\nSeega valisime PostgreSQL selle nimekirja hulgast peamiselt intuitsiooni p\u00f5hjal (noh, mitte t\u00f5esti Oracle'i valida).<\/p>\n<p><b>Mida puudus:<\/b><\/p>\n<ul>\n<li>rakendus oli juurutatud vaid kahes piirkonnas ja plaanidesse lisandus kolmas (Aasia);<\/li>\n<li>Andmebaas asus P\u00f5hja-Ameerika piirkonnas (Iowa);<\/li>\n<li>tellija poolt oli muresid seoses v\u00f5imalike <b>juurdep\u00e4\u00e4su viivitustega<\/b> Euroopast ja Aasiast ning <b>teenuse katkestustega <\/b><b>andmebaasi talitluse katkestamise korral.<\/b> Kuigi Django saab t\u00f6\u00f6tada mitme andmebaasiga samal ajal ja jagada neid lugemiseks ja kirjutamiseks, ei olnud rakenduses v\u00e4ga palju kirjeid (\u00fcle 90% \u2014 lugemine). Seega, kui oleks v\u00f5imalik teha <\/li>\n<\/ul>\n<p>\nread-replika p\u00f5hiteabasal Euroopas ja Aasias <b>, oleks see kompromisslahendus. Mis siin siis nii keerulist on?<\/b>K\u00fcsimus seisnes selles, et tellija ei soovinud loobuda hallatud teenuste ja Cloud SQL kasutamisest. Kahjuks on Cloud SQL'i v\u00f5imalused praegusel hetkel piiratud. Cloud SQL toetab k\u00f5rge k\u00e4ttesaadavuse (HA) ja lugemisreplikatsioonide (RR) loomist, kuid sama RR toetatakse vaid \u00fches piirkonnas. Luues andmebaasi Ameerika piirkonnas, ei saa Cloud SQL-i vahendeid kasutades teha read-replikat Euroopa piirkonnas, kuigi PostgreSQL ise ei takista seda tegemast. Suhtlemine Google'i t\u00f6\u00f6tajatega ei toonud mingeid tulemusi ja l\u00f5ppes lubadustega stiilis \u201eme teame probleemist ja t\u00f6\u00f6tame selle kallal, \u00fchel p\u00e4eval k\u00fcsimus lahendatakse\u201c.<\/p>\n<p>Kui loetleda Cloud SQL-i v\u00f5imalusi kokkuv\u00f5tlikult, n\u00e4eb see v\u00e4lja umbes nii: <\/p>\n<p>1. K\u00f5rge k\u00e4ttesaadavus (HA):<\/p>\n<p><b>\u00fches piirkonnas;<\/b><\/p>\n<ul>\n<li>ketta replikatsiooni kaudu;<\/li>\n<li>PostgreSQL mehhanisme ei kasutata;<\/li>\n<li>v\u00f5imalik automaatne ja k\u00e4sitsi juhtimine \u2014 failover \/ failback;<\/li>\n<li>andmebaasi vahetamisel ei ole see k\u00e4ttesaadav mitmeid minuteid.<\/li>\n<li>2. Lugemisreplika (RR):<\/li>\n<\/ul>\n<p>\n<b>kuum varukoopia;<\/b><\/p>\n<ul>\n<li>ketta replikatsiooni kaudu;<\/li>\n<li>PostgreSQL voogedastuse replikatsioon.<\/li>\n<li>Lisaks on tavap\u00e4raselt tehnoloogia valimisel silmitsi mitmesuguste<\/li>\n<\/ul>\n<p>\npiirangutega, <b>tellija ei soovinud luua \u00fcksteise k\u00f5rval olevaid teenuseid ega kasutada IaaS-i, v\u00e4lja arvatud GKE kaudu;<\/b>:<\/p>\n<ul>\n<li>tellija ei soovinud juurutada ise teenindavat PostgreSQL \/ MySQL-i;<\/li>\n<li>klient ei soovinud self service PostgreSQL\/MySQL-i kasutusele v\u00f5tta;<\/li>\n<li>ja ja, Google Spanner sobis sobis h\u00e4sti, kui mitte tema hinna p\u00e4rast, kuigi Django ORM ei saa sellega t\u00f6\u00f6tada, aga asi on t\u00f5esti hea.<\/li>\n<\/ul>\n<p>\nArvestades olukorda, k\u00fcsis tellijalt k\u00fcsimus, mis j\u00e4i muljeid j\u00e4tma: <i>\u201eKas saate midagi sarnast teha, et see oleks nagu Google Spanner, aga t\u00f6\u00f6taks ka Django ORM-iga?\u201d<\/i><\/p>\n<h3>Lahenduse variant nr 0<\/h3>\n<p>\nEsimene m\u00f5te, mis p\u00e4he tuli:<\/p>\n<ul>\n<li>j\u00e4\u00e4da CloudSQL piiresse;<\/li>\n<li>regionite vahel mingit sisseehitatud replikatsiooni ei tule \u00fcldse;<\/li>\n<li>proovida \u00fchendada olemasolev Cloud SQL by PostgreSQL replikatsioon;<\/li>\n<li>kusagil ja kuidagi k\u00e4ivitada PostgreSQL instants, aga v\u00e4hemalt masterit mitte puudutada.<\/li>\n<\/ul>\n<p>\nKahjuks selgus, et seda ei saa teha, kuna puudub juurdep\u00e4\u00e4s hostile (see on \u00fcldse teises projektis) \u2014 pg_hba ja nii edasi, ning veel pole juurdep\u00e4\u00e4su superkasutajana.<\/p>\n<h3>Lahenduse variant nr 1<\/h3>\n<p>\nP\u00e4rast j\u00e4rgmisi m\u00f5tisklusi ja arvestades eelnevaid asjaolusid, muutus m\u00f5tteliin veidi:<\/p>\n<ul>\n<li>me \u00fcritame ikka j\u00e4\u00e4da CloudSQL piiresse, kuid liigume MySQL-i suunas, kuna Cloud SQL by MySQL-l on v\u00e4liseid mastereid, mis:<\/li>\n<\/ul>\n<p>\n\u2014 on proxy v\u00e4lisele MySQL-ile;<br \/>\n\u2014 n\u00e4eb v\u00e4lja nagu MySQL instants;<br \/>\n\u2014 on m\u00f5eldud andmete migreerimiseks teistest pilvedest v\u00f5i kohapealsest s\u00fcsteemist.<\/p>\n<p>Kuna MySQL replikatsiooni seadistamine ei vaja juurdep\u00e4\u00e4su hostile, t\u00f6\u00f6tab p\u00f5him\u00f5tteliselt k\u00f5ik, aga see oli v\u00e4ga ebausaldusv\u00e4\u00e4rne ja ebamugav. Ja kui edasi minna, siis oli see t\u00f5eliselt hirmus, kuna me k\u00f5ik struktuuri k\u00e4ivitasime terraformiga ja \u00e4kki selgus, et v\u00e4lised masterid ei ole terraformi toetatud. Jah, Google'il on CLI, aga mikski ei t\u00f6\u00f6tanud ka seal k\u00f5ik usaldusv\u00e4\u00e4rselt \u2014 m\u00f5ni kord loodi, m\u00f5ni kord ei loodud. V\u00f5ib-olla seet\u00f5ttu, et CLI on m\u00f5eldud andmete v\u00e4lise migreerimise jaoks, mitte replikatsioonide jaoks.<\/p>\n<p>N\u00fc\u00fcd on selge, et Cloud SQL ei sobi absoluutselt. Nagu \u00f6eldakse, tegime k\u00f5ik, mis v\u00f5imalik. <\/p>\n<h3>Lahenduse variant nr 2<\/h3>\n<p>\nKuna Cloud SQL piiresse j\u00e4\u00e4mine ei \u00f5nnestunud, p\u00fc\u00fcdsime formulida kompromisslahenduse n\u00f5uded. N\u00f5uded olid j\u00e4rgmised:<\/p>\n<ul>\n<li>t\u00f6\u00f6 Kuberneteses, maksimaalne ressursside ja Kubernetes (DCS, &#8230;) ning GCP (LB, &#8230;) v\u00f5imaluste kasutamine;<\/li>\n<li>\u00fckski kasutu kaubik pilve asjadest nagu HA proxy ei ole lubatud;<\/li>\n<li>v\u00f5imalus k\u00e4ivitada peamises piirkonnas HA PostgreSQL v\u00f5i MySQL; teistes piirkondades \u2014 HA p\u00f5hijoonest ja selle koopiast (usaldusv\u00e4\u00e4rsuse tagamiseks);<\/li>\n<li>multi master (oli vaja sellega siduda, kuid see ei olnud nii p\u00f5him\u00f5tteline)<\/li>\n<\/ul>\n<p>. <br \/>\nNende n\u00f5uete tulemusena ilmus l\u00f5puks silmapiirile p<b>sobivad variantid andmebaasidele ja pistikprogrammidele<\/b>:<\/p>\n<ul>\n<li>MySQL Galera;<\/li>\n<li>CockroachDB;<\/li>\n<li>PostgreSQL t\u00f6\u00f6riistad<\/li>\n<\/ul>\n<p>:<br \/>\n\u2014 pgpool-II;<br \/>\n\u2014 Patroni.<\/p>\n<h3>MySQL Galera<\/h3>\n<p>\nMySQL Galera tehnoloogia on v\u00e4lja t\u00f6\u00f6tatud ettev\u00f5tte Codership poolt ja see on plugin InnoDB jaoks. Omadused:<\/p>\n<ul>\n<li>mitu masterit;<\/li>\n<li>s\u00fcnkroonne replikatsioon;<\/li>\n<li>lugemine igast s\u00f5lmest;<\/li>\n<li>kirjutamine igasse s\u00f5lme;<\/li>\n<li>sisseehitatud HA mehhanism;<\/li>\n<li>on olemas Bitnami jaoks Helm chart.<\/li>\n<\/ul>\n<p><\/p>\n<h3>CockroachDB<\/h3>\n<p>\nKirjelduse kohaselt on see t\u00e4iesti fantastiline ja esindab end avatud allika projektina, mis on kirjutatud Go-s. Peamine osaleja on Cockroach Labs (asutasid Google'i endised t\u00f6\u00f6tajad). See relatsiooniline andmebaas on algselt loodud olema jaotatud (horisontaalse skaleeritavusega 'karbist v\u00e4lja') ja t\u00f5rkeotsing. Selle autorid on m\u00e4\u00e4ratlenud eesm\u00e4rgi '\u00fchendada SQL-i funktsionaalsuse rikkus horisontaalse k\u00e4ttesaadavusega, mis on NoSQL lahendustele tuttav.'<\/p>\n<p>Meeldiva boonusena \u2014 PostgreSQL-i \u00fchendusprotokolli tugi. <\/p>\n<h3>Pgpool<\/h3>\n<p>\nSee on PostgreSQL-i kohalduv kiht, tegelikult uus entiteet, mis v\u00f5tab enda alla k\u00f5ik \u00fchendused ja t\u00f6\u00f6tleb neid. Sellel on oma koormuse tasakaalustaja ja parser, see litsentseeritakse BSD litsentsi alusel. See pakub laialdasi v\u00f5imalusi, kuid n\u00e4eb v\u00e4lja veidi hirmutav, kuna uus entiteet v\u00f5iks tekitada mingeid lisaseiklusi. <\/p>\n<h3>Patronit<\/h3>\n<p>\nSee on viimane, millele ma t\u00e4helepanu p\u00f6\u00f6rasin, ja nagu selgus, mitte asjata. Patroni on avatud allika utiliit, mis p\u00f5him\u00f5tteliselt esindab Pythonis kirjutatud deemonit, mis v\u00f5imaldab automaatset PostgreSQL klastrite teenindamist erinevate replikatsioonit\u00fc\u00fcpide ja automaatse rollide vahetamisega. Asi osutus v\u00e4ga huvitavaks, kuna see integreerub h\u00e4sti kubernekidega ja ei too endaga kaasa uusi entiteete. <\/p>\n<h3>Kuidas me l\u00f5puks valisime<\/h3>\n<p>\nValik ei olnud kerge:<\/p>\n<ol>\n<li><b>CockroachDB <\/b>\u2014 lahe, aga hirmutav;<\/li>\n<li><b>MySQL Galera<\/b> \u2014 ka \u00fcsna hea, palju kasutatakse, kuid MySQL;<\/li>\n<li><b>Pgpool <\/b>\u2014 palju liigseid entiteete, halb integreerimine pilve ja K8s-iga;<\/li>\n<li><b>Patronit <\/b>\u2014 suurep\u00e4rane integreerimine K8s-iga, ei ole liigseid entiteete, integreerub h\u00e4sti GCP LB-ga.<\/li>\n<\/ol>\n<p>\nSeega langetati otsus Patroni kasuks. <\/p>\n<h3>J\u00e4reldused<\/h3>\n<p>\nOn aeg teha l\u00fchikokkuv\u00f5te. Jah, IT-infrastruktuuri maailm on oluliselt muutunud ja see on alles algus. Ja kui varem olid pilved lihtsalt teistsugune infrastruktuuri t\u00fc\u00fcp, siis n\u00fc\u00fcd on k\u00f5ik teistmoodi. Rohkemgi veel, pilvetooteid kerkib pidevalt esile ning neid v\u00f5ib-olla arendavad vaid pilved ja hiljem, algatajate poolt, viiakse need On-premises.<\/p>\n<p>Mis SQL-i kohta on SQL eluj\u00f5uline. See t\u00e4hendab, et PostgreSQL-i ja MySQL-i tuleb tunda ja osata nendega t\u00f6\u00f6tada, kuid veel olulisem on osata neid \u00f5igesti rakendada.<br \/>\n<br \/>Allikas: <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.1.1 - 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\/et\/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) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Kuidas SQL-andmebaas 21. sajandil ellu j\u00e4\u00e4b: pilved, Kubernetes ja PostgreSQL multimaster | ProHoster","description":"Tere, Habraskond. T\u00e4na algavad tunnid kursuse \"PostgreSQL\" esimeses grupis.","canonical_url":"https:\/\/prohoster.info\/et\/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":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/54366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54366"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54366\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}