Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Mhoroi, vagari veKhabrovsk. Makirasi ari muboka rekutanga rekosi anotanga nhasi "PostgreSQL". Panyaya iyi, tinoda kukuudza nezvekuti iyo yakavhurika webinar pakosi iyi yakaitika sei.

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Π’ chidzidzo chinotevera chakavhurwa takataura nezve matambudziko eSQL dhatabhesi anotarisana nawo munguva yemakore uye Kubernetes. Panguva imwecheteyo, takatarisa kuti SQL dhatabhesi inochinja sei uye inochinja pasi pesimba rematambudziko aya.

Webinar yakaitwa Valery Bezrukov, Google Cloud Practice Delivery Manager paEPAM Systems.

Apo miti yaive midiki...

Kutanga, ngatiyeukei kuti kusarudzwa kweDBMS kwakatanga sei pakupera kwezana remakore rapfuura. Zvisinei, izvi hazvizove zvakaoma, nokuti kusarudzwa kweDBMS mumazuva iwayo kwakatanga uye kwakaguma pangataura.

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Mukupera kwema90s uye ekutanga 2s, pakanga pasina sarudzo kana zvasvika kune maindasitiri scalable dhatabhesi. Ehe, pakanga paine IBM DBXNUMX, Sybase uye mamwe dhatabhesi akauya nekuenda, asi kazhinji ivo vaisaonekwa zvakanyanya kuseri kweOracle. Saizvozvo, hunyanzvi hwemainjiniya enguva idzodzo hwakanga hwakasungirirwa kune imwe sarudzo yaivepo.

Oracle DBA yaifanira kukwanisa:

  • isa Oracle Server kubva kune yekugovera kit;
  • gadzirisa Oracle Server:

  • init.ora;
  • muteereri.ora;

- kugadzira:

  • tablespaces;
  • zvirongwa;
  • vashandisi;

- ita backup uye dzorera;
- kuita ongororo;
- gadzirisa zvikumbiro zvisingaite.

Panguva imwecheteyo, pakanga pasina chakakosha chinodiwa kubva kuOracle DBA:

  • kukwanisa kusarudza iyo yakakwana DBMS kana imwe tekinoroji yekuchengetedza uye kugadzirisa data;
  • kupa kuwanikwa kwepamusoro uye kuchinjika scalability (iyi yanga isiri nguva dzose nyaya yeDBA);
  • ruzivo rwakanaka rwenzvimbo yezvidzidzo, zvivakwa, zvivakwa zvekushandisa, OS;
  • kurodha uye kurodha data, fambisa data pakati peDBMS dzakasiyana.

Kazhinji, kana tikataura nezvesarudzo mumazuva iwayo, inofanana nesarudzo muchitoro cheSoviet mukupera kwema80s:

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Nguva yedu

Kubva ipapo, hongu, miti yakakura, nyika yakachinja, uye yakava chinhu chakadai:

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Musika weDBMS wakachinjawo, sezvinogona kuonekwa zvakajeka kubva mushumo wekupedzisira kubva kuGartner:

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Uye pano zvinofanira kuonekwa kuti makore, ane mukurumbira ari kukura, akatora niche yavo. Kana tikaverenga zvakafanana Gartner chirevo, isu tichaona zvinotevera mhedziso:

  1. Vazhinji vatengi vari munzira yekufambisa maapplication kune gore.
  2. Tekinoroji nyowani dzinotanga kuoneka mugore uye hachisi chokwadi kuti vanozomboenda kune zvisiri-gore zvivakwa.
  3. Iyo pay-as-you-go pricing model yave yakajairika. Wese munhu anoda kubhadhara chete kune izvo zvavanoshandisa, uye ichi hachisi kana chimiro, asi chingori chirevo chechokwadi.

Chii zvino?

Nhasi tose tiri mugore. Uye mibvunzo inomuka kwatiri mibvunzo yesarudzo. Uye yakakura, kunyangwe tikangotaura nezve sarudzo yeDBMS tekinoroji muOn-nzvimbo fomati. Isu takabatawo masevhisi uye SaaS. Nokudaro, sarudzo inongowedzera kuoma gore negore.

