Kuidas mage «vaba» PostgreSQL karmidesse ettevÔtte keskkondadesse

Paljud tunnevad PostgreSQL andmebaasi, ja see on suurepĂ€raselt tĂ”estanud end vĂ€ikestes installatsioonides. Kuid avatud lĂ€htekoodiga lahendustele ĂŒlemineku trend on saanud ĂŒha selgemaks, isegi suurte ettevĂ”tete ja ettevĂ”tte nĂ”udmiste puhul. Selles artiklis rÀÀgime, kuidas PostgreSQL-i ettevĂ”tte keskkonda integreerida ning jagame kogemusi varukoopiate loomise sĂŒsteemi (VKS) loomisel antud andmebaasi jaoks Commvault'i varukoopiate sĂŒsteemi nĂ€itel.

Kuidas mage «vaba» PostgreSQL karmidesse ettevÔtte keskkondadesse
PostgreSQL on juba tĂ”estanud oma usaldusvÀÀrsuse - andmebaas töötab suurepĂ€raselt, seda kasutavad tuntud digitaalsed Ă€rid nagu Alibaba ja TripAdvisor ning litsentsitasude puudumine teeb sellest ahvatleva alternatiivi sellistele hiiglastele nagu MS SQL vĂ”i Oracle DB. Kuid niipea kui hakkame mĂ”tlema PostgreSQL-ile ettevĂ”tte maastikus, satume kohe rangete nĂ”udmiste otsa: "Kuidas on olukord konfiguratsiooni talitlushĂ€irete ĂŒleelamisega? katastroofide ĂŒleelamisega? kus on terviklik jĂ€lgimine? ja automatiseeritud varukoopiad? ja teipekogu kasutamine otse ja teise taseme salvestusena?"

Kuidas mage «vaba» PostgreSQL karmidesse ettevÔtte keskkondadesse
Ühest kĂŒljest ei ole PostgreSQL-il sisseehitatud varundusvahendeid, nagu nĂ€iteks Oracle DB RMAN vĂ”i SAP andmebaasi varukoopia. Teisest kĂŒljest toetavad ettevĂ”tete varundussĂŒsteemide pakkujad (Veeam, Veritas, Commvault) PostgreSQL-i, kuid tegelikult töötavad nad ainult teatud (tavaliselt iseseisva) konfiguratsiooni ja erinevate piirangutega.

PostgreSQLile spetsiaalselt vĂ€lja töötatud varundussĂŒsteemid, nagu Barman, Wal-g, pg_probackup, on ÀÀrmiselt populaarsed vĂ€ikestes PostgreSQL andmebaasi installatsioonides vĂ”i seal, kus ei ole vaja raskete tagavarade teisi IT-maastiku elemente. NĂ€iteks, lisaks PostgreSQL-ile vĂ”ib infrastruktuuris olla fĂŒĂŒsilisi ja virtuaalseid komponente. serverid, OpenShift, Oracle, MariaDB, Cassandra jne. KĂ”ike seda on soovitav varundada ĂŒhise tööriistaga. Eraldi lahenduse seadmine vaid PostgreSQL-ile on kehv idee: andmed kopeeritakse kuhugi ketastele ja seejĂ€rel tuleb need lindile asetada. Selline varunduse dubleerimine pikendab varukoopiate aega ning veelgi kriitilisemalt - taastamisaega.

Enterprise lahenduses toimuvad installatsioonide varukoopiad pĂŒhendatud klastrite teatud arvu sĂ”lmedelt. NĂ€iteks suudab Commvault töötada vaid kahe sĂ”lmega klastriga, kus Primary ja Secondary on kindlalt mÀÀratud teatud sĂ”lmedele. Varukoopia tegemiseks on mĂ”tet kasutada ainult Primary't, kuna varukoopiad Secondary'lt ĂŒldiselt ei toimi. Andmebaasi eripĂ€ra tĂ”ttu ei tehta Secondary-l dump'i, seega jÀÀb alles vaid failide varukoopia vĂ”imalus.

