Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Nyob zoo, cov neeg nyob hauv Khabrovsk. Cov chav kawm hauv thawj pab pawg ntawm chav kawm pib hnub no "PostgreSQL". Hais txog qhov no, peb xav qhia koj txog yuav ua li cas qhib webinar ntawm chav kawm no tau tshwm sim.

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Π’ tom ntej no qhib zaj lus qhia peb tau tham txog cov teeb meem SQL databases ntsib nyob rau hauv lub era ntawm huab thiab Kubernetes. Tib lub sijhawm, peb tau saib yuav ua li cas SQL databases hloov pauv thiab hloov pauv raws li kev cuam tshuam ntawm cov teeb meem no.

Lub webinar tau tuav Valery Bezrukov, Google Cloud Practice Delivery Manager ntawm EPAM Systems.

Thaum cov ntoo me me ...

Ua ntej, cia peb nco ntsoov tias qhov kev xaiv ntawm DBMS pib li cas thaum kawg ntawm lub xyoo pua xeem. Txawm li cas los xij, qhov no yuav tsis nyuaj, vim tias qhov kev xaiv ntawm DBMS nyob rau hauv cov hnub pib thiab xaus Oracle.

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Nyob rau hauv lub lig 90s thiab thaum ntxov 2s, nws yeej tsis muaj kev xaiv thaum nws los txog rau industrial scalable databases. Yog lawm, muaj IBM DBXNUMX, Sybase thiab qee qhov chaw khaws ntaub ntawv uas tuaj thiab mus, tab sis feem ntau lawv tsis pom zoo tawm tsam keeb kwm ntawm Oracle. Yog li ntawd, cov kev txawj ntawm engineers ntawm lub sij hawm ntawd tau qee yam khi rau tib qho kev xaiv uas muaj.

Oracle DBA yuav tsum muaj peev xwm:

  • nruab Oracle Server los ntawm cov khoom siv faib khoom;
  • configure Oracle Server:

  • init.ora;
  • listener.ora;

- tsim:

  • rooj zaum;
  • tswv yim;
  • cov neeg siv;

- ua backup thiab restore;
- ua kev soj ntsuam;
- deal nrog suboptimal thov.

Tib lub sijhawm, tsis muaj qhov tshwj xeeb xav tau los ntawm Oracle DBA:

  • tuaj yeem xaiv qhov zoo tshaj plaws DBMS lossis lwm yam thev naus laus zis rau khaws cia thiab ua cov ntaub ntawv;
  • muab siab muaj thiab kab rov tav scalability (qhov no tsis yog ib qho teeb meem DBA);
  • kev paub zoo ntawm thaj chaw kawm, infrastructure, daim ntawv thov architecture, OS;
  • load thiab unload cov ntaub ntawv, migrate cov ntaub ntawv ntawm txawv DBMSs.

Feem ntau, yog tias peb tham txog kev xaiv nyob rau hauv cov hnub ntawd, nws zoo li qhov kev xaiv hauv lub khw hauv Soviet thaum 80s lig:

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Peb lub sijhawm

Txij thaum ntawd los, tau kawg, cov ntoo tau loj hlob, lub ntiaj teb tau hloov pauv, thiab nws tau los ua ib yam dab tsi zoo li no:

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Lub lag luam DBMS kuj tau hloov pauv, raws li tuaj yeem pom meej los ntawm daim ntawv tshaj tawm tshiab los ntawm Gartner:

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Thiab ntawm no nws yuav tsum tau muab sau tseg tias huab, uas nws muaj koob meej yog loj hlob, tau nyob lawv niche. Yog tias peb nyeem tib daim ntawv qhia Gartner, peb yuav pom cov lus xaus hauv qab no:

  1. Ntau tus neeg siv khoom nyob ntawm txoj hauv kev mus rau kev hloov daim ntawv thov mus rau huab.
  2. Cov thev naus laus zis tshiab tau tshwm sim thawj zaug hauv huab thiab nws tsis yog qhov tseeb tias lawv yuav puas tau txav mus rau qhov chaw tsis yog huab.
  3. Tus qauv them nqi raws li koj-mus tau dhau los ua qhov qub. Txhua leej txhua tus xav them nyiaj tsuas yog rau qhov lawv siv, thiab qhov no tsis yog ib qho qauv, tab sis tsuas yog ib nqe lus ntawm qhov tseeb.