Pamwe chete nemibvunzo yesarudzo, kune zvakare kuderedza zvinhu:

  • Π¦Π΅Π½Π°. Michina yakawanda ichiri kudhura mari;
  • hunyanzvi. Kana isu tichitaura nezve software yemahara, ipapo mubvunzo wehunyanzvi unomuka, sezvo software yemahara inoda kugona kwakakwana kubva kune vanhu vanoisa uye vanoishandisa;
  • zvinoshanda. Haasi ese masevhisi anowanikwa mugore uye akavakwa, toti, kunyangwe paPostgres imwechete, ane maficha akafanana nePostgres On-nzvimbo. Ichi chinhu chakakosha chinoda kuzivikanwa nekunzwisiswa. Uyezve, chinhu ichi chinova chakakosha kudarika ruzivo rwemamwe masimba akavanzika eDBMS imwechete.

Chii chinotarisirwa kubva kuDA/DE ikozvino:

  • kunzwisisa kwakanaka kwenzvimbo yezvidzidzo uye maumbirwo ekushandiswa;
  • kugona kusarudza zvakakodzera tekinoroji yeDBMS, uchifunga nezvebasa riripo;
  • kugona kusarudza nzira yakakwana yekushandisa tekinoroji yakasarudzwa mumamiriro ezvinhu ezvipimo zviripo;
  • kukwanisa kuita kuendesa data uye kutama;
  • kugona kuita uye kushandisa sarudzo dzakasarudzwa.

Pazasi muenzaniso zvichibva paGCP inoratidza kuti sarudzo yeimwe kana imwe tekinoroji yekushanda nedata inoshanda sei zvichienderana nechimiro chayo:

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Ndokumbira utarise kuti PostgreSQL haina kuisirwa mu schema, uye izvi imhaka yekuti yakavanzwa pasi peizwi Cloud SQL. Uye kana tasvika kuCloud SQL, tinoda kuita sarudzo zvakare:

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Izvo zvinofanirwa kucherechedzwa kuti sarudzo iyi haisi nguva dzose yakajeka, saka vanogadzira maapplication vanowanzo tungamirwa ne intuition.

Zvose:

  1. Paunoenda mberi, ndipo paunonyanya kudzvanya mubvunzo wesarudzo unova. Uye kunyangwe iwe ukatarisa kuGCP chete, masevhisi anogadziriswa uye SaaS, ipapo kumwe kutaurwa kweRDBMS kunoonekwa chete padanho rechina (uye Spanner iri padyo). Uyezve, sarudzo yePostgreSQL inoonekwa mudanho rechishanu, uye padivi payo pane zvakare MySQL neSQL Server, kureva. pane zvakawanda zvezvose, asi iwe unofanirwa kusarudza.
  2. Hatifaniri kukanganwa pamusoro pezvirambidzo pamusoro pemamiriro ezvinhu emiedzo. Chaizvoizvo munhu wese anoda Spanner, asi inodhura. Nekuda kweizvozvo, chikumbiro chakajairika chinotaridzika seizvi: "Ndokumbira utigadzirire Spanner asi nemutengo weCloud SQL, muri nyanzvi!"

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Tinofanira kuitei?

Pasina kutaura kuti ichokwadi chekupedzisira, ngatitaure zvinotevera:

Tinofanira kuchinja maitiro edu ekudzidza:

  • hapana chikonzero chekudzidzisa nzira iyo DBAs yaidzidziswa kare;
  • ruzivo rwechigadzirwa chimwe haruchakwani;
  • asi kuziva gumi nemaviri padanho reimwe hazvigoneke.

Iwe unofanirwa kuziva kwete chete uye kwete kuti yakawanda sei chigadzirwa, asi:

  • shandisa nyaya yekushandisa kwayo;
  • nzira dzakasiyana dzekutumira;
  • zvakanakira nekuipira nzira imwe neimwe;
  • zvakafanana uye zvimwe zvigadzirwa kuita sarudzo ine ruzivo uye yakakwana uye kwete kugara uchifarira chigadzirwa chaunoziva.

Iwe zvakare unofanirwa kukwanisa kutamisa data uye kunzwisisa iwo musimboti wekubatanidza neETL.

