Daudzi cilvÄki ir pazÄ«stami ar PostgreSQL DBVS, un tÄ ir sevi pierÄdÄ«jusi mazÄs instalÄcijÄs. TomÄr tendence uz atvÄrto avotu ir kļuvusi arvien skaidrÄka, pat ja runa ir par lieliem uzÅÄmumiem un uzÅÄmumu prasÄ«bÄm. Å ajÄ rakstÄ mÄs jums pastÄstÄ«sim, kÄ integrÄt Postgres korporatÄ«vajÄ vidÄ, un dalÄ«simies pieredzÄ par rezerves sistÄmas (BSS) izveidi Å”ai datubÄzei, kÄ piemÄru izmantojot Commvault dublÄÅ”anas sistÄmu.
PostgreSQL jau ir pierÄdÄ«jis savu vÄrtÄ«bu ā DBVS darbojas lieliski, to izmanto moderni digitÄlie uzÅÄmumi, piemÄram, Alibaba un TripAdvisor, un licencÄÅ”anas maksas trÅ«kums padara to par vilinoÅ”u alternatÄ«vu tÄdiem monstriem kÄ MS SQL vai Oracle DB. Bet, tiklÄ«dz mÄs sÄkam domÄt par PostgreSQL uzÅÄmuma vidÄ, mÄs nekavÄjoties saskaramies ar stingrÄm prasÄ«bÄm: āKÄ ir ar konfigurÄcijas kļūdu toleranci? izturÄ«ba pret katastrofÄm? kur ir visaptveroÅ”Ä uzraudzÄ«ba? KÄ ar automatizÄtajÄm dublÄjumkopijÄm? KÄ ar lentu bibliotÄku izmantoÅ”anu gan tieÅ”i, gan sekundÄrajÄ atmiÅÄ?
No vienas puses, PostgreSQL nav iebÅ«vÄtu dublÄÅ”anas rÄ«ku, piemÄram, āpieauguÅ”oā DBVS, piemÄram, RMAN Oracle DB vai SAP datu bÄzes dublÄÅ”ana. No otras puses, korporatÄ«vo dublÄÅ”anas sistÄmu piegÄdÄtÄji (Veeam, Veritas, Commvault), lai gan atbalsta PostgreSQL, patiesÄ«bÄ viÅi strÄdÄ tikai ar noteiktu (parasti savrupu) konfigurÄciju un ar dažÄdu ierobežojumu kopumu.
DublÄÅ”anas sistÄmas, kas Ä«paÅ”i izstrÄdÄtas PostgreSQL, piemÄram, Barman, Wal-g, pg_probackup, ir ļoti populÄras nelielÄs PostgreSQL DBVS instalÄcijÄs vai gadÄ«jumos, kad nav nepiecieÅ”amas smagas citu IT ainavas elementu dublÄjumkopijas. PiemÄram, papildus PostgreSQL infrastruktÅ«ra var ietvert fiziskos un virtuÄlos serverus, OpenShift, Oracle, MariaDB, Cassandra utt. Ieteicams to visu dublÄt ar kopÄ«gu rÄ«ku. AtseviŔķa risinÄjuma instalÄÅ”ana tikai PostgreSQL ir slikta ideja: dati tiks pÄrkopÄti kaut kur diskÄ, un pÄc tam tie ir jÄnoÅem lentÄ. Å Ä« dubultÄ dublÄÅ”ana palielina dublÄÅ”anas laiku un, vÄl svarÄ«gÄk, atkopÅ”anas laiku.
UzÅÄmuma risinÄjumÄ instalÄcijas dublÄÅ”ana notiek ar noteiktu skaitu mezglu Ä«paÅ”Ä klasterÄ«. TajÄ paÅ”Ä laikÄ, piemÄram, Commvault var strÄdÄt tikai ar divu mezglu klasteri, kurÄ primÄrais un sekundÄrais ir stingri pieŔķirti noteiktiem mezgliem. Un ir jÄga dublÄt tikai no primÄrÄs, jo dublÄÅ”anai no sekundÄrÄs ir savi ierobežojumi. DBVS Ä«patnÄ«bu dÄļ uz Secondary netiek izveidota izgÄztuve, un tÄpÄc paliek tikai faila dublÄÅ”anas iespÄja.
Lai samazinÄtu dÄ«kstÄves risku, veidojot kļūdu izturÄ«gu sistÄmu, tiek izveidota klastera ādzÄ«vÄā konfigurÄcija, un primÄrais var pakÄpeniski migrÄt starp dažÄdiem serveriem. PiemÄram, Patroni programmatÅ«ra pati palaiž primÄro nejauÅ”i izvÄlÄtÄ klastera mezglÄ. IBS nevar to izsekot, un, ja konfigurÄcija mainÄs, procesi pÄrtrÅ«kst. Tas ir, ÄrÄjÄs kontroles ievieÅ”ana neļauj ISR darboties efektÄ«vi, jo vadÄ«bas serveris vienkÄrÅ”i nesaprot, no kurienes un kÄdi dati ir jÄkopÄ.
VÄl viena problÄma ir dublÄÅ”anas ievieÅ”ana programmÄ Postgres. Tas ir iespÄjams, izmantojot dump, un tas darbojas nelielÄs datu bÄzÄs. Bet lielÄs datu bÄzÄs izgÄztuve aizÅem ilgu laiku, prasa daudz resursu un var izraisÄ«t datu bÄzes instances kļūmi.
Failu dublÄÅ”ana izlabo situÄciju, bet lielÄs datu bÄzÄs tas ir lÄns, jo darbojas viena pavediena režīmÄ. TurklÄt pÄrdevÄjiem ir vairÄki papildu ierobežojumi. Vai nu jÅ«s nevarat vienlaikus izmantot failu un dublÄjumus, vai arÄ« netiek atbalstÄ«ta dublÄÅ”ana. ProblÄmu ir daudz, un visbiežÄk Postgres vietÄ ir vieglÄk izvÄlÄties dÄrgu, bet pÄrbaudÄ«tu DBVS.
Nav kur atkÄpties! Maskavas izstrÄdÄtÄji ir aiz muguras!
TomÄr nesen mÅ«su komanda saskÄrÄs ar sarežģītu izaicinÄjumu: AIS OSAGO 2.0 izveides projektÄ, kurÄ izveidojÄm IT infrastruktÅ«ru, izstrÄdÄtÄji jaunajai sistÄmai izvÄlÄjÄs PostgreSQL.
Lieliem programmatÅ«ras izstrÄdÄtÄjiem ir daudz vieglÄk izmantot āmodernusā atvÄrtÄ pirmkoda risinÄjumus. Facebook ir pietiekami daudz speciÄlistu, lai atbalstÄ«tu Ŕīs DBVS darbÄ«bu. Un RSA gadÄ«jumÄ visi āotrÄs dienasā uzdevumi gulÄja uz mÅ«su pleciem. Mums bija jÄnodroÅ”ina kļūdu tolerance, jÄsamontÄ klasteris un, protams, jÄizveido dublÄjums. DarbÄ«bas loÄ£ika bija Å”Äda:
- MÄciet SRK izveidot dublÄjumus no klastera primÄrÄ mezgla. Lai to izdarÄ«tu, SRK tas ir jÄatrod ā tas nozÄ«mÄ, ka ir nepiecieÅ”ama integrÄcija ar vienu vai otru PostgreSQL klasteru pÄrvaldÄ«bas risinÄjumu. RSA gadÄ«jumÄ Å”im nolÅ«kam tika izmantota programmatÅ«ra Patroni.
- Izlemiet par dublÄjuma veidu, pamatojoties uz datu apjomu un atkopÅ”anas prasÄ«bÄm. PiemÄram, ja nepiecieÅ”ams detalizÄti atjaunot lapas, izmantojiet izgÄztuvi un, ja datu bÄzes ir lielas un granulÄta atjaunoÅ”ana nav nepiecieÅ”ama, strÄdÄjiet faila lÄ«menÄ«.
- Pievienojiet risinÄjumam bloÄ·ÄÅ”anas dublÄÅ”anas iespÄju, lai izveidotu rezerves kopiju vairÄku pavedienu režīmÄ.
TajÄ paÅ”Ä laikÄ mÄs sÄkotnÄji nolÄmÄm izveidot efektÄ«vu un vienkÄrÅ”u sistÄmu bez milzÄ«giem papildu komponentiem. Jo mazÄk kruÄ·u, jo mazÄka ir personÄla darba slodze un mazÄks IBS atteices risks. MÄs nekavÄjoties izslÄdzÄm pieejas, kas izmantoja Veeam un RMAN, jo divu risinÄjumu kopums jau norÄda uz sistÄmas neuzticamÄ«bu.
Maza burvÄ«ba uzÅÄmÄjdarbÄ«bai
TÄpÄc mums bija jÄgarantÄ uzticama dublÄÅ”ana 10 klasteriem, kuros katrÄ ir 3 mezgli, ar to paÅ”u infrastruktÅ«ru, kas atspoguļojas rezerves datu centrÄ. PostgreSQL datu centri darbojas pÄc aktÄ«vÄ-pasÄ«vÄ principa. KopÄjais datu bÄzes lielums bija 50 TB. Jebkura uzÅÄmuma lÄ«meÅa kontroles sistÄma var viegli tikt galÄ ar to. TaÄu brÄ«dinÄjums ir tÄds, ka sÄkotnÄji Postgres nav ne jausmas par pilnÄ«gu un dziļu saderÄ«bu ar rezerves sistÄmÄm. TÄpÄc mums bija jÄmeklÄ risinÄjums, kam sÄkotnÄji bija maksimÄla funkcionalitÄte kopÄ ar PostgreSQL, un jÄpilnveido sistÄma.
MÄs sarÄ«kojÄm 3 iekÅ”Äjos āhakatonusā - apskatÄ«jÄm vairÄk nekÄ piecdesmit izstrÄdnes, pÄrbaudÄ«jÄm tÄs, veicÄm izmaiÅas saistÄ«bÄ ar mÅ«su hipotÄzÄm un pÄrbaudÄ«jÄm vÄlreiz. PÄc pieejamo opciju pÄrskatÄ«Å”anas mÄs izvÄlÄjÄmies Commvault. Å is produkts varÄtu darboties ar vienkÄrÅ”Äko PostgreSQL klastera instalÄciju, un tÄ atvÄrtÄ arhitektÅ«ra radÄ«ja cerÄ«bas (kas bija pamatotas) uz veiksmÄ«gu attÄ«stÄ«bu un integrÄciju. Commvault var arÄ« dublÄt PostgreSQL žurnÄlus. PiemÄram, Veritas NetBackup saistÄ«bÄ ar PostgreSQL var veikt tikai pilnas dublÄjumkopijas.
VairÄk par arhitektÅ«ru. Commvault pÄrvaldÄ«bas serveri tika instalÄti katrÄ no diviem datu centriem CommServ HA konfigurÄcijÄ. SistÄma ir atspoguļota, pÄrvaldÄ«ta caur vienu konsoli un no HA viedokļa atbilst visÄm uzÅÄmuma prasÄ«bÄm.
MÄs arÄ« ieviesÄm divus fiziskus multivides serverus katrÄ datu centrÄ, ar kuriem pievienojÄm disku masÄ«vus un lentes bibliotÄkas, kas Ä«paÅ”i paredzÄtas dublÄÅ”anai, izmantojot SAN, izmantojot Fibre Channel. PaplaÅ”inÄtÄs dublÄÅ”anas datu bÄzes nodroÅ”inÄja multivides serveru kļūdu toleranci, un katra servera savienoÅ”ana ar katru CSV nodroÅ”inÄja nepÄrtrauktu darbÄ«bu, ja kÄds komponents atteicÄs. SistÄmas arhitektÅ«ra ļauj turpinÄt dublÄÅ”anu pat tad, ja kÄds no datu centriem nokrÄ«t.
Patroni katram klasterim definÄ primÄro mezglu. Tas var bÅ«t jebkurÅ” bezmaksas mezgls datu centrÄ, bet tikai galvenokÄrt. DublÄjumkopijÄ visi mezgli ir sekundÄri.
Lai Commvault saprastu, kurÅ” klastera mezgls ir primÄrais, mÄs integrÄjÄm sistÄmu (pateicoties risinÄjuma atvÄrtajai arhitektÅ«rai) ar Postgres. Å im nolÅ«kam tika izveidots skripts, kas ziÅo par primÄrÄ mezgla paÅ”reizÄjo atraÅ”anÄs vietu Commvault pÄrvaldÄ«bas serverim.
KopumÄ process izskatÄs Å”Ädi:
Patroni atlasa Primary ā Keepalived paÅem IP klasteru un palaiž skriptu ā Commvault aÄ£ents atlasÄ«tajÄ klastera mezglÄ saÅem paziÅojumu, ka tas ir primÄrais ā Commvault automÄtiski pÄrkonfigurÄ dublÄjumu pseidoklientÄ.
Å Ä«s pieejas priekÅ”rocÄ«ba ir tÄda, ka risinÄjums neietekmÄ Å¾urnÄlu konsekvenci, pareizÄ«bu vai Postgres instances atkopÅ”anu. Tas ir arÄ« viegli mÄrogojams, jo vairs nav nepiecieÅ”ams labot Commvault primÄro un sekundÄro mezglu. Pietiek ar to, ka sistÄma saprot, kur atrodas primÄrais, un mezglu skaitu var palielinÄt lÄ«dz gandrÄ«z jebkurai vÄrtÄ«bai.
RisinÄjums nepretendÄ uz ideÄlu un tam ir savas nianses. Commvault var dublÄt tikai visu gadÄ«jumu, nevis atseviŔķas datu bÄzes. TÄpÄc katrai datubÄzei tika izveidota atseviŔķa instance. ReÄlie klienti tiek apvienoti virtuÄlos pseidoklientos. Katrs Commvault pseidoklients ir UNIX klasteris. Tam tiek pievienoti tie klastera mezgli, kuros ir instalÄts Postgres Commvault aÄ£ents. RezultÄtÄ visi pseidoklienta virtuÄlie mezgli tiek dublÄti kÄ viens gadÄ«jums.
KatrÄ pseidoklientÄ ir norÄdÄ«ts klastera aktÄ«vais mezgls. Tas ir tas, ko definÄ mÅ«su Commvault integrÄcijas risinÄjums. TÄs darbÄ«bas princips ir pavisam vienkÄrÅ”s: ja mezglÄ tiek paaugstinÄts klastera IP, skripts Commvault aÄ£enta binÄrajÄ failÄ iestata parametru āactive nodeā - patiesÄ«bÄ skripts iestata ā1ā vajadzÄ«gajÄ atmiÅas daļÄ. . AÄ£ents pÄrsÅ«ta Å”os datus uz CommServe, un Commvault izveido dublÄjumu no vÄlamÄ mezgla. TurklÄt konfigurÄcijas pareizÄ«ba tiek pÄrbaudÄ«ta skripta lÄ«menÄ«, palÄ«dzot izvairÄ«ties no kļūdÄm, uzsÄkot dublÄÅ”anu.
TajÄ paÅ”Ä laikÄ lielas datu bÄzes tiek dublÄtas blokos vairÄkos pavedienos, kas atbilst RPO un rezerves loga prasÄ«bÄm. SistÄmas slodze ir nenozÄ«mÄ«ga: pilnas kopijas nerodas tik bieži, citÄs dienÄs tiek vÄkti tikai žurnÄli un zemas noslodzes periodos.
Starp citu, mÄs esam piemÄrojuÅ”i atseviŔķas politikas PostgreSQL arhÄ«va žurnÄlu dublÄÅ”anai - tie tiek glabÄti saskaÅÄ ar dažÄdiem noteikumiem, tiek kopÄti pÄc cita grafika, un tiem nav iespÄjota dublÄÅ”ana, jo Å”ajos žurnÄlos ir unikÄli dati.
Lai nodroÅ”inÄtu konsekvenci visÄ IT infrastruktÅ«rÄ, katrÄ klastera mezglÄ ir instalÄti atseviŔķi Commvault failu klienti. Tie izslÄdz Postgres failus no dublÄjumkopijÄm un ir paredzÄti tikai OS un lietojumprogrammu dublÄÅ”anai. Å ai datu daļai ir arÄ« sava politika un uzglabÄÅ”anas periods.
PaÅ”laik IBS neietekmÄ produktivitÄtes pakalpojumus, taÄu, ja situÄcija mainÄs, Commvault var iespÄjot slodzes ierobežoÅ”anu.
Vai tas ir labs? Labi!
TÄtad mÄs esam saÅÄmuÅ”i ne tikai funkcionÄjoÅ”u, bet arÄ« pilnÄ«bÄ automatizÄtu dublÄjumu PostgreSQL klastera instalÄÅ”anai, un tas atbilst visÄm uzÅÄmuma zvanu prasÄ«bÄm.
RPO un RTO parametri 1 stunda un 2 stundas ir pÄrklÄti ar rezervi, kas nozÄ«mÄ, ka sistÄma tos ievÄros pat ievÄrojami palielinot uzglabÄto datu apjomu. PretÄji daudzÄm Å”aubÄm, PostgreSQL un uzÅÄmuma vide izrÄdÄ«jÄs diezgan saderÄ«ga. Un tagad mÄs no savas pieredzes zinÄm, ka Å”Ädu DBVS dublÄÅ”ana ir iespÄjama dažÄdÄs konfigurÄcijÄs.
Protams, pa Å”o ceļu bija jÄnovalkÄ septiÅi dzelzs zÄbaku pÄri, jÄpÄrvar vairÄkas grÅ«tÄ«bas, jÄuzkÄpj uz vairÄkiem grÄbekļiem un jÄizlabo vairÄkas kļūdas. Bet tagad Ŕī pieeja jau ir pÄrbaudÄ«ta, un to var izmantot, lai ieviestu atvÄrtÄ pirmkoda, nevis patentÄtu DBVS skarbos uzÅÄmuma apstÄkļos.
Vai esat mÄÄ£inÄjis strÄdÄt ar PostgreSQL korporatÄ«vajÄ vidÄ?
Autori:
Oļegs Lavrenovs, Jet Infosystems datu uzglabÄÅ”anas sistÄmu projektÄÅ”anas inženieris
Dmitrijs Erikins, Jet Infosystems datorsistÄmu projektÄÅ”anas inženieris
Avots: www.habr.com