Tam sim no dab tsi?

Niaj hnub no peb sawv daws nyob hauv huab. Thiab cov lus nug uas tshwm sim rau peb yog cov lus nug ntawm kev xaiv. Thiab nws yog qhov loj heev, txawm tias peb tham txog kev xaiv ntawm DBMS thev naus laus zis hauv hom On-premises. Peb kuj muaj kev tswj xyuas thiab SaaS. Yog li, kev xaiv tsuas yog nyuaj dua txhua xyoo.

Nrog rau cov lus nug ntawm kev xaiv, kuj muaj txwv yam:

  • nqi. Ntau yam thev naus laus zis tseem raug nqi nyiaj;
  • txuj ci. Yog tias peb tab tom tham txog cov software dawb, ces cov lus nug ntawm kev txawj ntse tshwm sim, txij li software dawb yuav tsum muaj peev xwm txaus los ntawm cov neeg siv thiab ua haujlwm;
  • ua haujlwm. Tsis yog txhua qhov kev pabcuam uas muaj nyob rau hauv huab thiab tsim, hais, txawm nyob rau tib lub Postgres, muaj cov yam ntxwv zoo ib yam li Postgres On-premises. Qhov no yog ib qho tseem ceeb uas yuav tsum paub thiab to taub. Tsis tas li ntawd, qhov no tseem ceeb tshaj qhov kev paub ntawm qee lub peev xwm zais ntawm ib leeg DBMS.

Qhov xav tau los ntawm DA / DE tam sim no:

  • kev nkag siab zoo ntawm cov kev kawm thiab kev siv architecture;
  • muaj peev xwm xaiv qhov tsim nyog DBMS thev naus laus zis, suav nrog kev ua haujlwm ntawm tes;
  • muaj peev xwm xaiv txoj kev zoo rau kev siv cov cuab yeej xaiv hauv cov ntsiab lus ntawm cov kev txwv uas twb muaj lawm;
  • muaj peev xwm ua cov ntaub ntawv hloov chaw thiab tsiv teb tsaws;
  • muaj peev xwm los siv thiab khiav cov kev daws teeb meem xaiv.

Hauv qab no piv txwv raws li GCP ua qauv qhia yuav ua li cas kev xaiv ntawm ib lossis lwm lub tshuab rau kev ua haujlwm nrog cov ntaub ntawv ua haujlwm nyob ntawm nws cov qauv:

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Thov nco ntsoov tias PostgreSQL tsis suav nrog hauv schema, thiab qhov no yog vim nws tau muab zais rau hauv cov lus siv. Huab SQL. Thiab thaum peb mus rau Cloud SQL, peb yuav tsum xaiv dua:

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Nws yuav tsum tau muab sau tseg tias qhov kev xaiv no tsis yog ib txwm meej, yog li cov neeg tsim daim ntawv thov feem ntau coj los ntawm kev nkag siab.

Tag nrho:

  1. Qhov ntxiv koj mus, qhov ntau nias cov lus nug ntawm kev xaiv ua. Thiab txawm tias koj tsuas saib ntawm GCP, cov kev pabcuam tswj hwm thiab SaaS, qee qhov hais txog RDBMS tsuas yog tshwm sim ntawm qib 4 (thiab muaj Spanner nyob ze). Ntxiv rau, qhov kev xaiv ntawm PostgreSQL tshwm nyob rau qib 5, thiab ib sab ntawm nws kuj tseem muaj MySQL thiab SQL Server, uas yog muaj ntau txhua yam, tab sis koj yuav tsum xaiv.
  2. Peb yuav tsum tsis txhob hnov ​​​​qab txog kev txwv tsis pub tawm tsam keeb kwm ntawm kev ntxias. Yeej txhua tus xav tau Spanner, tab sis nws kim heev. Yog li ntawd, ib qho kev thov ib txwm zoo li no: "Thov ua peb tus Spanner tab sis rau tus nqi ntawm Huab SQL, koj yog cov kws tshaj lij!"

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Peb yuav ua li cas?