Aasta seisaku riski vĂ€hendamiseks luuakse ebaĂ”nnestumisvastane sĂŒsteem, mis loob „elava” klastrikonfiguratsiooni ning Primary vĂ”ib jĂ€rk-jĂ€rgult migreeruda erinevate serverite vahel. NĂ€iteks tarkvara Patroni kĂ€ivitab ise Primary'st juhuslikult valitud sĂ”lmel. SRK-l ei ole selle „kastist vĂ€ljas” jĂ€lgimise meetodit ja konfiguratsiooni muutudes puruneb protsess. See tĂ€hendab, et vĂ€line juhtimine takistab SRK tĂ”husat tööd, sest juhtimisserver lihtsalt ei mĂ”ista, kust ja milliseid andmeid kopeerida.

Veel ĂŒks probleem on varukoopia teostamine Postgreses. See on vĂ”imalik dump'i kaudu ja vĂ€ikeste andmebaaside puhul toimib see hĂ€sti. Kuid suurte andmebaaside puhul kestab dump'imine kaua, nĂ”uab palju ressursse ja vĂ”ib pĂ”hjustada andmebaasi eksemplari kokkuvarisemise.

Faili varukoopia lahendab probleemi, kuid suurte andmebaaside puhul kulgeb see aeglaselt, kuna see töötab ĂŒhesuunaliselt. Lisaks tekib tootjatel terve rida tĂ€iendavaid piiranguid. Ükski ei tohi samaaegselt kasutada faili- ja dump-varukoopiat ning dedupeerimist ei toetata. Probleeme on palju ja tihti on lihtsam valida kallis, kuid tĂ”estatud andmebaas Postgresi asemel.

Taganeda pole kuhugi! Tagapool on Moskvas arendajad!

Kuid hiljuti seisis meie meeskond keerulise vĂ€ljakutse ees: projektis AISI OSAGO 2.0, kus me tegime IT-infrastruktuuri, valisid arendajad uue sĂŒsteemi jaoks PostgreSQL-i.

Suurtel tarkvaraarendajatel on palju lihtsam kasutada „moodsaid” avatud lĂ€htekoodiga lahendusi. Facebooki töötajaskonnas on piisavalt spetsialiste, kes hooldavad selle andmebaasi tööd. RSA puhul langesid kĂ”ik „teise pĂ€eva” ĂŒlesanded meie Ă”lule. Meilt nĂ”uti ebaĂ”nnestumisvastasuse tagamist, klastrite loomist ja loomulikult varukoopia seadistamist. Tegevuse loogika oli jĂ€rgmine:

  • Koolitada SRK-d tegema varukoopiaid klastrite peanoodist. Selleks peab SRK suutma seda leida - seega on vajalik integratsioon mĂ”ne PostgreSQL klastrihalduse lahendusega. RSC puhul kasutati selleks tarkvara nimega Patroni.
  • MÀÀrata bĂŒkapi tĂŒĂŒp, lĂ€htudes andmemahtudest ja taastamise nĂ”udmistest. NĂ€iteks, kui tuleb lehti taastada granulaarselt, tuleks kasutada dump’i, aga kui andmebaasid on suured ja granulaarne taastamine ei ole vajalik - töötada failitasemel.
  • Lisada lahendusele vĂ”imalus plokkvargus, et luua varukoopiaid mitme lĂ”ime reĆŸiimis.

Kuna alguses seadsime eesmĂ€rgiks luua tĂ”hus ja lihtne sĂŒsteem ilma tohutu tĂ€iendava komponentide koormata. Mida vĂ€hem tugivahendeid, seda vĂ€hem koormust personali jaoks ja madalam risk SRK tĂ”rgeteks. LĂ€henemised, kus kasutati Veeam ja RMAN, jĂ€tsime kohe vĂ€lja, kuna kahekĂ€teline lahendus viitab juba sĂŒsteemi ebausaldusvÀÀrsusele.

Veidi maagiat ettevÔtete jaoks

