Paljud inimesed tunnevad PostgreSQL DBMS-i ja see on end vĂ€ikestes installides tĂ”estanud. Avatud lĂ€htekoodi suundumus on aga muutunud ĂŒha selgemaks, isegi kui tegemist on suurettevĂ”tete ja ettevĂ”tete nĂ”uetega. Selles artiklis rÀÀgime teile, kuidas Postgres ettevĂ”tte keskkonda integreerida, ja jagame oma kogemusi selle andmebaasi varundussĂŒsteemi (BSS) loomisel, kasutades nĂ€itena Commvaulti varundussĂŒsteemi.

PostgreSQL on end juba tĂ”estanud â DBMS töötab suurepĂ€raselt, seda kasutavad moodsad digiettevĂ”tted nagu Alibaba ja TripAdvisor ning litsentsitasude puudumine muudab selle ahvatlevaks alternatiiviks sellistele koletistele nagu MS SQL vĂ”i Oracle DB. Kuid niipea, kui hakkame Enterprise maastikul mĂ”tlema PostgreSQL-ile, pĂ”rkame kohe karmide nĂ”ueteni: âAga konfiguratsiooni veataluvus? katastroofi vastupanu? kus on terviklik seire? Aga automaatsed varukoopiad? Kuidas on lood lindiraamatukogude kasutamisega nii otse kui ka teiseses mĂ€lus?

Ăhest kĂŒljest pole PostgreSQL-il sisseehitatud varundustööriistu, nagu "tĂ€iskasvanute" DBMS-id, nagu RMAN Oracle DB-s vĂ”i SAP Database Backup. Teisest kĂŒljest, ettevĂ”tete varusĂŒsteemide tarnijad (Veeam, Veritas, Commvault), kuigi nad toetavad PostgreSQL-i, töötavad nad tegelikult ainult teatud (tavaliselt eraldiseisva) konfiguratsiooniga ja mitmesuguste piirangutega.
PostgreSQL-spetsiifilised varundussĂŒsteemid, nĂ€iteks Barman, Wal-g ja pg_probackup, on ÀÀrmiselt populaarsed vĂ€ikestes PostgreSQL-i installatsioonides vĂ”i kohtades, kus pole vaja teha mahukaid varukoopiaid muudest IT-maastiku elementidest. NĂ€iteks lisaks PostgreSQL-ile vĂ”ib infrastruktuur hĂ”lmata nii fĂŒĂŒsilisi kui ka virtuaalseid varundussĂŒsteeme. serverid, OpenShift, Oracle, MariaDB, Cassandra jne. KĂ”ige parem on neid kĂ”iki varundada ĂŒhise varundustööriista abil. Eraldi lahenduse juurutamine ainult PostgreSQL-i jaoks on halb mĂ”te: andmed kopeeritakse kuhugi kettale ja seejĂ€rel tuleb need lindile teisaldada. See varukoopiate dubleerimine pikendab varundamise aega ja mis veelgi olulisem, taastamisaega.
EttevÔtluslahenduse puhul toimub installi varundamine teatud arvu sÔlmedega spetsiaalses klastris. Samal ajal saab nÀiteks Commvault töötada ainult kahe sÔlmega klastriga, kus Primary ja Secondary on rangelt mÀÀratud teatud sÔlmedele. Ja varundamine on mÔttekas ainult esmasest, kuna sekundaarsest varundamisel on oma piirangud. DBMS-i iseÀrasuste tÔttu ei teki Secondary'is tÔmmist ja seetÔttu jÀÀb alles vaid faili varundamise vÔimalus.
Seisakuohu vĂ€hendamiseks luuakse tĂ”rketaluva sĂŒsteemi loomisel klastri âaktiivneâ konfiguratsioon ja Primary saab jĂ€rk-jĂ€rgult migreeruda erinevate serverite vahel. NĂ€iteks Patroni tarkvara ise kĂ€ivitab esmase suvaliselt valitud klastri sĂ”lmel. IBS-il pole vĂ”imalust seda karbist vĂ€lja vĂ”tta ja kui konfiguratsioon muutub, protsessid katkevad. See tĂ€hendab, et vĂ€lise kontrolli kasutuselevĂ”tt takistab ISR-i tĂ”husat töötamist, kuna juhtimisserver lihtsalt ei saa aru, kust ja milliseid andmeid tuleb kopeerida.
Teine probleem on varundamise rakendamine Postgresis. See on vĂ”imalik prĂŒgikasti kaudu ja see töötab vĂ€ikestes andmebaasides. Kuid suurtes andmebaasides vĂ”tab dump kaua aega, nĂ”uab palju ressursse ja vĂ”ib pĂ”hjustada andmebaasi eksemplari rikke.
Failide varundamine parandab olukorra, kuid suurtes andmebaasides on see aeglane, kuna töötab ĂŒhe lĂ”ime reĆŸiimis. Lisaks on mĂŒĂŒjatel mitmeid tĂ€iendavaid piiranguid. Te ei saa faile ja varukoopiaid samaaegselt kasutada vĂ”i dubleerimist ei toetata. Probleeme on palju ja enamasti on Postgresi asemel lihtsam valida kallis, kuid end tĂ”estanud DBMS.
Taganeda pole kuhugi! Moskva arendajad on selja taga!
Hiljuti seisis meie meeskond aga silmitsi keerulise vĂ€ljakutsega: AIS OSAGO 2.0 loomise projektis, kus lĂ”ime IT-infrastruktuuri, valisid arendajad uueks sĂŒsteemiks PostgreSQL-i.
Suurtel tarkvaraarendajatel on palju lihtsam kasutada âtrendikaidâ avatud lĂ€htekoodiga lahendusi. Facebookil on selle DBMS-i toimimise toetamiseks piisavalt spetsialiste. Ja RSA puhul langesid kĂ”ik âteise pĂ€evaâ ĂŒlesanded meie Ă”lule. Meilt nĂ”uti tĂ”rketaluvuse tagamist, klastri kokkupanemist ja loomulikult varukoopia seadistamist. Tegevuse loogika oli jĂ€rgmine:
- Ăpetage SRK-d tegema varukoopiaid klastri esmasest sĂ”lmest. Selleks peab SRK selle ĂŒles leidma â mis tĂ€hendab, et on vaja integreerida ĂŒhe vĂ”i teise PostgreSQL klastrihalduslahendusega. RSA puhul kasutati selleks Patroni tarkvara.
- Otsustage varukoopia tĂŒĂŒp andmete mahu ja taastamisnĂ”uete pĂ”hjal. NĂ€iteks kui teil on vaja lehti ĂŒksikasjalikult taastada, kasutage tĂ”mmist ja kui andmebaasid on suured ja detailset taastamist pole vaja, töötage faili tasemel.
- Mitme lĂ”imega reĆŸiimis varukoopia loomiseks ĂŒhendage lahendusele ploki varundamise vĂ”imalus.
Samal ajal pĂŒĂŒdsime algselt luua tĂ”husa ja lihtsa sĂŒsteemi ilma lisakomponentide koletu rakmeteta. Mida vĂ€hem karkusid, seda vĂ€iksem on töötajate töökoormus ja seda vĂ€iksem on IBS-i ebaĂ”nnestumise oht. VĂ€listasime koheselt Veeami ja RMAN-i kasutanud lĂ€henemised, sest juba kahest lahendusest koosnev komplekt vihjab sĂŒsteemi ebausaldusvÀÀrsusele.
VÀike maagia ettevÔtmiseks
Seega pidime tagama usaldusvÀÀrse varukoopia 10 klastri jaoks, millest igaĂŒhes oli 3 sĂ”lme, kusjuures varuandmekeskuses peegeldub sama infrastruktuur. PostgreSQL-i andmekeskused töötavad aktiivse-passiivse pĂ”himĂ”ttel. Andmebaasi kogumaht oli 50 TB. Iga ettevĂ”tte tasemel juhtimissĂŒsteem saab sellega hĂ”lpsasti hakkama. Kuid hoiatus on see, et esialgu pole Postgresil aimugi tĂ€ielikust ja sĂŒgavast ĂŒhilduvusest varusĂŒsteemidega. SeetĂ”ttu pidime otsima lahendust, millel oli algselt maksimaalne funktsionaalsus koos PostgreSQL-iga, ja sĂŒsteemi viimistleda.
Tegime 3 sisemist âhackathoniâ â vaatasime ĂŒle viiekĂŒmne arenduse, testisime neid, tegime seoses oma hĂŒpoteesidega muudatusi ja testisime uuesti. PĂ€rast saadaolevate valikute ĂŒlevaatamist valisime Commvaulti. Karbist vĂ€lja vĂ”ttes vĂ”iks see toode töötada lihtsa PostgreSQL-klastri installiga ning selle avatud arhitektuur tekitas lootusi (mis oli Ă”igustatud) edukaks arendamiseks ja integreerimiseks. Commvault saab varundada ka PostgreSQL-i logisid. NĂ€iteks Veritas NetBackup saab PostgreSQL-i osas teha ainult tĂ€ielikke varukoopiaid.
Veel arhitektuurist. Commvaulti haldusserverid paigaldati mĂ”lemasse andmekeskusesse CommServ HA konfiguratsioonis. SĂŒsteem on peegelpildis, seda hallatakse ĂŒhe konsooli kaudu ja HA seisukohast vastab see kĂ”igile ettevĂ”tte nĂ”uetele.

Samuti kĂ€ivitasime igas andmekeskuses kaks fĂŒĂŒsilist meediumiserverit, millega ĂŒhendasime spetsiaalselt SAN-i kaudu Fibre Channeli kaudu varundamiseks mĂ”eldud kettamassiivid ja linditeegid. Laiendatud dubleerimise andmebaasid tagasid meediumiserverite tĂ”rketaluvuse ja iga serveri ĂŒhendamine iga CSV-ga vĂ”imaldas pidevat tööd, kui mĂ”ni komponent ebaĂ”nnestus. SĂŒsteemi arhitektuur vĂ”imaldab varundamise jĂ€tkamist isegi siis, kui ĂŒks andmekeskustest kukub.
Patroni mÀÀrab iga klastri jaoks esmase sÔlme. See vÔib olla andmekeskuse mis tahes vaba sÔlm, kuid ainult enamasti. Varukoopias on kÔik sÔlmed sekundaarsed.
Selleks, et Commvault saaks aru, milline klastri sĂ”lm on primaarne, integreerisime sĂŒsteemi (lahenduse avatud arhitektuuri tĂ”ttu) Postgresiga. Sel eesmĂ€rgil lĂ”ime skripti, mis teatab haldurile primaarse sĂ”lme praeguse asukoha. server Commvault.
Ăldiselt nĂ€eb protsess vĂ€lja selline:
Patroni valib Primary â Keepalived valib IP-klastri ja kĂ€ivitab skripti â Commvaulti agent valitud klastri sĂ”lmel saab teate, et see on esmane â Commvault konfigureerib pseudokliendis varukoopia automaatselt ĂŒmber.

Selle lĂ€henemisviisi eeliseks on see, et lahendus ei mĂ”juta Postgresi eksemplari jĂ€rjepidevust, logide Ă”igsust ega taastamist. Samuti on see hĂ”lpsasti skaleeritav, kuna enam pole vaja Commvault primaarset ja sekundaarset sĂ”lme parandada. Piisab, kui sĂŒsteem mĂ”istab, kus on Primary, ja sĂ”lmede arvu saab suurendada peaaegu iga vÀÀrtuseni.
Lahendus ei pretendeeri ideaalsele ja sellel on omad nĂŒansid. Commvault saab varundada ainult kogu eksemplari, mitte ĂŒksikuid andmebaase. SeetĂ”ttu loodi iga andmebaasi jaoks eraldi eksemplar. PĂ€riskliendid ĂŒhendatakse virtuaalseteks pseudoklientideks. Iga Commvaulti pseudoklient on UNIX-i klaster. Sellele lisatakse need klastri sĂ”lmed, kuhu on installitud Postgresi Commvault agent. Selle tulemusena varundatakse kĂ”ik pseudokliendi virtuaalsed sĂ”lmed ĂŒhe eksemplarina.
Igas pseudokliendis on nĂ€idatud klastri aktiivne sĂ”lm. Seda mÀÀratleb meie Commvaulti integratsioonilahendus. Selle tööpĂ”himĂ”te on ĂŒsna lihtne: kui sĂ”lmel tĂ”stetakse klastri IP-aadress, mÀÀrab skript Commvault agendi binaarfailis parameetri "aktiivne sĂ”lm" - tegelikult mÀÀrab skript mĂ€lu vajalikus osas "1" . Agent edastab need andmed CommServe'ile ja Commvault teeb soovitud sĂ”lmest varukoopia. Lisaks kontrollitakse konfiguratsiooni Ă”igsust skripti tasemel, mis aitab vĂ€ltida vigu varukoopia kĂ€ivitamisel.
Samal ajal varundatakse suuri andmebaase mitme lĂ”ime kaupa plokkidena, mis vastavad RPO ja varundusakna nĂ”uetele. SĂŒsteemi koormus on ebaoluline: tĂ€iskoopiaid ei teki nii sageli, muudel pĂ€evadel kogutakse ainult logisid ja madala koormuse perioodil.
Muide, oleme PostgreSQL-i arhiivilogide varundamiseks rakendanud eraldi poliitikaid - neid salvestatakse erinevate reeglite jÀrgi, kopeeritakse erineva ajakava jÀrgi ja nende jaoks pole deduplikatsioon lubatud, kuna need logid sisaldavad unikaalseid andmeid.
Kogu IT infrastruktuuri jÀrjepidevuse tagamiseks installitakse igasse klastri sÔlme eraldi Commvaulti failikliendid. Need vÀlistavad Postgresi failid varukoopiatest ja on mÔeldud ainult OS-i ja rakenduste varundamiseks. Sellel andmete osal on ka oma poliitika ja sÀilitusaeg.

Praegu IBS tootlikkuse teenuseid ei mÔjuta, kuid olukorra muutumisel saab Commvault lubada koormuse piiramist.
Kas see on hea? Hea!
Seega oleme saanud PostgreSQL-i klastri installimiseks mitte ainult toimiva, vaid ka tÀielikult automatiseeritud varukoopia, mis vastab kÔigile ettevÔtte kÔnede nÔuetele.
RPO ja RTO parameetrid 1 tund ja 2 tundi on kaetud marginaaliga, mis tĂ€hendab, et sĂŒsteem jĂ€rgib neid isegi salvestatud andmete mahu olulise suurenemise korral. Vastupidiselt paljudele kahtlustele osutus PostgreSQL ja ettevĂ”tte keskkond ĂŒsna ĂŒhilduvaks. Ja nĂŒĂŒd teame oma kogemusest, et selliste DBMS-ide varundamine on vĂ”imalik paljudes konfiguratsioonides.
Loomulikult tuli sel teel Ă€ra kulutada seitse paari raudsaapaid, ĂŒletada hulk raskusi, astuda mitme reha otsa ja parandada hulk vigu. Kuid nĂŒĂŒd on seda lĂ€henemisviisi juba testitud ja seda saab kasutada avatud lĂ€htekoodiga DBMS-i asemel karmides ettevĂ”tte tingimustes.
Kas olete proovinud PostgreSQL-iga töötada ettevÔtte keskkonnas?
Autorid:
Oleg Lavrenov, Jet Infosystemsi andmesalvestussĂŒsteemide projekteerimisinsener
Dmitri ErĂ”kin, Jet Infosystemsi arvutisĂŒsteemide projekteerimisinsener
Allikas: www.habr.com