Yog tsis tau lees tias yog qhov tseeb kawg, cia peb hais cov hauv qab no:

Peb yuav tsum hloov peb txoj hauv kev rau kev kawm:

  • tsis muaj qhov tseem ceeb hauv kev qhia txoj kev DBAs tau qhia ua ntej;
  • kev paub txog ib yam khoom tsis txaus lawm;
  • tab sis kev paub kaum tawm ntawm qib ntawm ib qho yog ua tsis tau.

Koj yuav tsum paub tsis yog thiab tsis yog ntau npaum li cas cov khoom, tab sis:

  • siv cov ntaub ntawv ntawm nws daim ntawv thov;
  • txoj kev xa khoom sib txawv;
  • qhov zoo thiab qhov tsis zoo ntawm txhua txoj kev;
  • zoo sib xws thiab lwm yam khoom los ua kom paub thiab pom kev xaiv thiab tsis yog ib txwm nyiam ntawm cov khoom paub.

Koj kuj yuav tsum muaj peev xwm hloov tau cov ntaub ntawv thiab nkag siab txog cov hauv paus ntsiab lus ntawm kev koom ua ke nrog ETL.

Case tiag

Yav dhau los tsis ntev los no, nws yog ib qho tsim nyog los tsim ib qho backend rau daim ntawv thov mobile. Thaum lub sij hawm ua hauj lwm pib ntawm nws, lub backend twb tau tsim thiab npaj rau kev siv, thiab pab neeg tsim kho siv li ob xyoos rau qhov project no. Cov haujlwm hauv qab no tau teeb tsa:

  • tsim CI/CD;
  • tshuaj xyuas cov architecture;
  • muab nws tag nrho rau hauv kev ua haujlwm.

Daim ntawv thov nws tus kheej yog microservices, thiab Python / Django code tau tsim los ntawm kos thiab ncaj qha hauv GCP. Raws li rau lub hom phiaj cov neeg tuaj saib, nws tau xav tias yuav muaj ob cheeb tsam - US thiab EU, thiab cov tsheb thauj mus los tau muab faib los ntawm Ntiaj Teb Load balancer. Txhua Qhov Chaw Ua Haujlwm thiab suav ua haujlwm tau khiav ntawm Google Kubernetes Cav.

Raws li cov ntaub ntawv, muaj 3 cov qauv:

  • Huab Cia;
  • Datastore;
  • Cloud SQL (PostgreSQL).

Yuav ua li cas kom ciaj sia SQL database nyob rau hauv lub xyoo pua 21st: huab, Kubernetes thiab PostgreSQL multimaster

Ib tug yuav xav paub yog vim li cas Cloud SQL raug xaiv? Los qhia qhov tseeb, cov lus nug no tau ua rau qee yam tsis txaus ntseeg ncua nyob rau xyoo tas los no - muaj kev xav tias tib neeg tau txaj muag txog kev sib raug zoo databases, tab sis txawm li cas los xij lawv tseem siv lawv ;-).

Raws li peb cov ntaub ntawv, Cloud SQL tau raug xaiv rau cov laj thawj hauv qab no:

  1. Raws li tau hais, daim ntawv thov tau tsim los siv Django, thiab nws muaj ib qho qauv rau kev kos cov ntaub ntawv tsis tu ncua los ntawm SQL database rau Python cov khoom (Django ORM).
  2. Lub moj khaum nws tus kheej tau txhawb nqa cov npe ncaj ncees ntawm DBMSs:

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

Raws li, PostgreSQL raug xaiv los ntawm cov npe no theej intuitively (zoo, nws tsis yog Oracle xaiv, tiag tiag).