Nii et meil tuli tagada usaldusvÀÀrne varundamine 10 klastrile, igaĂŒhes 3 nööbid, samal ajal kui varu-andmesaalis asub identne infrastruktuur. Andmesaalid toimivad PostgreSQL osas aktiiv-passiiv printsipil. Andmebaaside kogumaht oli 50 TB. Sellega suudab hakkama saada igasugune ettevĂ”tte taseme SRK. Kuid nĂŒanss on selles, et PostgreSQL-l puudub algselt igasugune tugivĂ”imalus tĂ€ielikuks ja sĂŒvitsi integreeritud varundamissĂŒsteemidega. SeetĂ”ttu pidime leidma lahenduse, mis algselt pakuks maksimaalset funktsionaalsust PostgreSQL-iga ning tĂ€iustama sĂŒsteemi.

Viisime lĂ€bi 3 sisemist "hackathoni" - vaatasime ĂŒle rohkem kui poolteist tosinat arendust, testisime neid, tegime muudatusi oma hĂŒpoteeside tĂ”ttu, kontrollisime uuesti. AnalĂŒĂŒsinud saadaval olevad valikud, valisime Commvault. See toode suutis "karbist vĂ€lja" töötada kĂ”ige lihtsama klastritehelndusega PostgreSQLiga, ja selle avatud arhitektuur tekitas lootusi (mis osutusid Ă”igeks) edukaks tĂ€iustamiseks ja integreerimiseks. Commvault suudab ka PostgreSQL logide varundamist teha. NĂ€iteks Veritas NetBackup suudab PostgreSQL osas teha ainult tĂ€is varukoopiaid.

Lisaks arsitektuurist. Commvault'i haldussĂŒsteemid on paigaldatud igas kahe andmekeskuse CommServ HA konfiguratsioonis. SĂŒsteem on peegeldav, seda haldatakse ĂŒhe konsooli kaudu ja HA seisukohalt vastab see kĂ”igile ettevĂ”tte nĂ”uetele.

Kuidas mage «vaba» PostgreSQL karmidesse ettevÔtte keskkondadesse
Samuti oleme igas andmekeskuses kĂ€ivitanud kaks fĂŒĂŒsilist meediaserverit, millele on SAN kaudu ĂŒhendatud spetsiaalselt varukoopiate jaoks ette nĂ€htud diskiriiulid ja lintraamatukogud. Jagatud dedupikatsioonibaasid tagavad meediaserverite rikke taluvuse, ning iga serveri ĂŒhendamine igasse CSV-sse vĂ”imaldab katkematut tööd, isegi kui mĂ”ni komponent ebaĂ”nnestub. SĂŒsteemi arhitektuur vĂ”imaldab jĂ€tkata varukoopiate tegemist isegi siis, kui ĂŒks andmekeskus kukub vĂ€lja.

Patroni mÀÀrab igas klastris Primary sÔlme. See vÔib olla iga vaba sÔlm andmekeskuses - aga ainult pÔhiklastris. Varuklastris on kÔik sÔlmed - Secondary.

Kuna Commvault peab teadma, milline klastrisĂ”lm on Primary, integreerisime sĂŒsteemi (tĂ€nu avatud arhitektuurile) Postgressiga. Selleks loodi skript, mis edastab teavet hetke Primary sĂ”lme asukoha kohta haldussĂŒsteemile. serveri Commvault.

KokkuvÔttes nÀeb protsess vÀlja selline:

Patroni valib Primary → Keepalived tĂ”stab IP-klastri ja kĂ€ivitab skripti → Commvaulti agent valitud klastrisĂ”lmes saab teate, et see on Primary → Commvault kohandab automaatselt varukoopiat psĂŒhhokliendi raames.

Kuidas mage «vaba» PostgreSQL karmidesse ettevÔtte keskkondadesse
Selle meetodi pluss on see, et lahendus ei mĂ”juta ei jĂ€rjepidevust, ei logide korrektsust, ega Postgressi instantsi taastamist. See on samuti kergesti skaleeritav, kuna Commvault ei pea enam fikseerima Primary ja Secondary sĂ”lmi. Piisab, et sĂŒsteem mĂ”istab, kus on Primary, ning sĂ”lmede arvu saab peaaegu piiramatus mahus suurendada.

