Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Halo, luchd-còmhnaidh Khabrovsk. Bidh clasaichean sa chiad bhuidheann den chùrsa a’ tòiseachadh an-diugh "PostgreSQL". A thaobh seo, bu mhath leinn innse dhut mu mar a chaidh an webinar fosgailte air a’ chùrsa seo a chumail.

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

В an ath leasan fosgailte bhruidhinn sinn mu na dùbhlain a tha mu choinneamh stòran-dàta SQL ann an àm nan sgòthan agus Kubernetes. Aig an aon àm, choimhead sinn air mar a bhios stòran-dàta SQL ag atharrachadh agus a’ gluasad fo bhuaidh nan dùbhlain sin.

Chaidh an webinar a chumail Valery Bezrukov, Manaidsear Lìbhrigeadh Cleachdadh Google Cloud aig EPAM Systems.

Nuair a bha na craobhan beag...

An toiseach, cuimhnicheamaid mar a thòisich an roghainn DBMS aig deireadh na linn mu dheireadh. Ach, cha bhith seo duilich, oir thòisich agus chrìochnaich taghadh DBMS anns na làithean sin Oracle.

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Aig deireadh nan 90n agus tràth sna 2n, cha mhòr nach robh roghainn ann nuair a thig e gu stòran-dàta scalable gnìomhachais. Bha, bha IBM DBXNUMX, Sybase agus cuid de stòran-dàta eile a thàinig agus a 'dol, ach san fharsaingeachd cha robh iad cho follaiseach an aghaidh cùl-raon Oracle. Mar sin, bha sgilean innleadairean aig na h-amannan sin ann an dòigh air choreigin ceangailte ris an aon roghainn a bha ann.

Dh'fheumadh Oracle DBA a bhith comasach air:

  • stàlaich Oracle Server bhon ghoireas sgaoilidh;
  • rèiteachadh Oracle Server:

  • init.ora;
  • èisdeachd.ora;

- cruthaich:

  • bùird;
  • sgeamaichean;
  • luchd-cleachdaidh;

- dèan cùl-taic agus ath-nuadhachadh;
- sgrùdadh a dhèanamh;
- dèiligeadh ri iarrtasan suboptimal.

Aig an aon àm, cha robh riatanas sònraichte ann bho Oracle DBA:

  • a bhith comasach air an DBMS no teicneòlas eile as fheàrr a thaghadh airson stòradh agus giullachd dàta;
  • thoir seachad ruigsinneachd àrd agus scalability còmhnard (cha robh seo an-còmhnaidh na chùis DBA);
  • eòlas math air an raon cuspair, bun-structar, ailtireachd tagraidh, OS;
  • luchdaich is dì-luchdaich dàta, imrich dàta eadar diofar DBMS.

San fharsaingeachd, ma bhios sinn a 'bruidhinn mun roghainn anns na làithean sin, tha e coltach ris an roghainn ann an stòr Sòbhieteach aig deireadh nan 80an:

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

An ùine againn

Bhon uairsin, gu dearbh, tha na craobhan air fàs, tha an saoghal air atharrachadh, agus thàinig e gu bhith na rudeigin mar seo:

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Tha margaidh DBMS air atharrachadh cuideachd, mar a chithear gu soilleir bhon aithisg as ùire bho Gartner:

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Agus an seo bu chòir a thoirt fa-near gu bheil na sgòthan, aig a bheil fèill a 'fàs, air a bhith a' fuireach anns an àite aca. Ma leugh sinn an aon aithisg Gartner, chì sinn na co-dhùnaidhean a leanas:

  1. Tha mòran de luchd-ceannach air an t-slighe gu bhith a’ gluasad thagraidhean chun sgòth.
  2. Bidh teicneòlasan ùra a’ nochdadh an toiseach san sgòth agus chan eil e na fhìrinn gun gluais iad gu bràth gu bun-structar neo-sgòthan.
  3. Tha am modail prìsean pàighidh mar a thèid thu air fàs cumanta. Tha a h-uile duine ag iarraidh pàigheadh ​​​​a-mhàin airson na tha iad a 'cleachdadh, agus chan e eadhon gluasad a tha seo, ach dìreach aithris fìrinn.

Dè a-nis?

An-diugh tha sinn uile san sgòth. Agus tha na ceistean a tha ag èirigh dhuinn nan ceistean roghainn. Agus tha e fìor mhòr, eadhon ged nach bruidhinn sinn ach mu dheidhinn an roghainn de theicneòlasan DBMS ann an cruth On-premises. Tha sinn cuideachd air seirbheisean a riaghladh agus SaaS. Mar sin, bidh an roghainn a-mhàin a 'fàs nas duilghe gach bliadhna.

Còmhla ri ceistean mu roghainn, tha cuideachd factaran cuibhreachaidh:

  • a 'phrìs. Tha mòran theicneòlasan fhathast a 'cosg airgead;
  • sgilean. Ma tha sinn a’ bruidhinn mu dheidhinn bathar-bog an-asgaidh, tha ceist sgilean ag èirigh, leis gu bheil feum aig bathar-bog an-asgaidh air comas gu leòr bho na daoine a bhios ga chleachdadh agus ga ruith;
  • gnìomh. Chan eil a h-uile seirbheis a tha ri fhaighinn san sgòth agus air a thogail, can, eadhon air an aon Postgres, aig a bheil na h-aon fheartan ri Postgres On-premises. Tha seo na fheart riatanach a dh’ fheumar a thuigsinn agus a thuigsinn. A bharrachd air an sin, bidh am bàillidh seo a’ fàs nas cudromaiche na eòlas air cuid de chomasan falaichte aon DBMS.

Na thathar an dùil bho DA/DE a-nis:

  • tuigse mhath air an raon cuspair agus ailtireachd tagraidh;
  • an comas an teicneòlas DBMS iomchaidh a thaghadh gu ceart, a’ toirt aire don obair a tha ri làimh;
  • an comas an dòigh as fheàrr a thaghadh airson an teicneòlas taghte a bhuileachadh ann an co-theacsa nan crìochan a th’ ann;
  • comas gluasad dàta agus imrich a dhèanamh;
  • comas fuasglaidhean taghte a bhuileachadh agus obrachadh.

Gu h-ìosal eisimpleir stèidhichte air GCP a’ sealltainn mar a tha an roghainn de theicneòlas aon no tè eile airson obrachadh le dàta ag obair a rèir an structair aige:

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Thoir an aire nach eil PostgreSQL air a ghabhail a-steach san sgeama, agus tha seo air sgàth gu bheil e falaichte fon bhriathrachas Cloud SQL. Agus nuair a ruigeas sinn Cloud SQL, feumaidh sinn roghainn a dhèanamh a-rithist:

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Bu chòir a thoirt fa-near nach eil an roghainn seo an-còmhnaidh soilleir, agus mar sin bidh luchd-leasachaidh tagraidh gu tric air an stiùireadh le intuition.

Iomlan:

  1. Mar as fhaide a thèid thu, is ann as cudromaiche a thig ceist an roghainn. Agus eadhon ged a choimheadas tu air GCP a-mhàin, seirbheisean fo stiùir agus SaaS, tha beagan iomradh air RDBMS a’ nochdadh dìreach aig a’ cheum 4th (agus an sin tha Spanner faisg air làimh). A bharrachd air an sin, tha an roghainn PostgreSQL a ’nochdadh anns a’ cheum 5th, agus ri thaobh tha MySQL agus SQL Server cuideachd, is e sin tha tòrr a h-uile càil ann, ach feumaidh tu taghadh.
  2. Cha bu chòir dhuinn dìochuimhneachadh mu chuingealachaidhean an aghaidh cùl-raon de bhuaireadh. Gu bunaiteach tha a h-uile duine ag iarraidh Spanner, ach tha e daor. Mar thoradh air an sin, tha iarrtas àbhaisteach a 'coimhead rudeigin mar seo: “Feuch an dèan thu Spanner dhuinn ach airson prìs Cloud SQL, tha thu nad phroifeiseantaich!”

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Dè bu chòir dhomh a dhèanamh?

Gun a bhith ag ràdh gur e seo an fhìrinn mu dheireadh, canaidh sinn na leanas:

Feumaidh sinn ar modh ionnsachaidh atharrachadh:

  • chan eil feum ann a bhith a’ teagasg mar a chaidh DBAn a theagasg roimhe seo;
  • chan eil eòlas air aon toradh gu leòr tuilleadh;
  • ach tha e eu-comasach eòlas fhaighinn air dusanan aig ìre aon.

Feumaidh fios a bhith agad chan ann a-mhàin agus chan ann air an ìre a tha an toradh, ach:

  • cùis cleachdaidh den tagradh aige;
  • diofar dhòighean cur an sàs;
  • buannachdan agus eas-bhuannachdan gach dòigh;
  • toraidhean coltach agus eile gus roghainn fiosraichte agus as fheàrr a dhèanamh agus gun a bhith an-còmhnaidh airson toradh air a bheil thu eòlach.

Feumaidh tu cuideachd a bhith comasach air dàta a ghluasad agus tuigse fhaighinn air prionnsapalan bunaiteach aonachadh le ETL.

Cùis fìor

O chionn ghoirid, bha e riatanach backend a chruthachadh airson tagradh gluasadach. Mun àm a thòisich obair air, bha an cùl-raon mar-thà air a leasachadh agus deiseil airson a bhuileachadh, agus chuir an sgioba leasachaidh seachad mu dhà bhliadhna air a 'phròiseact seo. Chaidh na gnìomhan a leanas a shuidheachadh:

  • togail CI/CD;
  • ath-sgrùdadh air an ailtireachd;
  • cuir e uile an gnìomh.

B’ e meanbh-sheirbheisean a bh’ anns an tagradh fhèin, agus chaidh an còd Python/Django a leasachadh bhon toiseach agus gu dìreach ann an GCP. A thaobh an luchd-èisteachd cuimsichte, bhathas a’ gabhail ris gum biodh dà roinn ann - na SA agus an EU, agus chaidh trafaic a sgaoileadh tron ​​chothromachadh Global Load. Ruith a h-uile uallach obrach agus eallach obrach air Google Kubernetes Engine.

A thaobh an dàta, bha 3 structaran ann:

  • Stòradh Cloud;
  • Stòr-dàta;
  • Cloud SQL (PostgreSQL).

Mar a mhaireas tu stòr-dàta SQL san 21mh linn: sgòthan, Kubernetes agus PostgreSQL multimaster

Is dòcha gum bi e iongantach carson a chaidh Cloud SQL a thaghadh? Leis an fhìrinn innse, tha ceist mar seo air seòrsa de stad neònach adhbhrachadh anns na bliadhnachan mu dheireadh - tha faireachdainn ann gu bheil daoine air fàs diùid mu stòran-dàta dàimh, ach a dh’ aindeoin sin tha iad fhathast gan cleachdadh gu gnìomhach ;-).

A thaobh na cùise againn, chaidh Cloud SQL a thaghadh airson na h-adhbharan a leanas:

  1. Mar a chaidh ainmeachadh, chaidh an tagradh a leasachadh le bhith a’ cleachdadh Django, agus tha modail aige airson dàta leantainneach a mhapadh bho stòr-dàta SQL gu nithean Python (Django ORM).
  2. Bha am frèam fhèin a’ toirt taic do liosta gu math cuibhrichte de DBMSs:

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