Dab tsi yog ploj lawm:

  • daim ntawv thov raug xa mus rau hauv 2 cheeb tsam nkaus xwb, thiab ib qho thib 3 tau tshwm sim hauv cov phiaj xwm (Asia);
  • Cov ntaub ntawv nyob rau hauv North American cheeb tsam (Iowa);
  • ntawm ib feem ntawm cov neeg siv khoom muaj kev txhawj xeeb txog qhov ua tau nkag mus qeeb los ntawm Europe thiab Asia thiab cuam ​​tshuam hauv kev pabcuam thaum DBMS downtime.

Txawm tias muaj tseeb tias Django nws tus kheej tuaj yeem ua haujlwm nrog ntau cov ntaub ntawv sib txuas thiab faib lawv rau hauv kev nyeem ntawv thiab sau ntawv, tsis muaj kev sau ntau npaum li cas hauv daim ntawv thov (ntau dua 90% yog nyeem). Thiab feem ntau, thiab feem ntau, yog tias ua tau nyeem-replica ntawm lub hauv paus tseem ceeb hauv Europe thiab Asia, qhov no yuav yog ib qho kev daws teeb meem. Zoo, dab tsi yog qhov nyuaj txog nws?

Qhov nyuaj yog tias tus neeg siv khoom tsis xav tso tseg siv cov kev pabcuam tswj hwm thiab huab SQL. Thiab lub peev xwm ntawm Cloud SQL tam sim no txwv. Huab SQL txhawb nqa siab muaj (HA) thiab Nyeem Replica (RR), tab sis tib RR tsuas yog txhawb nqa hauv ib cheeb tsam. Tau tsim cov ntaub ntawv hauv cheeb tsam Asmeskas, koj tsis tuaj yeem ua tus nyeem ntawv replica hauv cheeb tsam European siv Cloud SQL, txawm hais tias Postgres nws tus kheej tsis tiv thaiv koj los ntawm kev ua qhov no. Kev sib tham nrog Google cov neeg ua haujlwm tau coj mus rau qhov twg thiab xaus nrog cov lus cog tseg hauv cov qauv ntawm "peb paub qhov teeb meem thiab tab tom ua haujlwm rau nws, ib hnub qhov teeb meem yuav raug daws."

Yog tias peb sau lub peev xwm ntawm Cloud SQL luv luv, nws yuav zoo li no:

1. Muaj ntau (HA):

  • nyob rau hauv ib cheeb tsam;
  • ntawm disk replication;
  • PostgreSQL cav tsis siv;
  • tsis siv neeg thiab phau ntawv tswj tau - poob / poob;
  • Thaum hloov, DBMS tsis muaj nyob rau ob peb feeb.

2. Nyeem Replica (RR):

  • nyob rau hauv ib cheeb tsam;
  • kub standby;
  • PostgreSQL streaming replication.

Tsis tas li ntawd, raws li kev cai, thaum xaiv ib lub tshuab koj yeej ib txwm ntsib nrog ib co txwv:

  • tus neeg siv khoom tsis xav tsim cov koom haum thiab siv IaaS, tsuas yog los ntawm GKE;
  • tus neeg siv khoom tsis xav siv tus kheej kev pabcuam PostgreSQL/MySQL;
  • Zoo, feem ntau, Google Spanner yuav zoo heev yog tias nws tsis yog rau nws tus nqi, txawm li cas los xij, Django ORM tsis tuaj yeem ua haujlwm nrog nws, tab sis nws yog qhov zoo.

Xav txog qhov xwm txheej, tus neeg siv khoom tau txais cov lus nug nram qab no: "Koj puas tuaj yeem ua qee yam zoo sib xws kom nws zoo li Google Spanner, tab sis kuj ua haujlwm nrog Django ORM?"

Txoj kev xaiv No. 0