Nyaya chaiyo

Munguva pfupi yapfuura, zvaive zvakakodzera kugadzira backend ye mobile application. Nenguva iyo basa rakatanga pairi, backend yakanga yatogadzirwa uye yakanga yagadzirira kushandiswa, uye boka rekusimudzira rakapedza makore maviri pachirongwa ichi. Mabasa anotevera akaiswa:

  • kuvaka CI/CD;
  • kuongorora zvivakwa;
  • isa zvose mukushanda.

Iyo yekushandisa pachayo yaive microservices, uye iyo Python/Django kodhi yakagadziridzwa kubva kutanga uye yakananga muGCP. Kana vari vateereri vainangwa, zvaifungidzirwa kuti pachave nematunhu maviri - US neEU, uye traffic yakagoverwa kuburikidza neGlobal Load balancer. Ese Mashandiro uye compute basa rekuita raimhanya paGoogle Kubernetes Injini.

Kana iri iyo data, pakanga paine 3 zvimiro:

  • Cloud Storage;
  • Datastore;
  • Cloud SQL (PostgreSQL).

Maitiro ekupona sei SQL dhatabhesi muzana remakore rechi21: makore, Kubernetes uye PostgreSQL multimaster

Mumwe angashamisika kuti nei Cloud SQL yakasarudzwa? Kutaura chokwadi, mubvunzo wakadaro wakakonzera imwe mhando yekumbomira kusinganzwisisike mumakore achangopfuura - pane manzwiro ekuti vanhu vanonyara nezve hukama hwehukama, asi zvakadaro vanoramba vachizvishandisa ;-).

Kana iri nyaya yedu, Cloud SQL yakasarudzwa nekuda kwezvikonzero zvinotevera:

  1. Sezvambotaurwa, chishandiso chakagadzirwa pachishandiswa Django, uye ine modhi yekumepu inoenderera data kubva kuSQL dhatabhesi kuenda kuPython zvinhu (Django ORM).
  2. Iyo dhizaini pachayo yakatsigira runyoro rwakakwana rweDBMSs:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • oracles;
  • SQLite.

Saizvozvo, PostgreSQL yakasarudzwa kubva pane iyi runyorwa panzvimbo intuitively (zvakanaka, haisi Oracle yekusarudza, chaizvo).

Chii chakanga chisipo:

  • chikumbiro chakaiswa chete mumatunhu e2, uye 3rd yakaonekwa muzvirongwa (Asia);
  • Iyo dhatabhesi yaive munzvimbo yeNorth America (Iowa);
  • kune chikamu chemutengi pakanga paine kunetseka pamusoro pezvinogoneka kunonoka kuwana kubva kuEurope neAsia uye kuvhiringidza mubasa kana iri DBMS downtime.

Kunyangwe chokwadi chekuti Django pachayo inogona kushanda nemadhatabhesi akati wandei akafanana uye kupatsanura iwo mukuverenga nekunyora, pakanga pasina kunyanya kunyora mukushandisa (kupfuura 90% iri kuverenga). Uye kazhinji, uye kazhinji, kana zvaibvira kuita verenga-replica yenheyo huru muEurope neAsia, iyi ingava mhinduro yekubvumirana. Zvakanaka, chii chakaoma pamusoro pazvo?

Chinetso chaive chekuti mutengi aisada kurega kushandisa masevhisi akagadziriswa uye Cloud SQL. Uye kugona kweCloud SQL parizvino kushoma. Cloud SQL inotsigira Kuwanikwa Kwepamusoro (HA) uye Read Replica (RR), asi iyo RR imwe chete inotsigirwa munharaunda imwe chete. Sezvo wagadzira dhatabhesi mudunhu reAmerica, haugone kuita replica yekuverenga mudunhu reEuropean uchishandisa Cloud SQL, kunyangwe Postgres pachayo isingakutadzise kuita izvi. Kunyorerana nevashandi veGoogle hakuna kwainotungamira uye kwakapera nevimbiso muchimiro chekuti "tinoziva dambudziko uye tiri kushanda pariri, rimwe zuva nyaya ichagadziriswa."