Mar sin, chaidh PostgreSQL a thaghadh bhon liosta seo gu h-intuitive (uill, chan e Oracle a thaghadh, dha-rìribh).

Dè bha a dhìth:

  • cha deach an tagradh a chleachdadh ach ann an roinnean 2, agus nochd 3mh fear ann am planaichean (Àisia);
  • Bha an stòr-dàta suidhichte ann an sgìre Ameireaga a Tuath (Iowa);
  • bha draghan air taobh an neach-ceannach mu dheidhinn comasach dàil ruigsinneachd às an Roinn Eòrpa agus Àisia agus brisidhean ann an seirbhis ann an cùis ùine downt DBMS.

A dh 'aindeoin gum faod Django fhèin obrachadh le grunn stòran-dàta ann an co-shìnte agus an roinn ann an leughadh agus sgrìobhadh, cha robh uiread de sgrìobhadh san tagradh (tha barrachd air 90% a' leughadh). Agus san fharsaingeachd, agus san fharsaingeachd, nam biodh e comasach a dhèanamh read-mac-samhail den phrìomh bhunait anns an Roinn Eòrpa agus Àisia, bhiodh seo na fhuasgladh co-rèiteachaidh. Uill, dè a tha cho iom-fhillte mu dheidhinn?

B’ e an duilgheadas nach robh an neach-ceannach airson a leigeil seachad le bhith a’ cleachdadh seirbheisean stiùirichte agus Cloud SQL. Agus tha comasan Cloud SQL cuingealaichte an-dràsta. Tha Cloud SQL a 'toirt taic do ruigsinneachd àrd (HA) agus Read Replica (RR), ach chan eil an aon RR a' faighinn taic ach ann an aon roinn. Às deidh dhut stòr-dàta a chruthachadh ann an roinn Ameireagaidh, chan urrainn dhut mac-samhail leughaidh a dhèanamh san roinn Eòrpach a’ cleachdadh Cloud SQL, ged nach eil Postgres fhèin a’ cur stad ort bho bhith a’ dèanamh seo. Cha robh conaltradh le luchd-obrach Google a’ stiùireadh àite sam bith agus thàinig e gu crìch le geallaidhean ann an stoidhle “tha fios againn air an duilgheadas agus tha sinn ag obair air, aon latha thèid a’ chùis a rèiteach. ”

Ma nì sinn liosta goirid de chomasan Cloud SQL, seallaidh e rudeigin mar seo:

1. Àrd ri fhaotainn (HA):

  • taobh a-staigh aon sgìre;
  • tro ath-riochdachadh diosc;
  • Chan eil einnseanan PostgreSQL air an cleachdadh;
  • smachd fèin-ghluasadach agus làimhe comasach - fàilligeadh / fàilligeadh;
  • Nuair a thionndaidheas tu, chan eil an DBMS ri fhaighinn airson grunn mhionaidean.

2. Leugh Mac-samhail (RR):

  • taobh a-staigh aon sgìre;
  • fuireach teth;
  • Ath-riochdachadh sruthadh PostgreSQL.

A bharrachd air an sin, mar as àbhaist, nuair a thaghas tu teicneòlas bidh thu an-còmhnaidh mu choinneamh cuid cuingeachaidhean:

  • cha robh an neach-ceannach airson aonadan a chruthachadh agus IaaS a chleachdadh, ach a-mhàin tro GKE;
  • cha bu toil leis an neach-ceannach fèin-sheirbheis PostgreSQL / MySQL a chleachdadh;
  • Uill, san fharsaingeachd, bhiodh Google Spanner gu math freagarrach mura biodh e airson a phrìs, ge-tà, chan urrainn dha Django ORM obrachadh leis, ach is e rud math a th’ ann.

A’ beachdachadh air an t-suidheachadh, fhuair an neach-ceannach ceist leanmhainn: “An urrainn dhut rudeigin coltach ris a dhèanamh gus am bi e coltach ri Google Spanner, ach cuideachd ag obair le Django ORM?”

Roghainn fuasglaidh Àir. 0

A’ chiad rud a thàinig gu inntinn:

  • fuireach taobh a-staigh CloudSQL;
  • cha bhi mac-samhail sam bith eadar roinnean ann an cruth sam bith;
  • feuch ri mac-samhail a cheangal ri Cloud SQL le PostgreSQL;
  • cuir air bhog eisimpleir PostgreSQL an àiteigin agus dòigh air choireigin, ach co-dhiù na bi a’ suathadh ri maighstir.

Gu mì-fhortanach, thionndaidh e a-mach nach urrainnear seo a dhèanamh, leis nach eil cothrom air an òstair (tha e ann am pròiseact eadar-dhealaichte gu tur) - pg_hba agus mar sin air adhart, agus chan eil ruigsinneachd ann cuideachd fo superuser.

Roghainn fuasglaidh Àir. 1

Às deidh tuilleadh meòrachaidh agus a’ toirt aire do na suidheachaidhean a bh’ ann roimhe, dh’ atharraich an dòigh smaoineachaidh beagan:

  • Tha sinn fhathast a 'feuchainn ri fuireach taobh a-staigh CloudSQL, ach tha sinn a' gluasad gu MySQL, oir tha maighstir taobh a-muigh aig Cloud SQL le MySQL, a tha:

- na neach-ionaid airson MySQL taobh a-muigh;
- tha e coltach ri eisimpleir MySQL;
- air a chruthachadh airson dàta a ghluasad bho sgòthan eile no san togalach.

Leis nach eil feum air ath-riochdachadh MySQL cothrom air an aoigh, ann am prionnsapal dh’ obraich a h-uile dad, ach bha e gu math neo-sheasmhach agus mì-ghoireasach. Agus nuair a chaidh sinn nas fhaide, dh'fhàs e gu tur eagallach, oir chuir sinn a-steach an structar gu lèir le terraform, agus gu h-obann thionndaidh e a-mach nach robh am maighstir a-muigh a 'faighinn taic bho terraform. Tha, tha CLI aig Google, ach airson adhbhar air choireigin bha a h-uile dad ag obair an seo bho àm gu àm - uaireannan tha e air a chruthachadh, uaireannan chan eil e air a chruthachadh. Is dòcha air sgàth gun deach an CLI a chruthachadh airson imrich dàta bhon taobh a-muigh, agus chan ann airson mac-samhail.

Gu fìrinneach, aig an ìre seo dh’ fhàs e soilleir nach eil Cloud SQL freagarrach idir. Mar a chanas iad, rinn sinn nas urrainn dhuinn.

Roghainn fuasglaidh Àir. 2

Leis nach robh e comasach fuireach taobh a-staigh frèam Cloud SQL, dh’ fheuch sinn ri riatanasan a dhealbhadh airson fuasgladh co-rèiteachaidh. Thàinig na riatanasan a-mach mar a leanas:

  • obair ann an Kubernetes, cleachdadh as motha de ghoireasan agus comasan Kubernetes (DCS, ...) agus GCP (LB, ...);
  • cion ballasta bho ghrunn rudan neo-riatanach san sgòth mar neach-ionaid HA;
  • an comas PostgreSQL no MySQL a ruith ann am prìomh roinn HA; ann an roinnean eile - HA bhon RR den phrìomh roinn agus a leth-bhreac (airson earbsachd);
  • ioma-mhaighstir (cha robh mi airson fios a chuir thuige, ach cha robh e glè chudromach)

.
Mar thoradh air na h-iarrtasan sin, tdDBMS iomchaidh agus roghainnean ceangail:

  • MySQL Galera;
  • CockroachDB;
  • Innealan PostgreSQL

:
- pgpool-II;
— Patroni.

MySQL Galera

Chaidh teicneòlas MySQL Galera a leasachadh le Codership agus tha e na plugan airson InnoDB. Feartan sònraichte:

  • ioma-mhaighstir;
  • mac-samhail sioncronaich;
  • leughadh bho nód sam bith;
  • clàradh gu nód sam bith;
  • uidheamachd HA togte;
  • Tha clàr Helm bho Bitnami.

coileach-dubh

A rèir an tuairisgeul, tha an rud gu tur boma agus tha e na phròiseact stòr fosgailte sgrìobhte ann an Go. Is e Cockroach Labs am prìomh chom-pàirtiche (stèidhichte le daoine bho Google). Chaidh an DBMS dàimheach seo a dhealbhadh an toiseach airson a sgaoileadh (le sgèileadh còmhnard a-mach às a’ bhogsa) agus fulangas ri lochdan. Mhìnich na h-ùghdaran bhon chompanaidh an amas “a bhith a’ cothlamadh beairteas gnìomh SQL leis an ruigsinneachd chòmhnard a tha eòlach air fuasglaidhean NoSQL.”

Is e buannachd mhath a tha ann an taic don phròtacal ceangail post-gress.

Pgpool

Is e seo tuilleadan gu PostgreSQL, gu dearbh, eintiteas ùr a bhios a’ gabhail thairis a h-uile ceangal agus gan giullachd. Tha a chothromachadh luchdan agus parser fhèin aige, le cead fo chead BSD. Tha e a 'toirt seachad cothroman gu leòr, ach tha e a' coimhead rudeigin eagallach, oir dh'fhaodadh làthaireachd eintiteas ùr a bhith na adhbhar airson tachartasan a bharrachd.

Pàtran

Is e seo an rud mu dheireadh a thuit mo shùilean air, agus, mar a thàinig e a-mach, chan ann gu dìomhain. Tha Patroni na ghoireas stòr fosgailte, a tha gu ìre mhòr na dheamhan Python a leigeas leat cruinneachaidhean PostgreSQL a chumail gu fèin-ghluasadach le diofar sheòrsan ath-riochdachadh agus atharrachadh dreuchd fèin-ghluasadach. Bha an rud gu math inntinneach, leis gu bheil e a ’fighe a-steach gu math leis a’ chubair agus nach eil e a ’toirt a-steach aonadan ùra sam bith.

Dè a thagh thu aig a’ cheann thall?

Cha robh an roghainn furasta:

  1. coileach-dubh — teine, ach dorch ;
  2. MySQL Galera - cuideachd nach eil dona, tha e air a chleachdadh ann an iomadh àite, ach MySQL;
  3. Pgpool - mòran de bhuidhnean neo-riatanach, mar sin amalachadh leis an sgòth agus K8n;
  4. Pàtran - amalachadh sàr-mhath le K8n, gun aonadan neo-riatanach, ag amalachadh gu math le GCP LB.

Mar sin, thuit an roghainn air Patroni.

toraidhean

Tha an t-àm ann geàrr-chunntas a dhèanamh. Tha, tha saoghal bun-structair IT air atharrachadh gu mòr, agus chan eil an seo ach toiseach. Agus nam biodh na sgòthan dìreach mar sheòrsa eile de bhun-structar, a-nis tha a h-uile dad eadar-dhealaichte. A bharrachd air an sin, tha innleachdan anns na sgòthan an-còmhnaidh a’ nochdadh, nochdaidh iad agus, is dòcha, nochdaidh iad dìreach anns na sgòthan agus is ann dìreach an uairsin, le oidhirpean luchd-tòiseachaidh, a thèid an gluasad gu On-premises.

A thaobh SQL, bidh SQL beò. Tha seo a’ ciallachadh gum feum thu eòlas fhaighinn air PostgreSQL agus MySQL agus a bhith comasach air obrachadh leotha, ach tha e eadhon nas cudromaiche a bhith comasach air an cleachdadh gu ceart.

Source: www.habr.com

Cuir beachd ann