Thawj yam uas los rau hauv siab:

  • nyob hauv CloudSQL;
  • yuav tsis muaj qhov sib txuas ntawm cov cheeb tsam hauv txhua daim ntawv;
  • sim xa ib qho kev hloov pauv rau huab SQL uas twb muaj lawm los ntawm PostgreSQL;
  • tso ib qho piv txwv PostgreSQL qhov twg thiab qee qhov, tab sis tsawg kawg tsis txhob kov tus tswv.

Alas, nws tau muab tawm tias qhov no tsis tuaj yeem ua tiav, vim tias tsis muaj kev nkag mus rau tus tswv tsev (nws yog nyob rau hauv ib txoj haujlwm sib txawv) - pg_hba thiab lwm yam, thiab tseem tsis muaj kev nkag mus rau hauv superuser.

Txoj kev xaiv No. 1

Tom qab xav txog ntxiv thiab coj mus rau hauv cov xwm txheej dhau los, lub tsheb ciav hlau ntawm kev xav hloov qee yam:

  • Peb tseem tab tom sim nyob hauv CloudSQL, tab sis peb tab tom hloov mus rau MySQL, vim tias Huab SQL los ntawm MySQL muaj tus tswv sab nraud, uas:

- yog tus tso npe rau sab nraud MySQL;
- zoo li MySQL piv txwv;
- tsim los rau kev tsiv teb tsaws cov ntaub ntawv los ntawm lwm cov huab lossis On-premises.

Txij li thaum teeb tsa MySQL replication tsis tas yuav nkag mus rau tus tswv tsev, hauv txoj cai txhua yam ua haujlwm, tab sis nws tsis ruaj khov thiab tsis yooj yim. Thiab thaum peb mus ntxiv, nws tau dhau los ua txaus ntshai, vim tias peb tau siv tag nrho cov qauv nrog terraform, thiab tam sim ntawd nws tig tawm tias tus tswv sab nraud tsis tau txais kev txhawb nqa los ntawm terraform. Yog lawm, Google muaj CLI, tab sis rau qee qhov laj thawj txhua yam ua haujlwm ntawm no txhua lub sijhawm tam sim no - qee zaum nws tau tsim, qee zaum nws tsis tsim. Tej zaum vim tias CLI tau tsim los rau cov ntaub ntawv tawm txawv teb chaws, thiab tsis yog rau cov khoom siv rov ua dua.

Qhov tseeb, ntawm qhov no nws tau pom tseeb tias Cloud SQL tsis haum txhua. Raws li lawv hais, peb tau ua txhua yam peb ua tau.

Txoj kev xaiv No. 2

Txij li thaum nws tsis tuaj yeem nyob hauv Cloud SQL lub moj khaum, peb sim tsim cov cai rau kev daws teeb meem. Cov kev xav tau dhau los ua cov hauv qab no:

  • ua haujlwm hauv Kubernetes, kev siv ntau tshaj plaws ntawm cov peev txheej thiab muaj peev xwm ntawm Kubernetes (DCS, ...) thiab GCP (LB, ...);
  • tsis muaj ballast los ntawm ib pawg ntawm cov khoom tsis tsim nyog hauv huab zoo li HA npe;
  • muaj peev xwm khiav PostgreSQL lossis MySQL hauv cheeb tsam HA loj; nyob rau hauv lwm cheeb tsam - HA los ntawm RR ntawm cheeb tsam loj ntxiv rau nws daim ntawv (rau kev ntseeg siab);
  • multi master (Kuv tsis xav tiv tauj nws, tab sis nws tsis tseem ceeb heev)

.
Raws li cov kev xav tau no, phaum DBMS thiab cov kev xaiv khi:

  • MySQL Galera;
  • CockroachDB;
  • Cov cuab yeej PostgreSQL

:
- pgpool-II;
β€” Patroni.

MySQL Galera

MySQL Galera thev naus laus zis tau tsim los ntawm Codership thiab yog lub plugin rau InnoDB. Peculiarities:

  • ntau tus tswv;
  • synchronous replication;
  • nyeem los ntawm ib qho ntawm cov node;
  • kaw rau tej node;
  • built-in HA mechanism;
  • Muaj ib daim ntawv qhia Helm los ntawm Bitnami.

CwjmuajDB

Raws li cov lus piav qhia, qhov khoom yog lub foob pob tiag tiag thiab yog qhov qhib qhov project sau hauv Go. Cov neeg koom nrog tseem ceeb yog Cockroach Labs (tsim los ntawm cov neeg los ntawm Google). Qhov kev sib raug zoo DBMS no yog tsim los muab faib (nrog rau kab rov tav scaling tawm ntawm lub thawv) thiab ua txhaum-tolerant. Nws cov kws sau ntawv los ntawm lub tuam txhab tau hais txog lub hom phiaj ntawm "sib txuas cov kev nplua nuj ntawm SQL kev ua haujlwm nrog cov kab rov tav nkag tau paub txog NoSQL cov kev daws teeb meem."

Ib qho txiaj ntsig zoo yog kev txhawb nqa rau cov txheej txheem kev sib txuas tom qab-gress.

Pgpool

Qhov no yog ib qho ntxiv rau PostgreSQL, qhov tseeb, qhov chaw tshiab uas siv txhua qhov kev sib txuas thiab ua tiav lawv. Nws muaj nws tus kheej load balancer thiab parser, muaj ntawv tso cai raws li BSD daim ntawv tso cai. Nws muab sijhawm txaus, tab sis zoo li txaus ntshai me ntsis, vim tias muaj lub chaw tshiab tuaj yeem dhau los ua qhov chaw ntawm qee qhov kev lom zem ntxiv.

Patroni

Qhov no yog qhov kawg uas kuv ob lub qhov muag poob rau, thiab, raws li nws muab tawm, tsis nyob rau hauv vain. Patroni yog qhov qhib qhov chaw siv hluav taws xob, uas yog qhov tseem ceeb Python daemon uas tso cai rau koj tuaj yeem tswj hwm PostgreSQL pawg nrog ntau hom kev rov ua dua thiab hloov pauv tsis siv neeg lub luag haujlwm. Qhov khoom tau nthuav tawm heev, vim nws koom ua ke zoo nrog lub cuber thiab tsis qhia txog qhov chaw tshiab.

Koj xaiv dab tsi thaum kawg?

Qhov kev xaiv tsis yooj yim:

  1. CwjmuajDB - hluav taws, tab sis tsaus;
  2. MySQL Galera - kuj tsis phem, nws yog siv nyob rau hauv ntau qhov chaw, tab sis MySQL;
  3. Pgpool - ntau qhov chaw tsis tsim nyog, yog li kev koom ua ke nrog huab thiab K8s;
  4. Patroni - Kev koom ua ke zoo heev nrog K8s, tsis muaj cov koom haum tsis tsim nyog, koom ua ke zoo nrog GCP LB.

Yog li, qhov kev xaiv poob rau Patroni.

tshawb pom

Nws yog lub sijhawm los sau luv luv. Yog lawm, lub ntiaj teb ntawm IT infrastructure tau hloov pauv loj, thiab qhov no yog qhov pib xwb. Thiab yog tias ua ntej huab cua tsuas yog lwm hom kev tsim kho vaj tse, tam sim no txhua yam txawv. Ntxiv mus, kev tsim kho tshiab hauv huab tau tshwm sim tas li, lawv yuav tshwm sim thiab, tej zaum, lawv yuav tshwm sim hauv huab nkaus xwb thiab tsuas yog tom qab ntawd, los ntawm kev siv zog ntawm kev pib ua haujlwm, lawv puas yuav raug xa mus rau On-premises.

Raws li rau SQL, SQL yuav nyob. Qhov no txhais tau hais tias koj yuav tsum paub PostgreSQL thiab MySQL thiab tuaj yeem ua haujlwm nrog lawv, tab sis tseem ceeb tshaj yog kom siv tau kom raug.

Tau qhov twg los: www.hab.com

Ntxiv ib saib