Kana isu tikanyora kugona kweCloud SQL muchidimbu, inotaridzika seizvi:

1. Kuwanikwa kwepamusoro (HA):

  • munharaunda imwe;
  • kuburikidza nedhisiki replication;
  • PostgreSQL injini haisi kushandiswa;
  • otomatiki uye dhizaini kudzora zvinogoneka - failover / kukundikana;
  • Paunenge uchichinja, iyo DBMS haisipo kwemaminetsi akati wandei.

2. Verenga Replica (RR):

  • munharaunda imwe;
  • inopisa standby;
  • PostgreSQL yekufambisa kudzokorora.

Mukuwedzera, sechinyakare, pakusarudza tekinoroji iwe unogara uchitarisana nevamwe zvirambidzo:

  • mutengi haana kuda kugadzira masangano uye kushandisa IaaS, kunze kweGKE;
  • mutengi haafarire kuendesa self service PostgreSQL/MySQL;
  • Zvakanaka, kazhinji, Google Spanner yaizonyatsokodzera dai isiri yemutengo wayo, zvisinei, Django ORM haigone kushanda nayo, asi chinhu chakanaka.

Tichifunga nezvemamiriro ezvinhu, mutengi akagamuchira mubvunzo wekutevera: "Unogona here kuita chimwe chinhu chakafanana kuti zviite seGoogle Spanner, asi zvakare kushanda neDjango ORM?"

Mhinduro sarudzo Nhamba 0

Chinhu chekutanga chakauya mupfungwa:

  • gara mukati meCloudSQL;
  • hapazovi neakavakirwa-mukati kudzokorora pakati pematunhu mune chero chimiro;
  • edza kubatanidza replica kune iripo Cloud SQL nePostgreSQL;
  • tanga iyo PostgreSQL chiitiko kumwe uye neimwe nzira, asi zvirinani usabata tenzi.

Maiwe, zvakazoitika kuti izvi hazvigone kuitwa, nekuti hapana mukana kune muenzi (iri mune imwe purojekiti zvachose) - pg_hba uye zvichingodaro, uye hapana zvakare kupinda pasi pesuperuser.

Mhinduro sarudzo Nhamba 1

Mushure mekuwedzera kufungisisa uye kufunga nezvemamiriro ezvinhu apfuura, chitima chepfungwa chakachinja zvishoma:

  • Tichiri kuedza kugara mukati meCloudSQL, asi tiri kuchinja kuMySQL, nokuti Cloud SQL neMySQL ine tenzi wekunze, iyo:

- is a proxy yekunze MySQL;
- inotaridzika senge MySQL muenzaniso;
- yakagadzirirwa kutamisa data kubva kune mamwe makore kana On-nzvimbo.

Sezvo kumisikidza MySQL kudzokorodza hakudi kuwana kune muenzi, mumutemo zvese zvakashanda, asi zvaive zvisina kugadzikana uye zvisingaite. Uye patakaenda mberi, zvakava zvinotyisa, nokuti takatumira chimiro chese ne terraform, uye pakarepo zvakazoitika kuti tenzi wekunze haana kutsigirwa ne terraform. Hongu, Google ine CLI, asi nekuda kwechimwe chikonzero zvese zvakashanda pano nguva nenguva - dzimwe nguva inogadzirwa, dzimwe nguva haina kusikwa. Zvichida nekuti iyo CLI yakagadzirirwa yekunze data kutama, uye kwete replicas.

Chaizvoizvo, panguva ino zvakava pachena kuti Cloud SQL haina kukodzera zvachose. Sezvavanotaura, takaita zvose zvataigona.

Mhinduro sarudzo Nhamba 2

Sezvo zvaisaita kuti tigare mukati me Cloud SQL framework, takaedza kugadzira zvinodiwa zvekugadzirisa mhinduro. Zvinodiwa zvakazove zvinotevera:

  • shanda muKubernetes, kushandiswa kwakanyanya kwezvinhu uye kugona kweKubernetes (DCS, ...) uye GCP (LB, ...);
  • kushaya ballast kubva muboka rezvinhu zvisingakoshi mugore seHA proxy;
  • kugona kumhanya PostgreSQL kana MySQL munzvimbo huru yeHA; mune mamwe matunhu - HA kubva kuRR yedunhu guru pamwe nekopi yayo (yekuvimbika);
  • multi master (ini ndaisada kumubata, asi yanga isina kunyanya kukosha)