Lahendus ei pretendeeri ideaalile ja tal on oma nĂŒansid. Commvault oskab varundada ainult kogu instantsi, mitte eraldi andmebaase. SeetĂ”ttu on iga andmebaasi jaoks loodud eraldi instants. Reaalsed kliendid on ĂŒhendatud virtuaalseteks psĂŒhhoklientideks. Iga psĂŒhhokliendi Commvault on UNIX klaster. Sellesse lisatakse need klastrisĂ”lmed, kus on installitud Commvaulti agent Postgres jaoks. Tulemuseks on see, et kĂ”ik virtuaalsed psĂŒhhokliendi sĂ”lmed varundatakse kui ĂŒks instants.

Iga iga valeklient sisaldab aktiivset klastrinoodi. Just seda mÀÀratleb meie integreerimislahendus Commvaultile. Selle tööpĂ”himĂ”te on piisavalt lihtne: kui nodis aktiveeritakse klastripĂ”hine IP, seadistab skript Commvault'i agendi binaaris „aktiivne nod“, mille stsenaarium sisuliselt paneb „1“ vajaliku mĂ€lukoha. Agent edastab need andmed CommServe'ile ja Commvault teeb varukoopia soovitud sĂ”lmel. Lisaks sellele kontrollib skript konfiguratsiooni korrektsust, vĂ€ltides varukoopiate kĂ€ivitamisel vigu.

Selle kĂ€igus varukoopiatakse suured andmebaasid plokkide jĂ€rgi mitmes voos, vastates RPO ja varukoopiate akna nĂ”uetele. Koormus sĂŒsteemile on vĂ€ike: TĂ€iskoopiad toimuvad mitte nii sageli, ĂŒlejÀÀnud pĂ€evadel kogutakse ainult logisid, ja need tehakse madala koormuse perioodidel.

Muide, oleme rakendanud eraldi poliitikaid PostgreSQL arhiivilogide varundamiseks - need sÀilitatakse muude reeglite kohaselt, kopeeritakse muude ajakavade jÀrgi ning nende jaoks ei aktiveerita deduplicationi, kuna need logid sisaldavad unikaalseid andmeid.

Konsistentsuse tagamiseks kogu IT infrastruktuuris on Commvault'i eraldi failiklientide installatsioon iga klastrinoodi peal. Need vÀlistavad varukoopiatest Postgres failid ja on mÔeldud ainult OSu ja rakenduslike programmide varundamiseks. Selle andmegrupi jaoks on ette nÀhtud ka oma poliitika ja hoidmise periood.

Kuidas mage «vaba» PostgreSQL karmidesse ettevÔtte keskkondadesse
Praegu ei mĂ”juta SRK tootlikke teenuseid, kuid kui olukord muutub, saab Commvaultis aktiveerida koormuse piiramise sĂŒsteemi.

Sobib? Sobib!

Nii oleme saanud mitte ainult funktsionaalse, vaid ka tÀielikult automatiseeritud varukoopia PostgreSQL klastripaigaldusest, vastates kÔikidele ettevÔtte nÔudmistele.

RPO ja RTO parameetrid 1 tunni ja 2 tunni kohta on ĂŒletatud varuga, mis tĂ€hendab, et sĂŒsteem vastab neile ka andmehulga oluliselt suurenemise korral. Vastupidiselt paljudele kahtlustele osutus PostgreSQL ja ettevĂ”tte keskkond tĂ€iesti ĂŒhilduvaks. Ja nĂŒĂŒd teame oma kogemusel, et varundamine selliste andmebaasisĂŒsteemide jaoks on vĂ”imalik kĂ”ige mitmekesisemates konfiguratsioonides.

Muidugi pidime sellel teel kulutama seitse paari metalljalatseid, ĂŒletama mitmeid raskusi, astuma mitmeid miine ja parandama hulgaliselt vigu. Kuid nĂŒĂŒd on meetod juba katsetatud ja seda saab kasutada Open Source'i rakendamiseks mitte-kasutajate andmebaaside asemel Ă€ritegevuse karmides tingimustes.

Kas olete proovinud töötada PostgreSQL-iga ettevÔtte keskkonnas?

Autorid:

Oleg Lavrenov, andmesalvestussĂŒsteemide projekteerimise insener «Infosystemid Jet»

Dmitri Erikin, arvutuskomplekside projekteerimise insener «Infosystemid Jet»

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster