Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas

Barrachd is barrachd, tha teachdaichean a’ faighinn na h-iarrtasan a leanas: “Tha sinn ga iarraidh mar Amazon RDS, ach nas saoire”; “Tha sinn ga iarraidh mar RDS, ach anns a h-uile àite, ann am bun-structar sam bith.” Gus fuasgladh mar seo a chuir an gnìomh air Kubernetes, thug sinn sùil air staid làithreach nan gnìomhaichean as mòr-chòrdte airson PostgreSQL (Stolon, gnìomhaichean bho Crunchy Data agus Zalando) agus rinn sinn ar roghainn.

Is e an artaigil seo an t-eòlas a fhuair sinn an dà chuid bho shealladh teòiridheach (lèirmheas air fuasglaidhean) agus bho thaobh practaigeach (dè a chaidh a thaghadh agus dè a thàinig às). Ach an toiseach, feuch an dèan sinn a-mach dè na riatanasan coitcheann a th’ ann airson fear eile a dh’ fhaodadh a bhith ann airson RDS...

Dè th' ann an RDS

Nuair a bhios daoine a’ bruidhinn mu dheidhinn RDS, nar n-eòlas, tha iad a’ ciallachadh seirbheis DBMS fo stiùir a tha:

  1. furasta a rèiteachadh;
  2. tha comas aige obrachadh le dealbhan agus faighinn seachad air (le taic mas fheàrr PITR);
  3. a 'leigeil leat topologies maighstir-tràille a chruthachadh;
  4. tha liosta bheairteach de leudachadh;
  5. a’ toirt seachad sgrùdadh agus riaghladh luchd-cleachdaidh/ruigsinneachd.

San fharsaingeachd, faodaidh dòighean-obrach airson a’ ghnìomh a chur an gnìomh a bhith gu math eadar-dhealaichte, ach chan eil an t-slighe le cumhachan Ansible faisg oirnn. (Thàinig co-obraichean bho 2GIS gu co-dhùnadh coltach ris mar thoradh air an sin an oidhirp aige cruthaich “inneal airson brabhsair failover stèidhichte air Postgres a chuir gu sgiobalta.”)

Tha luchd-obrachaidh mar dhòigh-obrach cumanta airson fuasgladh fhaighinn air duilgheadasan coltach ris ann an eag-shiostam Kubernetes. Tha stiùiriche teignigeach “Flanta” air bruidhinn nas mionaidiche mun deidhinn mu thràth a thaobh stòran-dàta a chaidh a chuir air bhog taobh a-staigh Kubernetes. sgioblachadh, ann aon de na h-aithisgean aige.

NB: Gus gnìomhaichean sìmplidh a chruthachadh gu sgiobalta, tha sinn a ’moladh aire a thoirt don ghoireas Open Source againn slige-ghnìomhaiche. Le bhith ga chleachdadh, faodaidh tu seo a dhèanamh gun eòlas air Go, ach ann an dòighean nas eòlaiche do luchd-rianachd an t-siostaim: ann am Bash, Python, msaa.

Tha grunn ghnìomhaichean K8s mòr-chòrdte ann airson PostgreSQL:

  • Stòlan;
  • Gnìomhaiche PostgreSQL dàta crunchy;
  • Gnìomhaiche Zalando Postgres.

Bheir sinn sùil nas mionaidiche orra.

Taghadh gnìomhaiche

A bharrachd air na feartan cudromach a chaidh ainmeachadh gu h-àrd, bha sinn - mar innleadairean gnìomhachd bun-structair Kubernetes - cuideachd an dùil na leanas bho ghnìomhaichean:

  • cleachdadh bho Git agus le Goireasan Custom;
  • taic an-aghaidh dàimh pod;
  • a 'stàladh ceangal nòta no taghadair nod;
  • stàladh tolerances;
  • cothrom air comasan tuning;
  • teicneòlasan so-thuigsinn agus eadhon òrdughan.

Gun a bhith a’ dol a-steach gu mion-fhiosrachadh mu gach puing (faighnich anns na beachdan ma tha ceistean agad fhathast mun deidhinn às deidh dhut an artaigil gu lèir a leughadh), bheir mi fa-near san fharsaingeachd gu bheil feum air na crìochan sin gus cunntas nas mionaidiche a thoirt air speisealachadh nodan cnuasachaidh gus òrdaich iad airson iarrtasan sònraichte. San dòigh seo is urrainn dhuinn an cothromachadh as fheàrr a choileanadh a thaobh coileanadh agus cosgais.

A-nis gluaisidh sinn air adhart gu na gnìomhaichean PostgreSQL iad fhèin.

1. Stolon

Stolon bhon chompanaidh Eadailteach Sorint.lab a-steach aithisg air ainmeachadh cheana air a mheas mar sheòrsa de inbhe am measg ghnìomhaichean airson DBMS. Is e pròiseact gu math sean a tha seo: chaidh a’ chiad fhoillseachadh poblach aige a chumail air ais san t-Samhain 2015 (!), Agus tha faisg air 3000 rionnag agus 40+ com-pàirtiche ann an stòr GitHub.

Gu dearbh, tha Stolon na dheagh eisimpleir de ailtireachd smaoineachail:

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas
Gheibhear inneal a’ ghnìomhaiche seo gu mionaideach san aithisg no sgrìobhainnean pròiseict. San fharsaingeachd, is leòr a ràdh gun urrainn dha a h-uile dad a tha air a mhìneachadh a dhèanamh: fàilligeadh, luchd-ionaid airson ruigsinneachd follaiseach do luchd-cleachdaidh, cùl-taic ... A bharrachd air an sin, bidh luchd-ionaid a’ toirt cothrom tro aon sheirbheis crìochnachaidh - eu-coltach ris an dà fhuasgladh eile air an deach beachdachadh gu h-ìosal (tha dà sheirbheis aca airson gach fear. faighinn a-steach don ionad).

Ge-tà, Stolon no Goireasan Custom, agus is e sin as coireach nach urrainnear a chleachdadh ann an dòigh a tha e furasta agus luath - “mar chèicean teth” - suidheachaidhean DBMS a chruthachadh ann an Kubernetes. Tha riaghladh air a dhèanamh tron ​​​​ghoireis stolonctl, tha cleachdadh air a dhèanamh tro chlàr Helm, agus tha feadhainn àbhaisteach air am mìneachadh agus air an sònrachadh ann an ConfigMap.

Air an aon làimh, tha e a 'tionndadh a-mach nach eil an gnìomhaiche dha-rìribh na ghnìomhaiche (às dèidh a h-uile, chan eil e a' cleachdadh CRD). Ach air an làimh eile, is e siostam sùbailte a th’ ann a leigeas leat goireasan a rèiteachadh ann an K8n mar a chì thu iomchaidh.

Airson geàrr-chunntas, dhuinne gu pearsanta cha robh e coltach gu robh e na b’ fheàrr clàr air leth a chruthachadh airson gach stòr-dàta. Mar sin, thòisich sinn a 'coimhead airson roghainnean eile.

2. Gnìomhaiche PostgreSQL dàta crunchy

Gnìomhaiche bho Crunchy Data, tòiseachaidh òg Ameireaganach, a rèir coltais mar roghainn loidsigeach. Bidh an eachdraidh phoblach aige a’ tòiseachadh leis a’ chiad fhoillseachadh sa Mhàrt 2017, bhon uairsin tha stòr GitHub air beagan nas lugha na 1300 rionnag agus 50+ com-pàirtiche fhaighinn. Chaidh an sgaoileadh as ùire bhon t-Sultain a dhearbhadh gus obrachadh le Kubernetes 1.15-1.18, OpenShift 3.11+ agus 4.4+, GKE agus VMware Enterprise PKS 1.3+.

Tha ailtireachd Gnìomhaiche Crunchy Data PostgreSQL cuideachd a’ coinneachadh ris na riatanasan ainmichte:

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas

Bidh riaghladh a’ tachairt tro ghoireas pgo, ge-tà, bidh e an uair sin a’ gineadh Goireasan Custom airson Kubernetes. Mar sin, bha an gnìomhaiche toilichte leinn mar luchd-cleachdaidh comasach:

  • tha smachd tro CRD;
  • riaghladh luchd-cleachdaidh goireasach (cuideachd tro CRD);
  • amalachadh le co-phàirtean eile Crunchy Data Container Suite - cruinneachadh sònraichte de dhealbhan soithichean airson PostgreSQL agus goireasan airson a bhith ag obair leis (a’ toirt a-steach pgBackRest, pgAudit, leudachadh bho thabhartas, msaa).

Ach, nochd oidhirpean gus an gnìomhaiche a chleachdadh bho Crunchy Data grunn dhuilgheadasan:

  • Cha robh e comasach fulangas a dhèanamh - chan eil ach nodeSelector air a thoirt seachad.
  • Bha na pods cruthaichte mar phàirt de Chleachdadh, a dh’ aindeoin gun do chuir sinn a-steach tagradh stàiteil. Eu-coltach ri StatefulSets, chan urrainn do Deployments diosgan a chruthachadh.

Tha an tarraing air ais mu dheireadh a’ leantainn gu amannan èibhinn: air an àrainneachd deuchainn chaidh againn air 3 mac-samhail a ruith le aon diosc stòradh ionadail, ag adhbhrachadh don ghnìomhaiche aithris gu robh 3 mac-samhail ag obair (ged nach robh iad).

Is e feart eile den ghnìomhaiche seo an aonachadh deiseil le diofar shiostaman taice. Mar eisimpleir, tha e furasta pgAdmin agus pgBounce a stàladh, agus a-steach sgrìobhainnean Thathas a’ beachdachadh air Grafana agus Prometheus ro-shuidhichte. O chionn ghoirid sgaoileadh 4.5.0-beta1 Thathas a’ toirt fa-near fa leth amalachadh nas fheàrr leis a’ phròiseact pgMonadair, leis a bheil an gnìomhaiche a’ tabhann sealladh soilleir de mheatairean PgSQL a-mach às a ’bhogsa.

Ach, thug an roghainn neònach de ghoireasan a chruthaich Kubernetes sinn gu feum air fuasgladh eadar-dhealaichte a lorg.

3. Gnìomhaiche Zalando Postgres

Tha sinn air eòlas fhaighinn air toraidhean Zalando airson ùine mhòr: tha eòlas againn air Zalenium a chleachdadh agus, gu dearbh, dh’ fheuch sinn Pàtran Is e am fuasgladh HA mòr-chòrdte aca airson PostgreSQL. Mu dheidhinn dòigh-obrach a 'chompanaidh airson cruthachadh Gnìomhaiche Postgres thuirt aon de na h-ùghdaran aige, Alexey Klyukin, air an èadhar Postgres-Dimàirt #5, agus chòrd e rinn.

Is e seo am fuasgladh as òige a chaidh a dheasbad san artaigil: chaidh a’ chiad fhoillseachadh a chumail san Lùnastal 2018. Ach, eadhon a dh’ aindeoin an àireamh bheag de sgaoilidhean foirmeil, tha am pròiseact air a thighinn air slighe fhada, mar-thà a’ dol thairis air an fhuasgladh bho Crunchy Data le rionnagan 1300+ air GitHub agus an àireamh as motha de luchd-tabhartais (70+).

“Fon chochall” bidh an gnìomhaiche seo a’ cleachdadh fuasglaidhean le deuchainn ùine:

  • Patroni agus Spoil Airson dràibheadh,
  • WAL-E - airson cùl-taic,
  • PgBouncer - mar amar ceangail.

Seo mar a tha ailtireachd gnìomhaiche Zalando air a thaisbeanadh:

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas

Tha an gnìomhaiche air a riaghladh gu h-iomlan tro Custom Resources, gu fèin-ghluasadach a’ cruthachadh StatefulSet bho shoithichean, a dh’ fhaodar an uairsin a ghnàthachadh le bhith a’ cur grunn chàraichean-taobh ris a’ phod. Tha seo uile na bhuannachd mhòr an taca ris a’ ghnìomhaiche bho Crunchy Data.

Leis gun do thagh sinn am fuasgladh bho Zalando am measg nan 3 roghainnean air a bheilear a’ beachdachadh, bidh tuairisgeul eile air na comasan aige air a thaisbeanadh gu h-ìosal, sa bhad còmhla ri cleachdadh an tagraidh.

Cleachd le Postgres Operator bho Zalando

Tha cleachdadh gnìomhaiche gu math sìmplidh: dìreach luchdaich sìos an sgaoileadh gnàthach bho GitHub agus cuir na faidhlichean YAML bhon eòlaire an sàs a ’nochdadh. Air neo, faodaidh tu cuideachd a chleachdadh gnìomhaichehub.

Às deidh an stàladh, bu chòir dhut a bhith draghail mu bhith a ’suidheachadh stòradh airson logaichean agus cùl-taic. Thèid seo a dhèanamh tro ConfigMap postgres-operator san namespace far an do chuir thu a-steach an gnìomhaiche. Aon uair ‘s gu bheil na stòran air an rèiteachadh, faodaidh tu a’ chiad bhuidheann PostgreSQL agad a chleachdadh.

Mar eisimpleir, tha an cleachdadh àbhaisteach againn a’ coimhead mar seo:

apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
 name: staging-db
spec:
 numberOfInstances: 3
 patroni:
   synchronous_mode: true
 postgresql:
   version: "12"
 resources:
   limits:
     cpu: 100m
     memory: 1Gi
   requests:
     cpu: 100m
     memory: 1Gi
 sidecars:
 - env:
   - name: DATA_SOURCE_URI
     value: 127.0.0.1:5432
   - name: DATA_SOURCE_PASS
     valueFrom:
       secretKeyRef:
         key: password
         name: postgres.staging-db.credentials
   - name: DATA_SOURCE_USER
     value: postgres
   image: wrouesnel/postgres_exporter
   name: prometheus-exporter
   resources:
     limits:
       cpu: 500m
       memory: 100Mi
     requests:
       cpu: 100m
       memory: 100Mi
 teamId: staging
 volume:
   size: 2Gi

Tha am foillseachadh seo a’ cleachdadh cruinneachadh de 3 shuidheachaidhean le cliathaich san fhoirm postgres_exporter, às a bheil sinn a’ gabhail slatan-tomhais tagraidh. Mar a chì thu, tha a h-uile dad gu math sìmplidh, agus ma thogras tu, faodaidh tu àireamh neo-chuingealaichte de chlàran a chruthachadh.

Is fhiach aire a thoirt dha pannal rianachd lìn - postgres-obrachaidh-ui. Tha e a’ tighinn leis a’ ghnìomhaiche agus a’ leigeil leat cruinneachaidhean a chruthachadh agus a dhubhadh às, a bharrachd air a bhith ag obair le cùl-taic a rinn an gnìomhaiche.

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas
Liosta de na cruinneachaidhean PostgreSQL

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas
Riaghladh cùl-taic

Is e feart inntinneach eile an taic API sgiobaidhean. Bidh an inneal seo a’ cruthachadh gu fèin-ghluasadach dreuchdan ann am PostgreSQL, stèidhichte air an liosta ainmean-cleachdaidh a thàinig às. Leigidh an API an uairsin dhut liosta de luchd-cleachdaidh a thilleadh dha bheil dreuchdan air an cruthachadh gu fèin-ghluasadach.

Duilgheadasan agus am fuasgladh

Ach, cha b 'fhada gus an do nochd cleachdadh a' ghnìomhaiche grunn easbhaidhean mòra:

  1. dìth taic nodeSelector;
  2. neo-chomas cùl-taic a chuir dheth;
  3. nuair a chleachdas tu gnìomh cruthachadh stòr-dàta, cha nochd sochairean bunaiteach;
  4. Uaireannan bidh sgrìobhainnean a dhìth no seann-fhasanta.

Gu fortanach, faodar mòran dhiubh fhuasgladh. Feuch an tòisich sinn bhon deireadh - duilgheadasan le sgrìobhainnean.