.
Nekuda kwezvinodikanwa izvi, pDBMS yakakodzera uye inosunga sarudzo:

  • MySQL Galera;
  • CockroachDB;
  • PostgreSQL zvishandiso

:
- pgpool-II;
β€” Patroni.

MySQL Galera

MySQL Galera tekinoroji yakagadzirwa neCodership uye iplugin yeInnoDB. Peculiarities:

  • multi master;
  • synchronous replication;
  • kuverenga kubva chero node;
  • kurekodha kune chero node;
  • yakavakirwa-mukati HA michina;
  • Pane Helm chati kubva kuBitnami.

JongweDB

Zvinoenderana nerondedzero, chinhu chacho ibhomba chairo uye ipurojekiti yakavhurika yakanyorwa muGo. Mutori wechikamu mukuru iCockroach Labs (yakavambwa nevanhu vanobva kuGoogle). Iyi yehukama DBMS yakatanga kugadzirwa kuti igoverwe (ine yakatwasuka kuyera kunze kwebhokisi) uye inoshivirira kukanganisa. Vanyori vayo kubva kukambani vakatsanangura chinangwa che "kubatanidza hupfumi hweSQL mashandiro pamwe neyakachinjika kuwanikwa kunozivikanwa kune NoSQL mhinduro."

Bhonasi yakanaka inotsigira iyo post-gress yekubatanidza protocol.

Pgpool

Uku ndiko kuwedzera kuPostgreSQL, kutaura zvazviri, chinhu chitsva chinotora zvese zvinongedzo uye nekuzvigadzirisa. Iyo ine yayo inoremedza balancer uye parser, ine rezinesi pasi peiyo BSD rezinesi. Inopa mikana yakawanda, asi inotaridzika inotyisa, nekuti kuvapo kwechinhu chitsva kunogona kuve kunobva kune mamwe madhisheni.

Patroni

Ichi ndicho chinhu chekupedzisira maziso angu akawira pamusoro, uye, sezvazvakazoitika, kwete pasina. Patroni ndeye yakavhurika sosi yekushandisa, inova iri Python daemon iyo inokutendera iwe kuti uchengetedze otomatiki PostgreSQL masumbu nemhando dzakasiyana dzekudzokorora uye otomatiki basa rekuchinja. Chinhu chacho chakazove chinonakidza kwazvo, sezvo ichibatanidza zvakanaka necuber uye haina kuunza chero masangano matsva.

Chii chawakasarudza pakupedzisira?

Sarudzo yanga isiri nyore:

  1. JongweDB - moto, asi rima;
  2. MySQL Galera - zvakare kwete yakaipa, inoshandiswa munzvimbo dzakawanda, asi MySQL;
  3. Pgpool - zvakawanda zvisingakoshi masangano, saka-so kubatanidzwa negore uye K8s;
  4. Patroni - yakanakisa kubatanidzwa neK8s, hapana zvisingakoshi masangano, inobatanidza zvakanaka neGCP LB.

Nokudaro, sarudzo yakawira pana Patroni.

zvakawanikwa

Yasvika nguva yekupfupisa muchidimbu. Hongu, nyika yeIT yezvivakwa yachinja zvakanyanya, uye ichi chingori kutanga. Uye kana makore asati apfuura angori imwe mhando yezvivakwa, zvino zvese zvasiyana. Uyezve, zvitsva mumakore zvinogara zvichionekwa, zvichaonekwa uye, zvichida, zvichaonekwa chete mumakore uye chete ipapo, nekuedza kwekutanga, zvichazoendeswa kune-On-premises.

Kana iri SQL, SQL ichararama. Izvi zvinoreva kuti unofanirwa kuziva PostgreSQL neMySQL uye kukwanisa kushanda navo, asi chinonyanya kukosha kugona kuzvishandisa nemazvo.

Source: www.habr.com

Voeg