Is coltaiche, thig thu tarsainn air nach eil e an-còmhnaidh soilleir ciamar a chlàras tu cùl-taic agus mar a cheanglas tu am bucaid cùl-taic ris an UI Gnìomhaiche. Tha na sgrìobhainnean a’ bruidhinn mu dheidhinn seo nuair a bha iad a’ dol seachad, ach tha an fhìor thuairisgeul a-staigh PR:

  1. feumar dìomhaireachd a dhèanamh;
  2. thoir seachad e don ghnìomhaiche mar paramadair pod_environment_secret_name anns an CRD le roghainnean gnìomhaiche no ann an ConfigMap (a rèir mar a cho-dhùnas tu an gnìomhaiche a stàladh).

Ach, mar a thionndaidh e, tha seo do-dhèanta an-dràsta. Sin as coireach gun do chruinnich sinn an dreach agad den ghnìomhaiche le cuid de leasachaidhean treas-phàrtaidh a bharrachd. Airson tuilleadh fiosrachaidh mu dheidhinn, faic gu h-ìosal.

Ma bheir thu seachad na crìochan airson cùl-taic don ghnìomhaiche, is e sin - wal_s3_bucket agus iuchraichean inntrigidh ann an AWS S3, an uairsin e bheir e cùl-taic do na h-uile: chan e a-mhàin bunaitean ann an cinneasachadh, ach cuideachd àrd-ùrlar. Cha do chòrd seo rinn.

Anns an tuairisgeul air na paramadairean airson Spilo, is e sin am pasgan Docker bunaiteach airson PgSQL nuair a bhios tu a ’cleachdadh a’ ghnìomhaiche, thionndaidh e a-mach: faodaidh tu a dhol seachad air paramadair WAL_S3_BUCKET falamh, agus mar sin a’ cur cùl-taic à comas. A bharrachd air an sin, gu toileachas mòr, lorg mi deiseil PR, ris an do ghabh sinn air ball nar forc. A-nis feumaidh tu dìreach cuir ris enableWALArchiving: false gu goireas brabhsair PostgreSQL.

Bha, bha cothrom ann a dhèanamh ann an dòigh eadar-dhealaichte le bhith a’ ruith 2 ghnìomhaiche: aon airson stèidse (gun chùl-taic), agus an dàrna fear airson cinneasachadh. Ach bha e comasach dhuinn dèanamh le aon.

Ceart gu leòr, dh’ ionnsaich sinn mar a ghluaiseas sinn cothrom air na stòran-dàta airson AS3 agus thòisich cùl-taic a’ dol a-steach don stòradh. Mar a bheir thu air duilleagan cùl-taic obrachadh ann an Operator UI?

Sealladh farsaing air aithrisean PostgreSQL airson Kubernetes, Ar Roghainnean agus ar n-eòlas

Feumaidh tu 3 caochladairean a chur ris an UI Gnìomhaiche:

  • SPILO_S3_BACKUP_BUCKET
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

Às deidh seo, bidh riaghladh cùl-taic ri fhaighinn, a nì an obair againn nas sìmplidhe le stèidse, a ’toirt cothrom dhuinn sliseagan bho riochdachadh a lìbhrigeadh an sin gun sgriobtaichean a bharrachd.

B’ e buannachd eile an obair leis an Teams API agus cothroman gu leòr airson stòran-dàta agus dreuchdan a chruthachadh a’ cleachdadh innealan gnìomhaiche. Ge-tà, chaidh an cruthachadh cha robh còraichean aig dreuchdan gu bunaiteach. Mar sin, cha b’ urrainn do neach-cleachdaidh le còraichean leughaidh clàran ùra a leughadh.

Carson a tha sin? A dh'aindeoin 's gu bheil anns a' chòd tha riatanach GRANT, chan eil iad an-còmhnaidh air an cleachdadh. Tha 2 dhòighean ann: syncPreparedDatabases и syncDatabases. Tha a ' syncPreparedDatabases - a dh'aindeoin sin anns an earrann preparedDatabases tha tha staid ann defaultRoles и defaultUsers gus dreuchdan a chruthachadh, chan eil còraichean bunaiteach air an cur an sàs. Tha sinn an-dràsta ag ullachadh bad gus am bi na còraichean sin air an cur an sàs gu fèin-ghluasadach.

Agus a’ phuing mu dheireadh anns na leasachaidhean a tha buntainneach dhuinn - paiste, a chuireas Node Affinity ris an StatefulSet a chaidh a chruthachadh. Gu tric is fheàrr le ar luchd-dèiligidh cosgaisean a lughdachadh le bhith a’ cleachdadh suidheachaidhean spot, agus tha e soilleir nach fhiach iad seirbheisean stòr-dàta a chumail. Dh’ fhaodadh a’ chùis seo a bhith air a rèiteach tro fhulangas, ach tha làthaireachd Node Affinity a’ toirt barrachd misneachd.

Dè thachair?

Stèidhichte air toraidhean fuasgladh nan duilgheadasan gu h-àrd, chuir sinn air adhart Postgres Operator bho Zalando a-steach do thasgaidh, far a bheil e air a chruinneachadh le pìosan cho feumail. Agus airson barrachd goireasachd, chruinnich sinn cuideachd Dealbh docker.

Liosta de PR air an gabhail a-steach don fhorc:

Bidh e math ma tha a 'choimhearsnachd a' toirt taic dha na PR sin gus am faigh iad suas an abhainn leis an ath dhreach den ghnìomhaiche (1.6).

Bònas! Eachdraidh soirbheachais imrich cinneasachaidh

Ma chleachdas tu Patroni, faodar cinneasachadh beò a ghluasad chun ghnìomhaiche le glè bheag de ùine downt.

Leigidh Spilo leat cruinneachaidhean cùl-taic a chruthachadh tro stòradh S3 le Wal-E, nuair a thèid an log binary PgSQL a stòradh an toiseach ann an S3 agus an uairsin a phumpadh a-mach leis a’ mhac-samhail. Ach dè nì thu ma tha chan eil air a chleachdadh le Wal-E air seann bhun-structair? Tha fuasgladh air an duilgheadas seo mar-thà chaidh a mholadh air a' mheadhan.

Thig ath-riochdachadh loidsigeach PostgreSQL gu teasairginn. Ach, cha tèid sinn a-steach gu mion-fhiosrachadh mu mar a chruthaicheas sinn foillseachaidhean agus fo-sgrìobhaidhean, oir... b’ e fiasco a bh’ anns a’ phlana againn.

Is e an fhìrinn gu robh grunn chlàran luchdaichte aig an stòr-dàta le milleanan de shreathan, a bha, a bharrachd air an sin, an-còmhnaidh air an ath-lìonadh agus air an toirt às. Fo-sgrìobhadh sìmplidh с copy_data, nuair a nì am mac-samhail ùr lethbhreac den t-susbaint gu lèir bhon mhaighstir, chan urrainn dha cumail suas ris a’ mhaighstir. Dh’ obraich copaidh susbaint airson seachdain, ach cha do ghabh e a-riamh ris a’ mhaighstir. Mu dheireadh, chuidich e mi gus an duilgheadas fhuasgladh artaigil co-oibrichean bho Avito: faodaidh sibh a ghluasad dàta a 'cleachdadh pg_dump. Bheir mi cunntas air an dreach againn (beagan atharraichte) den algorithm seo.

Is e am beachd gun urrainn dhut fo-sgrìobhadh ciorramach a dhèanamh ceangailte ri slot ath-riochdachadh sònraichte, agus an uairsin an àireamh malairt a cheartachadh. Bha mac-samhail ann airson obair riochdachaidh. Tha seo cudromach oir cuidichidh an mac-samhail le bhith a 'cruthachadh dump cunbhalach agus a' leantainn air adhart a 'faighinn atharrachaidhean bhon mhaighstir.

Cleachdaidh òrdughan às deidh sin a bheir cunntas air a’ phròiseas imrich na comharran aoigheachd a leanas:

  1. mhaighstir - frithealaiche stòr;
  2. mac-samhail 1 - mac-samhail sruthadh air an t-seann riochdachadh;
  3. mac-samhail 2 - mac-samhail loidsigeach ùr.

Plana imrich

1. Cruthaich fo-sgrìobhadh air a 'mhaighstir airson a h-uile clàran san sgeama public bonn dbname:

psql -h master -d dbname -c "CREATE PUBLICATION dbname FOR ALL TABLES;"

2. Cruthaich slot ath-riochdachadh air a 'mhaighstir:

psql -h master -c "select pg_create_logical_replication_slot('repl', 'pgoutput');"

3. Cuir stad air ath-riochdachadh air an t-seann mac-samhail:

psql -h replica1 -c "select pg_wal_replay_pause();"

4. Faigh an àireamh malairt bhon mhaighstir:

psql -h master -c "select replay_lsn from pg_stat_replication where client_addr = 'replica1';"

5. Thoir air falbh an dump bhon t-seann mac-samhail. Nì sinn seo ann an grunn snàithleanan, a chuidicheas tu gus am pròiseas a luathachadh:

pg_dump -h replica1 --no-publications --no-subscriptions -O -C -F d -j 8 -f dump/ dbname

6. Luchdaich suas an dump chun an fhrithealaiche ùr:

pg_restore -h replica2 -F d -j 8 -d dbname dump/

7. Às dèidh a luchdachadh a-nuas an dump, faodaidh tu tòiseachadh air ath-riochdachadh air mac-samhail streaming:

psql -h replica1 -c "select pg_wal_replay_resume();"

7. Cruthaichidh sinn ballrachd air mac-samhail loidsigeach ùr:

psql -h replica2 -c "create subscription oldprod connection 'host=replica1 port=5432 user=postgres password=secret dbname=dbname' publication dbname with (enabled = false, create_slot = false, copy_data = false, slot_name='repl');"

8. Gheibh sinn oid fo-sgrìobhaidhean:

psql -h replica2 -d dbname -c "select oid, * from pg_subscription;"

9. Canaidh sinn gun d' fhuaireadh oid=1000. Nach cuir sinn an àireamh malairt ris an fho-sgrìobhadh:

psql -h replica2 -d dbname -c "select pg_replication_origin_advance('pg_1000', 'AA/AAAAAAAA');"

10. Feuch an tòisich sinn air ath-riochdachadh:

psql -h replica2 -d dbname -c "alter subscription oldprod enable;"

11. Thoir sùil air inbhe an fho-sgrìobhaidh, bu chòir dha ath-riochdachadh obrachadh:

psql -h replica2 -d dbname -c "select * from pg_replication_origin_status;"
psql -h master -d dbname -c "select slot_name, restart_lsn, confirmed_flush_lsn from pg_replication_slots;"

12. Às deidh ath-riochdachadh a thòiseachadh agus na stòran-dàta a shioncronachadh, faodaidh tu tionndadh thairis.

13. Às deidh ath-riochdachadh a dhì-chomasachadh, feumaidh tu na sreathan a cheartachadh. Tha seo air a mhìneachadh gu math anns an artaigil air wiki.postgresql.org.

Mar thoradh air a’ phlana seo, thachair an tionndadh le glè bheag de dhàil.

co-dhùnadh

Leigidh gnìomhaichean Kubernetes leat diofar ghnìomhan a dhèanamh nas sìmplidhe le bhith gan lughdachadh gu cruthachadh ghoireasan K8s. Ach, às deidh dhaibh fèin-ghluasad iongantach a choileanadh leis an cuideachadh aca, is fhiach cuimhneachadh gum faod e grunn nuances ris nach robh dùil a thoirt a-steach, mar sin tagh do ghnìomhaichean gu ciallach.

An dèidh beachdachadh air na trì gnìomhaichean Kubernetes as mòr-chòrdte airson PostgreSQL, thagh sinn am pròiseact bho Zalando. Agus bha againn ri faighinn seachad air cuid de dhuilgheadasan leis, ach bha an toradh gu math tlachdmhor, agus mar sin tha sinn an dùil an t-eòlas seo a leudachadh gu ionadan PgSQL eile. Ma tha eòlas agad air fuasglaidhean coltach ris, bidh sinn toilichte am mion-fhiosrachadh fhaicinn anns na beachdan!

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann