Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Hadafka ugu weyn ee Patroni waa inuu bixiyo Helitaanka Sare ee PostgreSQL. Laakiin Patroni waa uun qaab-dhismeedka, ma aha qalab diyaarsan (kaas oo, guud ahaan, lagu sheegay dukumeentiyada). Jaleecada hore, markaad dejisay Patroni shaybaarka tijaabada, waxaad arki kartaa waxa ay tahay aalad weyn iyo sida ugu fudud ee ay u maareyso iskudayyadayada ah inaan jebino kooxda. Si kastaba ha noqotee, ficil ahaan, jawi wax soo saar, wax walbaa had iyo jeer uma dhacaan si qurux badan oo qurux badan sida shaybaarka tijaabada.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Wax yar baan kaaga sheegi doonaa nafteyda. Waxaan ku bilaabay nidaam maamule ahaan. Ka shaqeeyay horumarinta shabakadda Waxaan ka shaqeynayay Data Egret ilaa 2014. Shirkaddu waxay ku hawlan tahay la-talinta berrinka Postgres. Oo waxaanu u adeegnaa sida saxda ah Postgres, waxaana la shaqaynaa Postgres maalin kasta, markaa waxaanu leenahay khibrado kala duwan oo la xidhiidha hawlgalka.

Iyo dhamaadka 2018, waxaan bilownay inaan si tartiib tartiib ah u isticmaalno Patroni. Waayo-aragnimada qaar ayaa la ururiyey. Si uun baannu u baadhnay, u hagaajinay, u nimid dhaqamadayada ugu wanaagsan. Waxaana warbixintan kaga hadli doonaa iyaga.

Marka laga reebo Postgres, waan jeclahay Linux. Waxaan jeclahay in aan dhex muquurto oo aan sahamiyo, waxaan jeclahay in aan ururiyo xudunta. Waxaan jeclahay wax-ku-oolka ah, weelasha, docker, Kubernetes. Waxaas oo dhami way i xiiseeyaan, sababtoo ah caadooyinka adminkii hore ayaa saameeya. Waxaan jeclahay inaan wax ka qabto la socodka Oo waxaan jeclahay postgres waxyaabaha la xiriira maamulka, i.e. ku celcelinta, kaabta. Wakhtiga firaaqada ahna waxaan ku qoraa Go. Ma ihi injineer software, kaliya waxaan naftayda u qoraa Go. Oo waxay i siinaysaa farxad.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

  • Waxaan u maleynayaa in qaar badan oo idinka mid ah ay ogyihiin in Postgres uusan haysan HA (Helitaan Sare) oo ka baxsan sanduuqa. Si aad HA u hesho, waxaad u baahan tahay inaad wax ku rakibto, habayso, samayso dedaal oo aad hesho.
  • Waxaa jira dhowr qalab oo Patroni waa mid ka mid ah kuwaas oo xaliya HA si qurux badan oo aad u wanaagsan. Laakiin marka la wada gelinayo shaybaarka tijaabada ah oo aan ku shaqeyno, waxaan arki karnaa in dhammaantiis ay shaqeyso, waxaan soo saari karnaa dhibaatooyinka qaarkood, arag sida Patroni ugu adeego. Oo waxaan arki doonaa in ay dhammaan si weyn u shaqeeyaan.
  • Laakiin ficil ahaan, waxaan la kulannay dhibaatooyin kala duwan. Waxaana ka hadli doonaa dhibaatooyinkaas.
  • Waxaan kuu sheegi doonaa sida aan ku ogaanay, waxa aan hagaajinay - haddii ay na caawisay iyo in kale.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

  • Kuuma sheegi doono sida loo rakibo Patroni, sababtoo ah waxaad ku dhejin kartaa google-ka internetka, waxaad eegi kartaa faylasha qaabeynta si aad u fahamto sida ay u bilaabmaan, sida loo habeeyey. Waxaad ka fahmi kartaa nidaamyada, naqshadaha, ka helidda macluumaadka ku saabsan internetka.
  • Ka hadli maayo qof kale khibradiisa. Waxaan ka hadli doonaa oo kaliya dhibaatooyinka aan la kulannay.
  • Ka hadli maayo dhibaatooyinka ka baxsan Patroni iyo PostgreSQL. Haddii, tusaale ahaan, ay jiraan dhibaatooyin la xidhiidha dheelitirka, markii kooxdeennu burburtay, ka hadli maayo.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Iyo afeef yar inta aynaan bilaabin warbixintayada.

Dhammaan dhibaatooyinkan aan la kulannay, waxaan ku helnay 6-7-8 bilood ee ugu horreeya ee hawlgalka. Muddo ka dib, waxaan gaadhnay dhaqamadayada ugu wanaagsan gudaha. Dhibaatadeeniina way baaba'day. Sidaa darteed, warbixinta waxaa lagu dhawaaqay lix bilood ka hor, markii ay dhammaan madaxayga ku cusub tahay oo aan dhammaan xusuustay.

Inta lagu guda jiro diyaarinta warbixinta, waxaan hore u sara kiciyey jir ah postmortems, eegay logyada. Tafaasiisha qaarna waa la iloobi karaa, ama qaar ka mid ah tafaasiisha aan si buuxda loo baadhin karin inta lagu guda jiro falanqaynta dhibaatooyinka, markaa mararka qaarkood waxay u muuqan kartaa inaan dhibaatooyinka si buuxda loo tixgelin, ama ay jirto xog la'aan. Markaa waxaan kaa codsanayaa inaad iga raali noqotid xilligan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waa maxay Patroni?

  • Kani waa qaab-dhismeedka HA. Taasi waa waxa ay ku leedahay dukumentiyada. Iyo aragtidayda, tani waa caddayn aad u sax ah. Patroni ma aha xabbad qalin ah oo xallin doonta dhammaan dhibaatooyinkaaga, taas oo ah, waxaad u baahan tahay inaad sameyso dadaal si aad u shaqeyso oo aad faa'iido u keento.
  • Kani waa adeeg wakiil ah oo lagu rakibay adeeg kasta oo xog ururin ah waana nooc ka mid ah nidaamka init ee Postgres-kaaga. Waxay bilaabataa Postgres, joogsataa, dib u bilawdaa, dib u habaynaysaa, oo waxay beddeshaa topology-ga kooxdaada.
  • Sidaas awgeed, si loo kaydiyo xaaladda kooxdu, matalaaddeeda hadda, sida ay u muuqato, nooc ka mid ah kaydinta ayaa loo baahan yahay. Marka laga eego aragtidan, Patroni wuxuu qaatay dariiqa lagu kaydinayo dawladnimada ee nidaamka dibadda. Waa nidaamka kaydinta qaabeynta qaybsan. Waxay noqon kartaa Etcd, Qunsulka, ZooKeeper, ama kubernetes IWM, i.e. mid ka mid ah xulashooyinkan.
  • Mid ka mid ah astaamaha Patroni waa inaad ka soo saartid autofiler-ka sanduuqa, kaliya adoo dejinaya. Haddii aan u qaadanno Repmgr isbarbardhigga, markaa feylasha ayaa lagu daray halkaas. Iyada oo la adeegsanayo Repmgr, waxaan helnaa beddelaad, laakiin haddii aan rabno autofiler, markaa waxaan u baahanahay inaan ku habeyno. Patroni wuxuu horey u haystay qalab-fiyliye ka baxsan sanduuqa.
  • Waxaana jira waxyaabo kale oo badan. Tusaale ahaan, dayactirka habaynta, shubista nuqulo cusub, gurmad, iwm. Laakiin tani way ka baxsan tahay baaxadda warbixinta, kama hadli doono.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Natiijo yarna waa in hawsha ugu weyn ee Patroni ay tahay in si fiican loo sameeyo autofile oo la isku halleyn karo si ay kooxdeenu u sii shaqeyso oo codsigu uusan u dareemin isbeddelada kutlada topology-ga.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Laakiin marka aan bilowno isticmaalka Patroni, nidaamkeenu wuu yara adag yahay. Haddii aan hore u haysanay Postgres, markaa marka la isticmaalayo Patroni waxaan helnaa Patroni lafteeda, waxaan helnaa DCS halkaasoo gobolka lagu kaydiyo. Wax walbana waa inay si uun u shaqeeyaan. Haddaba maxaa khaldami kara?

wuu jabi karaa:

  • Postgres ayaa laga yaabaa inay jabto. Waxay noqon kartaa sayid ama nuqul, mid iyaga ka mid ah ayaa dhici kara.
  • Patroni laftiisa ayaa laga yaabaa inuu jabo.
  • DCS ee gobolka lagu kaydiyo way jabi kartaa.
  • Shabakaduna way jabi kartaa.

Dhammaan qodobadan waxaan ku tixgalin doonaa warbixinta.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan tixgelin doonaa kiisaska marka ay noqdaan kuwo aad u adag, maaha marka laga eego aragtida in kiisku ku lug leeyahay qaybo badan. Marka laga eego dhinaca dareenka shakhsi ahaaneed, in kiiskani igu adag yahay, way adkayd in la kala saaro ... iyo lidkeeda, kiisaska qaarkood way fududaayeen oo way fududahay in la kala saaro.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Kiiskuna waa kan ugu fudud. Tani waa xaalad markii aanu qaadanay koox xog ururin ah oo aanu ku shubnay kaydintayada DCS isla kooxda. Tani waa qaladka ugu badan. Tani waa qalad lagu dhisayo dhismayaasha, tusaale ahaan, isku darka qaybo kala duwan oo hal meel ah.

Markaa, waxaa jiray faylal, aan tagno si aan wax uga qabanno waxa dhacay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo halkan waxaan xiisaynaynaa goorta fayl-gareeyaha dhacay. Taasi waa, waxaan xiisaynaynaa xilligan oo ah markii dawlad-goboleedka kooxdu is beddeshay.

Laakiin fayl-gareeyaha mar walba ma aha mid degdeg ah, ie. ma qaadato halbeeg waqti ah, waa la daahi karaa. Waxay noqon kartaa waqti dheer.

Sidaa darteed, waxa ay leedahay wakhti bilow ah iyo wakhti dhamaad, i.e. waa dhacdo joogto ah. Dhammaan dhacdooyinka waxaan u kala qaybinnaa saddex waqti: waxaan haysanaa waqti ka hor faylalka, inta lagu jiro faylalka iyo ka dib faylka. Taasi waa, waxaan tixgelineynaa dhammaan dhacdooyinka waqtigan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Midda ugu horreysana, markii uu faylal dhacay, waxaan raadinnaa sababta keentay wixii dhacay, maxaa keenay waxa keenay fayl-gareeyaha.

Haddii aan eegno logyada, waxay noqon doonaan logyada Patroni classic. Waxa uu inoogu sheegayaa in uu Server-ku noqday sayidkii, kaalintii sayidkuna ay u gudubtay noodhkan. Halkan ayaa lagu iftiimiyay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Marka xigta, waxaan u baahanahay inaan fahamno sababta fayl-gareeyaha u dhacay, tusaale ahaan dhacdooyinka dhacay ee sababay doorka sayidku inuu ka guuro hal nood una guuro mid kale. Xaaladdan oo kale, wax walba waa sahlan yihiin. Waxaan leenahay khalad ku saabsan la falgalka nidaamka kaydinta. Sayidku wuxuu ogaaday inuusan la shaqayn karin DCS, taas oo ah, waxaa jiray nooc ka mid ah dhibaatada isdhexgalka. Waxaana uu sheegay in uusan hadda ka dib noqon karin Master oo uu is casilay. Sadarkan "nafta hoos loo dhigay" ayaa si sax ah u odhanaysa.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Haddaynu eegno dhacdooyinkii ka horreeyay fayl-hayaha, waxaynu halkaas ku arki karnaa sababihii dhibka u ahaa sii socoshada saaxirka.

Haddii aan eegno diiwaanka Patroni, waxaan arki doonaa inaan haysano qaladaad badan, waqtiyo, i.e. wakiilka Patroni ma la shaqeyn karo DCS. Xaaladdan oo kale, kani waa wakiilka Qunsulka, kaas oo ka hadlaya dekedda 8500.

Dhibaataduna halkan waa in Patroni iyo database-ku ay ku socdaan isla martigeliyaha. Waxayna Server-yada Qunsulka lagu bilaabay isla meel isku mid ah. Anaga oo culays ku abuurayay server-ka, waxa aanu sidoo kale dhibaato u abuurnay adeegayaasha Qunsulka. Si fiican ayay u wada xidhiidhi waayeen.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Muddo ka dib, markii culeysku hoos u dhacay, Patroni wuxuu awooday inuu mar kale la xiriiro wakiilada. Shaqadii caadiga ahayd ayaa dib loo bilaabay. Iyo isla Pgdb-2 server ayaa mar kale noqday sayidkii. Taasi waa, waxaa jiray flip yar, taas oo ay sabab u tahay qanjidhada ayaa iska casilay awoodaha sayidkii, ka dibna mar kale la wareegay, taas oo ah, wax walbaa waxay ku soo noqdeen sidii ay ahaayeen.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Tan waxaa loo tixgelin karaa qaylo-dhaan been ah, ama waxaa loo tixgelin karaa in Patroni uu wax walba si sax ah u sameeyay. Yacni, wuxuu garowsaday in uusan sii wadi karin xaaladda kooxda, oo uu meesha ka saaray maamulkiisii.

Oo halkan dhibaatadu waxay ka dhalatay xaqiiqda ah in qunsuliyada qunsuliyada ay ku jiraan qalab isku mid ah sida saldhigyada. Sidaa awgeed, culays kasta: ha ahaado culayska ku jira saxanadaha ama processor-rada, waxa ay sidoo kale saamaynaysaa isdhexgalka kooxda Qunsulka.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Anaguna waxaanu go’aansanay inaanay wada noolaan, waxaanu u qoondaynay koox gaar ah Qunsulka. Patroni wuxuu horey ula shaqeynayey Qunsul gooni ah, taas oo ah, waxaa jiray koox Postgres gaar ah, koox qunsul gooni ah. Tani waa tilmaan aasaasi ah oo ku saabsan sida loo qaado oo loo ilaaliyo dhammaan waxyaalahaas si aysan u wada noolaan.

Ikhtiyaar ahaan, waxaad maroorsan kartaa halbeegyada ttl, loop_wait, retry_timeout, tusaale ahaan isku day inaad ka badbaado kuwan ugu sarreeya culeyska muddada gaaban adoo kordhinaya cabbirradan. Laakiin tani maaha doorashada ugu habboon, sababtoo ah culeyskani wuxuu noqon karaa waqti dheer. Oo waxaan si fudud uga gudbi doonaa xuduudahan xuduudahan. Taasina waxa laga yaabaa inaanay runtii ku caawin.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Dhibaatada ugu horeysa, sida aad fahamsan tahay, waa mid fudud. Waxaan qaadnay oo aan isku dhejinnay DCS iyo saldhigga, waxaan helnay dhibaato.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Dhibaatada labaad waxay la mid tahay tii hore. Waxay la mid tahay in aan mar kale leenahay dhibaatooyin wada shaqayneed ee nidaamka DCS.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Haddii aan eegno logyada, waxaan arki doonaa inaan mar kale leenahay cilad isgaarsiineed. Patroni wuxuu yidhi anigu lama macaamili karo DCS si sayidkii hadda u galo qaab nuqul ah.

Sayidka hore wuxuu noqdaa nuqul, halkan Patroni wuu shaqeeyaa, sida ay tahay. Waxa ay waddaa pg_rewind si ay dib ugu celiso diiwaanka wax kala iibsiga ka dibna ku xidho sayidkii cusub si uu ula qabsado sayid cusub. Halkan Patroni wuxuu u shaqeeyaa, sida uu yahay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Halkan waa in aan helnaa meesha ka horraysa fayl-hayaha, tusaale ahaan khaladaadkaas keenay in aan faylalka yeelano. Oo arrintan la xiriira, logyada Patroni waa mid ku habboon in lala shaqeeyo. Isla fariimo isku mid ah ayuu u qoraa wakhti go'an. Haddaynu si degdeg ah u billowno geeddi-socodyadaas, markaa waxaynu ka arki doonnaa geeddi-socodyada in geeddi-socodku isbeddeleen, taas oo macnaheedu yahay in dhibaatooyinka qaarkood ay bilaabeen. Si degdeg ah ayaan ugu soo laabanay meeshan, arag waxa dhaca.

Iyo xaalad caadi ah, logu wuxuu u eg yahay wax sidan oo kale ah. Qofka leh qufulka waa la hubiyaa. Iyo haddii milkiilaha, tusaale ahaan, uu isbeddelay, markaa dhacdooyinka qaarkood ayaa dhici kara in Patroni uu ka jawaabo. Laakiin kiiskan, waan fiicanahay. Waxaan raadineynaa meesha qaladaadku ka bilowdeen.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo markaan u rognay ilaa heer ay khaladaadku bilaabeen inay muuqdaan, waxaan aragnaa inaan helnay faylka otomaatiga ah. Maaddaama khaladaadkeennu ay la xiriireen la falgalka DCS iyo kiiskeenna aan isticmaalnay Qunsulka, waxaan sidoo kale eegnaa qoraallada Qunsulka, wixii halkaas ka dhacay.

Qiyaastii marka la barbardhigo wakhtiga fayl-gareeyaha iyo wakhtiga ku jira diiwaanka Qunsulka, waxaanu aragnaa in deriskeena ku jira kooxda Qunsulka ay bilaabeen inay ka shakiyaan jiritaanka xubnaha kale ee Qunsulka.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo haddii aad eegto diiwaanka wakiillada kale ee Qunsulka, waxaad sidoo kale arki kartaa in ay jiraan nooc ka mid ah burburka shabakadda ee halkaas ka socda. Waxayna dhamaan xubnaha kutlada Qunsulka shaki ka qabaan jiritaanka midba midka kale. Taasina waxay ahayd dhiirigelinta faylalka.

Haddii aad eegto wixii dhacay khaladaadkaas ka hor, waxaad arki kartaa in ay jiraan dhammaan khaladaadka, tusaale ahaan, kama dambaysta, RPC ayaa dhacday, taas oo ah, waxaa si cad u jira nooc ka mid ah dhibaatooyinka isdhexgalka xubnaha Qunsulka ee midba midka kale. .

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Jawaabta ugu fudud waa in la dayactiro shabakada. Laakiin aniga, anigoo taagan masraxa, way fududahay inaan tan idhaahdo. Laakiin duruufuhu waa sidaas oo aan mar walba macaamiilku awoodin inuu dayactiro shabakadda. Waxa laga yaabaa inuu ku nool yahay DC oo aanu awoodin inuu hagaajiyo shabakadda, saamayn ku yeesho qalabka. Oo sidaas daraaddeed qaar ka mid ah fursadaha kale ayaa loo baahan yahay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaa jira doorashooyin:

  • Doorashada ugu fudud, taas oo ku qoran, fikradayda, xitaa dukumentiyada, waa in la joojiyo jeegaga Qunsulka, taas oo ah, si fudud u gudbi array madhan. Waxaana u sheegaynaa wakiilka Qunsulka inuusan isticmaalin wax jeeg ah. Baaritaannadan, waxaan iska indhatirin karnaa duufaannada shabakadaha mana bilaabi karno fayl-gareye.
  • Ikhtiyaarka kale waa in la labanlaabo raft_multiplier. Kani waa halbeeg u ah server-ka Qunsulka laftiisa. Sida caadiga ah, waxa loo dejiyay 5. Qiimahan waxa ku taliya dukumeentiyada habaynta deegaanka. Dhab ahaantii, tani waxay saamaysaa inta jeer ee fariimaha u dhexeeya xubnaha shabakadda Qunsulka. Dhab ahaantii, halbeeggani wuxuu saameeyaa xawaaraha xidhiidhka adeegga ee xubnaha kooxda Qunsulka. Iyo wax-soo-saarka, waxaa mar hore lagula talinayaa in la yareeyo si ay noodhadhku u beddelaan farriimaha marar badan.
  • Ikhtiyaarka kale ee aan la nimid ayaa ah in aan kordhino mudnaanta hababka Qunsulka iyo hababka kale ee jadwaliyaha nidaamka qalliinka. Waxa jira halbeeg β€œwanaagsan” oo kale ah, waxa kaliya oo ay go’aaminaysaa mudnaanta habraacyada lagu xisaabtamayo jadwalka OS marka la jadwaleynayo. Waxaan sidoo kale hoos u dhignay qiimaha wanaagsan ee wakiillada Qunsulka, i.e. waxay kordhisay mudnaanta si nidaamka qalliinka uu u siiyo geeddi-socodka Qunsulka waqti dheeraad ah si ay u shaqeeyaan oo ay u fuliyaan xeerkooda. Xaaladeena, tani waxay xallisay dhibkayaga.
  • Doorasho kale ayaa ah inaadan isticmaalin Qunsulka. Waxaan leeyahay saaxiib aad u taageera IWM. Waxaanu si joogto ah ula doodnaa isaga kee fiican Etcd ama Qunsulka. Laakiin marka la eego taas oo ka wanaagsan, waxaan inta badan ku raacsanahay isaga in Qunsulka uu leeyahay wakiil ay tahay inuu ku socdo nood kasta oo leh database. Taasi waa, is dhexgalka Patroni ee kooxda Qunsulka waxay maraysaa wakiilkan. Oo wakiilkani wuxuu noqonayaa dhalo. Haddii ay wax ku dhacaan wakiilka, markaas Patroni kama sii shaqayn karo kooxda Qunsulka. Waana tan dhibaatadu. Ma jiro wakiil ku jira qorshaha IWM. Patroni wuxuu si toos ah ula shaqeyn karaa liiska Etcd server-ka oo mar hore ayuu la xiriiri karaa iyaga. Marka tan la eego, haddii aad u isticmaasho Etcd shirkaddaada, markaa Etcd waxay u badan tahay inay noqon doonto doorasho ka wanaagsan Qunsulka. Laakiin annagu haddaanu nahay macaamiisheena waxa had iyo jeer xaddidnaa waxa macmiilku doortay oo isticmaalo. Waxaanan leenahay Qunsul inta badan dhammaan macaamiisha.
  • Qodobka ugu dambeeyana waa in dib loo eego qiyamka halbeegyada. Waxaan kor u qaadi karnaa cabbirradan annagoo rajaynayna in mashaakilaadka shabakadaha muddada-gaaban ay noqon doonaan kuwo gaaban oo aan ka dhicin xadka cabbirradan. Sidan waxaan ku yareeyn karnaa gardarrada Patroni si otomaatig ah loo buuxiyo haddii qaar ka mid ah dhibaatooyinka shabakada dhacaan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan u maleynayaa in qaar badan oo isticmaala Patroni ay yaqaaniin amarkan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Amarkani waxa uu tusinayaa xaalada ay kooxdu ku sugan tahay. Iyo jaleecada hore, sawirkani wuxuu u ekaan karaa mid caadi ah. Waxaan leenahay sayid, waxaan haynaa nuqul, ma jiro dib u dhac ku yimaada taranka. Laakin sawirkani waa caadi ilaa aan ogaano in kooxdani ay leedahay saddex nood, oo aan ahayn laba.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sidaa darteed, waxaa jiray autofile. Oo ka dib autofiil-kan, nuqulkeenii waa la waayay. Waxaan u baahanahay inaan ogaano sababta ay u luntay oo aan u soo celinno, soo celinno. Oo waxaan mar kale u tagnay diiwaanka oo aan aragno sababta aan u haysanay auto-fileover.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Xaaladdan oo kale, nuqulka labaad wuxuu noqday sayidkii. Waa dhan halkan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaana loo baahan yahay inaan eegno nuqulkii dhacay ee aan ku jirin kooxda. Waxaan furnay diiwaanka Patroni oo aan aragno inaan dhibaato kala kulanay inta lagu gudajiro habka ku xirida kooxda ee marxaladda pg_rewind. Si aad ugu xidho kutlada, waxa aad u baahantahay in aad dib u soo celiso diiwaanka wax kala iibsiga, aad ka codsato log-ga wax kala iibsiga ee loo baahan yahay sayidka, oo aad isticmaasho si aad ula qabsato sayidkii.

Xaaladdan oo kale, ma hayno diiwaanka wax kala iibsiga oo nuqulku ma bilaabi karo. Sidaa awgeed, waxaanu ku joojinay Postgres khalad. Sidaas darteed kuma jirto kooxda.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan u baahannahay inaan fahamno sababta aysan ugu jirin kooxda iyo sababta aysan u jirin geedo. Waxaan u tagnaa sayidkii cusbaa oo aan eegno waxa uu ku haysto geedaha. Waxay soo baxday in markii pg_rewind la sameeyay, isbaaro ayaa dhacday. Iyo qaar ka mid ah qoraaladii hore ee wax kala iibsiga ayaa si fudud loo magacaabay. Markii uu sayidkii hore isku dayay inuu ku xidho sayidkii cusbaa oo uu waydiiyo buugaagtan, mar hore ayaa loo magacaabay, may jirin.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxa aan is barbar dhigay wakhtiyada ay dhacdooyinkani dhaceen. Halkaasna waxaa ku kala duwanaanshuhu waa 150 millise seconds, taas oo ah, isbaarada lagu dhammeeyey 369 millise seconds, qaybaha WAL ayaa la beddelay. Iyo macno ahaan 517, ka dib 150 millise seconds, dib u soo celinta ayaa ku bilaabatay nuqulkii hore. Taasi waa, macno ahaan 150 millise seconds ayaa nagu filan si aanu nuqulku u xidhmin oo uu u kasbado.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waa maxay fursadaha?

Waxaan markii hore isticmaalnay boosaska ku celcelinta. Waxaan moodaynay inay wanaagsan tahay. Inkastoo marxaladii ugu horeysay ee hawlgalka aan daminay boosaska. Waxay nooga muuqatay in haddii boosasku urursan yihiin qaybo badan oo WAL ah, aynu tuuri karno sayidkii. wuu dhici doonaa. Waxaan ku dhibtoonay in muddo ah boosaska la'aan. Waxaan ogaanay inaan u baahanahay boosaska, waxaan soo celinay boosaskii.

Laakiin halkan dhibaato ayaa ka jirta, in marka sayidku u tago nuqulka, uu tirtiro boosaska oo uu tirtiro qaybaha WAL oo ay weheliyaan boosaska. Si loo baabi'iyo dhibaatadan, waxaan go'aansanay inaan kor u qaadno cabbirka wal_keep_segments. Waxay ka kooban tahay 8 qaybood. Waxaan kor u qaadnay 1 waxaanan eegnay inta boos ee xorta ah ee aan haysanno. Waxaana ku deeqnay 000 gigabytes oo ah qaybaha wal_keep. Taasi waa, marka la beddelo, waxaan had iyo jeer haysannaa kayd ah 16 gigabytes of logs wax kala iibsiga on dhammaan noodes.

Oo lagu daray - waxay weli ku habboon tahay hawlaha dayactirka muddada-dheer. Aynu nidhaahno waxaan u baahanahay inaan cusbooneysiinno mid ka mid ah nuqullada. Waxaana rabnaa inaan daminno. Waxaan u baahanahay inaan cusbooneysiino software-ka, laga yaabee nidaamka hawlgalka, wax kale. Oo markaan daminno nuqulka, booska nuqulkaas waa la saarayaa. Oo haddii aan isticmaalno qaybo yaryar oo wal_keep, ka dibna maqnaanshaha dheer ee nuqul ka mid ah, diiwaannada wax kala iibsiga waa la lumin doonaa. Waxaan kor u qaadi doonaa nuqul, waxay codsan doontaa diiwaannada wax kala iibsiga halka ay joogsatay, laakiin waxaa laga yaabaa inaysan ku jirin sayidkii. Oo nuqulku midna ma awoodi doono inuu ku xidhmo. Sidaa darteed, waxaanu haynaa kayd badan oo joornaal ah.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan leenahay saldhig wax soo saar. Horay waxaa u socday mashaariic.

Waxaa jiray fayliye. Waanu galnay oo eegnay - wax kastaa waa hagaagsan yihiin, nuqulladiina waa yaallaan, wax dib u dhac ah oo soo noqnoqdana ma jiro. Ma jiraan wax qalad ah oo ku jira diiwaanka sidoo kale, wax walba waa hagaagsan yihiin.

Kooxda alaabtu waxay leedahay waa inay jiraan xog, laakiin waxaan ka aragnaa hal il, laakiin kuma aragno kaydka xogta. Oo waxaan u baahanahay inaan fahanno waxa ku dhacay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Way caddahay in pg_rewind ay tabeen iyaga. Isla markiiba waanu fahannay arrintan, laakiin waxaan u tagnay inaan aragno waxa dhacaya.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Diiwaanka, waxaan had iyo jeer ka heli karnaa marka fayl-gareeyaha uu dhacay, yaa noqday sayidkii, waxaanan go'aamin karnaa kii ahaa sayidkii hore iyo markii uu rabay inuu noqdo nuqul, i.e. waxaan u baahanahay diiwaanadan si aan u ogaano qadarka diiwaanka macaamil ganacsi lumay.

Sayidkeenii hore dib buu u kiciyey. Patroni wuxuu ka diiwaan gashan yahay autorun. Wuxuu bilaabay Patroni. Kadib wuxuu bilaabay Postgres. Si sax ah, ka hor inta aanad bilaabin Postgres iyo ka hor inta aanad samayn nuqul, Patroni wuxuu bilaabay habka pg_rewind. Sidaa darteed, wuxuu tirtiray qayb ka mid ah diiwaannada wax kala iibsiga, soo dejinta kuwa cusub oo ku xiran. Halkan Patroni wuxuu u shaqeeyay si xariif ah, taas oo ah, sidii la filayay. Kooxda waa la soo celiyay. Waxaan haysanay 3 nodes, ka dib faylalka 3 nodes - wax walba waa qabow.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan luminay xoogaa xog ah. Waxaana loo baahan yahay in aan fahanno inta naga luntay. Waxa aanu raadinaynay uun markii aanu dib u soo laabanay. Waxaan ka heli karnaa qoraalada joornaalka sida. Dib-u-soo-celinta ayaa bilaabatay, wax ka qabatay halkaas oo ay dhammaatay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan u baahanahay inaan helno booska ku jira log-ka macaamil ganacsi ee uu sayidkii hore ka tagay. Xaaladdan oo kale, tani waa calaamadda. Oo waxaan u baahannahay calaamad labaad, taas oo ah, fogaanta uu sayidkii hore kaga duwan yahay kan cusub.

Waxaan qaadnaa pg_wal_lsn_diff-ga caadiga ah oo isbarbardhig labadan calaamadood. Xaaladdan oo kale, waxaan helnaa 17 megabytes. Wax badan ama wax yar, qof walba ayaa go'aansada naftiisa. Sababtoo ah qof 17 megabytes wax badan maaha, qofna wax badan ayay u tahay oo aan la aqbali karin. Halkan, qof kastaa wuxuu go'aamiyaa naftiisa si waafaqsan baahida ganacsiga.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Laakiin maxaan ogaanay nafteena?

Marka hore, waa in aan go'aan ka gaarnaa nafteena - miyaynu had iyo jeer u baahanahay Patroni si uu autostart ka dib nidaamka dib u soo kabashada? Inta badan waxay dhacdaa in aan u tagno sayidkii hore, arag inta uu gaadhay. Waxaa laga yaabaa inaad fiiriso qaybaha diiwaanka wax kala iibsiga, arag waxa jira. Iyo in aan fahamno haddii aan lumin karno xogtan ama haddii aan u baahanahay inaan ku socodsiino sayidkii hore qaab gooni ah si aan u soo saarno xogtan.

Taas ka dib waa in aan go'aansanno in aan tuuri karno xogtan ama aan soo celin karno, ku xidh noodekan sidii nuqul ka mid ah kutladayada.

Intaa waxaa dheer, waxaa jira cabbir "maximum_lag_on_failover". Sida caadiga ah, haddii xusuustaydu ii adeegto, cabbirkan wuxuu leeyahay 1 megabyte.

Sidee ayuu u shaqeeyaa? Haddii nuqulkayaga uu ka danbeeyo 1 megabyte oo xog ah oo ku jira dib-u-celinta nuqulka, markaa nuqulkani kama qayb qaadanayo doorashooyinka. Oo haddii si lama filaan ah u jiro faylal, Patroni wuxuu eegayaa nuqullada ka dambeeya. Haddii ay ka dambeeyaan tiro badan oo diiwaannada wax kala iibsiga, ma noqon karaan sayid. Tani waa sifo ammaan oo aad u wanaagsan oo kaa ilaalinaysa inaad lumiso xog badan.

Laakin dhib baa ka jirta in dib u soo celinta kutlada Patroni iyo DCS la cusboonaysiiyo wakhti go'an. Waxaan u maleynayaa in 30 ilbiriqsi ay tahay qiimaha ttl ee caadiga ah.

Sidaa darteed, waxaa jiri kara xaalad ay jirto hal dib u dhac ku yimaada nuqullada DCS, laakiin dhab ahaantii waxaa jiri kara dib u dhac gebi ahaanba ka duwan ama waxaa laga yaabaa inaysan jirin wax dib-u-dhac ah oo dhan, ie. tani maahan wakhtiga dhabta ah. Mar walbana kama tarjumo sawirka dhabta ah. Mana haboona in lagu sameeyo macquul macquul ah.

Khatarta khasaarahana had iyo jeer way sii jirtaa. Kiiskii ugu xumaana, hal qaacido, iyo celcelis ahaan, qaacido kale. Taasi waa, marka aan qorsheyneyno hirgelinta Patroni oo aan qiimeyno inta xog ee aan lumin karno, waa in aan ku tiirsannahay hababkaas oo aan qiyaasno inta xog ee aan lumin karno.

Waxaana jira war wanaagsan. Marka sayidkii hore uu horay u maray, wuu sii socon karaa sababtoo ah qaar ka mid ah hababka asalka ah. Taasi waa, waxaa jiray nooc ka mid ah autovacuum, wuxuu qoray xogta, wuxuu ku badbaadiyay diiwaanka macaamilka. Oo si fudud ayaanu iskaga indho-tiri karnaa oo waayi karnaa xogtan. Wax dhib ah kuma jiro arrintan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo tani waa sida ay u egyihiin logusyada haddii ugu badnaan_lag_on_failover la dejiyo oo fayliye dhacay, oo waxaad u baahan tahay inaad doorato sayid cusub. Nuqulku wuxuu isku qiimeeyaa inuu yahay mid aan awood u lahayn ka qayb qaadashada doorashooyinka. Waxayna diiday inay ka qayb-gasho tartanka loogu jiro hoggaamiyaha. Waxayna sugaysaa sayid cusub in la doorto, si ay markaas ugu xidhidhdo. Tani waa cabbir dheeraad ah oo ka dhan ah luminta xogta.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Halkan waxaan ku haynaa koox alaab ah oo qoray in alaabtoodu ay dhibaato ku qabaan Postgres. Isla mar ahaantaana, sayidkiisa laftiisa lama heli karo, sababtoo ah lagama heli karo SSH. Iyo autofile sidoo kale ma dhaco.

Martigeliyahaan waxaa lagu qasbay inuu dib u bilaabo. Sababtoo ah dib-u-bilaabista, feyl otomaatig ah ayaa dhacay, inkasta oo ay suurtagal ahayd in la sameeyo faylka auto-file, sida aan hadda fahmay. Ka dib markii dib loo bilaabo, waxaan horayba u dooneynaa inaan aragno waxa aan ku haysanay sayidkii hadda.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Isla markaana waxa aanu hore u ogaanay in aanu dhibaato kala kulanay saxanka, taas oo ah in aanu hore u ogaanay in aanu la socono halka la qodayo iyo waxa aanu raadinayno.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan galnay loggii postgres, waxaan bilownay inaan aragno waxa halkaas ka dhacaya. Waxaan aragnay wax-qabadyo halkaas ku sii socda hal, laba, saddex ilbiriqsi, taas oo aan haba yaraatee caadi ahayn. Waxaan aragnay in autovacuum-kayagu uu si tartiib ah oo yaab leh u bilaabmayo. Oo waxaan ku aragnay faylal ku meel gaar ah diskka. Taasi waa, kuwani waa dhammaan tilmaamayaasha dhibaatooyinka saxanka.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan eegnay nidaamka dmesg (Log kernel). Oo waxaan aragnay in ay dhibaato naga haysato mid ka mid ah saxanadaha. Nidaam hoosaadka diskku wuxuu ahaa software Raid. Waxaan eegnay /proc/mdstat oo aanu aragnay in aanu ka maqannahay hal baabuur. Yacni, waxaa jira Raid of 8 disks, waxaa naga maqan mid. Haddii aad si taxadar leh u eegto slide-ka, markaa wax-soo-saarka waxaad arki kartaa inaanan haysan sde halkaas. Annaga, shuruud ahaan, saxanku wuu ka baxay. Tani waxay kicisay dhibaatooyinka diskka, iyo codsiyada sidoo kale waxay la kulmeen dhibaatooyin markii ay la shaqaynayeen kooxda Postgres.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Xaaladdan oo kale, Patroni nagama caawin doono sinaba, sababtoo ah Patroni ma laha hawsha la socodka xaaladda server-ka, xaaladda diskka. Waana in aan kula soconaa xaaladahan oo kale anagoo ilaalineyna dibadda. Waxaan si degdeg ah ugu darnay la socodka diskka kormeerka dibadda.

Oo waxaa jiray fikrad noocan oo kale ah - miyuu na caawin karaa deyrka ama software-ka ilaaliya? Waxaan u maleynay inuu si dhib leh nooga caawin lahaa kiiskan, sababtoo ah inta lagu jiro dhibaatooyinka Patroni wuxuu sii waday inuu la falgalo kooxda DCS mana uusan arag wax dhibaato ah. Taasi waa, marka laga eego aragtida DCS iyo Patroni, wax walbaa waxay ku fiicnaayeen kooxda, inkastoo xaqiiqda ay jiraan dhibaatooyin la xiriira diskka, waxaa jiray dhibaatooyin la xiriira helitaanka xogta.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Fikradayda, tani waa mid ka mid ah dhibaatooyinka ugu yaabka badan ee aan baaray muddo aad u dheer, waxaan akhriyay qoraallo badan, dib u soo celiyay oo aan ugu yeeray simulator cluster.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Dhibaatadu waxay ahayd in sayidkii hore uusan noqon karin nuqul caadi ah, i.e. Patroni ayaa bilaabay, Patroni wuxuu muujiyay in noodhkani uu u joogo sidii nuqul, laakiin isla markaa ma ahayn nuqul caadi ah. Hadda waad arki doontaa sababta. Tani waa waxa aan ka ilaaliyay falanqaynta dhibaatadaas.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sideese ku bilaabmeen? Waxay ku bilaabatay, sidii dhibaatadii hore, iyada oo biriiga disc. Waxaan ballan qaadnay ilbidhiqsi, laba.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaa jiray kala go'ay isku xirnaanta, tusaale ahaan, macaamiisha waa la jeexjeexay.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaa jiray xannibaadyo kala duwan oo darnaanta.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Iyo, si waafaqsan, nidaamka hoose ee diskku maaha mid aad u jawaaba.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxa iigu yaabka badanna waa codsiga xidhitaanka degdega ah ee yimid. Postgres waxay leedahay saddex hab oo xidhidh:

  • Way qurux badan tahay markaan sugno dhammaan macaamiisha inay kaligood xidhaan.
  • Waxaa jira dhakhso marka aan ku qasbo macaamiisha inay gooyaan xiriirka sababtoo ah waxaan dooneynaa inaan xirno.
  • Oo degdeg ah. Xaaladdan oo kale, isla markiiba xitaa uma sheegto macaamiisha inay xidhaan, kaliya waxay xirtaa digniin la'aan. Iyo dhammaan macaamiisha, nidaamka qalliinka ayaa mar hore u soo diraya fariin RST ah (fariinta TCP in xiriirku go'o oo macmiilku ma haysto wax kale oo uu ku qabto).

Yaa diray calaamadan? Nidaamyada asalka ah ee Postgres isuma diraan calaamadahaas midba midka kale, ie. kani waa dil-9. Uma soo diraan waxyaabahan oo kale, kaliya waxay ka falceliyaan waxyaabahan oo kale, ie. tani waa xaalad degdeg ah oo dib u bilawday Postgres. Yaa soo diray, ma garanayo.

Waxaan eegay amarkii "ugu dambeeyay" waxaan arkay hal qof oo isna nala soo galay server-kan, laakiin aad ayaan uga xishooday inaan su'aal weydiiyo. Malaha waa la dilay -9. Waxaan arki lahaa dil -9 oo ku jira geedaha, sababtoo ah Postgres waxa ay sheegtay in ay dishay -9, laakiin kumaan arag buugaag.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Raadinta dheeraad ah, waxaan arkay in Patroni uusan wax qorin log-ka muddo dheer - 54 ilbiriqsi. Oo haddaynu is barbar dhigno laba jeer, ma jirin farriimo ilaa 54 ilbiriqsi ah.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo wakhtigan waxaa jiray autofile ah. Patroni wuxuu qabtay shaqo fiican halkan mar kale. Sayidkeenii hore waa la waayay, wax baa ku dhacay. Waxaana bilaabmay doorashadii sayid cusub. Wax walba si fiican ayey halkan ugu shaqeeyeen. Pgsql01 ayaa noqday hogaamiyaha cusub.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan haynaa nuqul noqday sayid. Waxaana jirta jawaab labaad. Waxaana jiray dhibaatooyin ku saabsan nuqulka labaad. Waxay isku dayday inay dib u habayn ku samayso. Sidaan u fahmay, waxay isku dayday inay beddesho recovery.conf, dib u bilowdo Postgres oo ay ku xidho sayid cusub. Waxay qortaa farriimaha 10-kii ilbiriqsi kasta oo ay isku daydo, laakiin kuma guulaysan.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo inta lagu guda jiro isku dayadan, signal xirid degdeg ah ayaa ku yimid sayidkii hore. Masterka ayaa dib loo bilaabay Iyo sidoo kale soo kabashada ayaa joogsata sababtoo ah sayidkii hore ayaa galay reboot. Taasi waa, nuqulku kuma xidhi karo, sababtoo ah waxay ku jirtaa habka xidhitaanka.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Mar, way shaqeysay, laakiin ku celcelintu ma bilaaban.

Malahayga kaliya ayaa ah in uu jiray ciwaanka hore ee recovery.conf. Oo markii sayid cusub soo muuqday, nuqulkii labaad ayaa weli isku dayay inuu ku xidho sayidkii hore.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Markii Patroni uu ku bilaabay nuqulka labaad, noodhka ayaa bilaabmay laakiin wuu soo celin kari waayay. Waxaana la sameeyay dib-u-dhac ku-talaabo, kaasoo u ekaa sidan. Taasi waa, dhammaan saddexda nood ayaa meesha yaal, laakiin qanjirada labaad ayaa dib u dhacday.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Isla mar ahaantaana, haddii aad eegto diiwaannada la qoray, waxaad arki kartaa in ku celcelintu aysan bilaaban karin sababtoo ah diiwaannada wax kala iibsiga ayaa kala duwanaa. Iyo diiwaannada macaamil ganacsi ee sayidku bixiyo, kuwaas oo lagu qeexay recovery.conf, si fudud kuma habboona noodhkayaga hadda.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Oo halkan waxaan sameeyay qalad. Waxay ahayd inaan imaado oo aan arko waxa ku jira recovery.conf si aan u tijaabiyo mala-awaalkayga ah inaan ku xidhnayno sayid khaldan. Laakin markaas uun baan la tacaalayay tan oo igumay dhicin, ama waxaan arkay in nuqulku uu dib u dhacay oo ay tahay in dib loo buuxiyo, taas oo ah, si taxaddar la'aan ah ayaan u shaqeeyay. Tani waxay ahayd laabkayga.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

30 daqiiqo ka dib, maamulaha ayaa mar hore yimid, i.e. waxaan dib ugu bilaabay Patroni nuqulka. Horaan u soo afjaray, waxaan is idhi waa in dib loo buuxiyaa. Oo waxaan u maleeyay - Waxaan dib u bilaabi doonaa Patroni, laga yaabaa in wax wanaagsan soo bixi doonaa. Soo kabashada ayaa bilaabatay. Saldhigana xitaa la furay, wuxuu diyaar u ahaa inuu aqbalo isku xirka.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Ku celcelinta ayaa bilaabatay Laakiin hal daqiiqo ka dib waxay ku dhacday qalad ah in diiwaannada wax kala iibsiga aysan ku habboonayn iyada.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan u maleeyay inaan dib u bilaabo. Mar kale ayaan dib u bilaabay Patroni, manaan dib u bilaabin Postgres, laakiin waxaan dib u bilaabay Patroni anigoo rajaynaya inay si sixir ah u bilaabi doonto kaydka xogta.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Ku-noqoshada ayaa mar kale bilaabatay, laakiin calaamadaha ku jira diiwaanka wax kala iibsiga way kala duwanaayeen, iskuma ay ahayn isku daygii hore ee bilawga ahaa. Ku celcelinta ayaa joogsatay mar kale. Fariintana markii horeba way ka yara duwanayd. Wax xog badan iimay ahayn.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Kadibna way igu dhacdaa - ka waran haddii aan dib u bilaabo Postgres, wakhtigan waxaan ka dhigayaa isbaaro sayidkii hadda jira si aan u dhaqaajiyo barta ku jirta diiwaanka macaamilka wax yar horay u soo kabashada si ay u soo kabsato daqiiqad kale? Intaa waxaa dheer, waxaan wali haysanay kaydka WAL.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Waxaan dib u bilaabay Patroni, waxa aan sameeyay dhawr isbaaro oo sayidkii ah, dhawr dhibcood oo dib u bilaabmaya nuqulka markii la furay. Wayna caawisay. Waxaan muddo dheer ka fikiray sababta ay u caawisay iyo sida ay u shaqeyso. Waxaana bilaabmay nuqulkii. Ku-nolitaankuna mar dambe ma dillaacin.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Dhibka caynkaas ah aniga ayaa ah mid ka mid ah kuwa ugu dahsoon, kaas oo aan wali la yaabay waxa dhabta ah ee meeshaas ka dhacay.

Waa maxay saamaynta halkan? Patroni wuxuu u shaqayn karaa sidii loogu talagalay oo aan wax qalad ah lahayn. Laakiin isla mar ahaantaana, tani maahan dammaanad 100% ah in wax walba ay nagu fiican yihiin. Nuqulku wuu bilaaban karaa, laakiin waxa laga yaabaa inay ku jirto xaalad shaqo-hoosaad ah, codsiguna kuma shaqayn karo nuqulkan, sababtoo ah waxaa jiri doona xog hore.

Kadibna faylalka ka dib, waxaad had iyo jeer u baahan tahay inaad hubiso in wax walba ay ku habboon yihiin kooxdu, taas oo ah, waxaa jira tirada loo baahan yahay ee nuqullada, ma jiro dib u dhac ku yimid.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Markaan arrimahaas ku guda jirno, waxaan soo jeedin doonaa talooyin. Waxaan isku dayay inaan ku daro laba sawir. Malaha, dhammaan sheekooyinka waxaa lagu dari karaa laba sawir oo keliya.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Markaad isticmaasho Patroni, waa inaad lahaataa la socodka. Waa inaad had iyo jeer ogaataa marka autofileover dhacay, sababtoo ah haddii aadan ogeyn inaad leedahay autofileover, ma lihid koontaroolka kooxda. Taasina waa xun.

Fayliye kasta ka dib, had iyo jeer waa inaan gacanta ku hubinaa kutlada. Waxaan u baahannahay inaan hubinno inaan mar walba haysanno tiro cusub oo nuqullo ah, ma jiro dib-u-dhac ku-meel-gaar ah, ma jiraan wax khaladaad ah oo ku jira diiwaannada la xidhiidha ku-noqoshada socodka, oo leh Patroni, oo leh nidaamka DCS.

Automation-ku si guul leh ayuu u shaqayn karaa, Patroni waa qalab aad u wanaagsan. Way shaqayn kartaa, laakiin tani ma keenayso kutlada gobolka la rabo. Haddaynu ogaan wayno, dhib baynu gelaynaa.

Patronina maaha xabbad qalin ah. Waxaan weli u baahanahay inaan fahamno sida Postgres u shaqeeyo, sida soo-celinta u shaqeyso iyo sida Patroni ula shaqeeyo Postgres, iyo sida xiriirka u dhexeeya noodhka loo bixiyo. Tani waxay lama huraan u tahay si aad u awooddo inaad ku xalliso dhibaatooyinka gacmahaaga.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sideen u wajaho arrinta ogaanshaha? Waxaa dhacday in aan la shaqeyno macaamiil kala duwan oo qofna uusan haysan xirmo ELK ah, waana in aan kala saarno diiwaannada annagoo furayna 6 consoles iyo 2 tabs. Hal tab, kuwani waa diiwaanka Patroni ee noode kasta, tabka kale, kuwani waa Logyada Qunsulka, ama Postgres haddii loo baahdo. Aad bay u adag tahay in tan la ogaado.

Waa maxay hababka aan qaaday? Marka hore, waxaan had iyo jeer fiiriyaa marka fayl-gareeyaha yimaado. Anigana tani waa biyo-mareen. Waxaan eegaa wixii dhacay ka hor faylalka, inta lagu guda jiro faylka iyo ka dib faylka. Fileover-ku wuxuu leeyahay laba calaamadood: tani waa bilowga iyo wakhtiga dhamaadka.

Marka xigta, waxaan fiiriyaa diiwaannada dhacdooyinka ka hor faylalka, kuwaas oo ka horreeyay fayl-hayaha, i.e. waxaan raadiyaa sababaha uu fayl-gareeyaha u dhacay.

Waxayna tani siinaysaa sawir lagu fahmayo wixii dhacay iyo waxa la samayn karo mustaqbalka si aanay duruufahaasi u dhicin (oo natiijadu tahay, ma jiro faylal).

Oo halkee ayaan inta badan eegnaa? waxaan eegayaa:

  • Marka hore, u tag Patroni logs.
  • Marka xigta, waxaan eegayaa qoraallada Postgres, ama diiwaannada DCS, taas oo ku xidhan waxa laga helay diiwaannada Patroni.
  • Iyo diiwaanka nidaamka ayaa sidoo kale mararka qaarkood siinaya fahamka waxa keenay faylalka.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Sideen u dareemayaa Patroni? Waxaan xiriir aad u wanaagsan la leeyahay Patroni. Fikradayda, tani waa tan ugu fiican maanta. Waxaan aqaan alaabooyin kale oo badan. Kuwani waa Stolon, Repmgr, Pg_auto_failover, PAF. 4 qalab. Waan isku dayay dhamaantood. Patroni waa kan aan jeclahay.

Haddii ay i weydiiyaan: "Miyaan ku talinayaa Patroni?". Waxaan dhihi doonaa haa, sababtoo ah waxaan jeclahay Patroni. Oo waxaan u maleynayaa inaan bartay sida loo kariyo.

Haddii aad xiisaynayso inaad aragto dhibaatooyinka kale ee ka jira Patroni marka laga reebo dhibaatooyinka aan soo sheegay, waxaad had iyo jeer hubin kartaa bogga arrimaha ku yaal GitHub. Sheekooyin badan oo kala duwan ayaa jira, waxaana halkaas looga hadlayaa arrimo badan oo xiiso leh. Natiijo ahaan, qaar ka mid ah cayayaanka ayaa la soo bandhigay oo la xaliyay, taas oo ah, kani waa akhris xiiso leh.

Waxaa jira sheekooyin xiisa leh oo ku saabsan dadka is-tooganaya cagta. Xog badan. Waad akhriday oo fahamtay in aanay daruuri ahayn in sidaas la sameeyo. Waan isku saxay.

Waxaan jeclaan lahaa inaan si weyn ugu mahadceliyo Zalando horumarinta mashruucan, kuwaas oo ah Alexander Kukushkin iyo Alexey Klyukin. Aleksey Klyukin waa mid ka mid ah qorayaasha, hadda kama shaqeeyo Zalando, laakiin kuwani waa laba qof oo bilaabay inay la shaqeeyaan alaabtan.

Oo waxaan u maleynayaa in Patroni uu yahay shay aad u fiican. Waan ku faraxsanahay inay jirto, xiiso ayay la leedahay. Waxaan aad ugu mahadcelinayaa dhammaan wax ku darsadayaasha u soo qoraya balastar Patroni. Waxaan rajeynayaa in Patroni uu noqon doono mid qaan-gaar ah, qabow oo waxtar leh da'da. Durba waa shaqaynaysa, laakiin waxaan rajaynayaa inay ka sii fiicnaan doonto. Sidaa darteed, haddii aad qorsheyneyso inaad isticmaasho Patroni, markaa ha ka baqin. Tani waa xal fiican, waa la hirgelin karaa oo la isticmaali karaa.

Waa intaas. Haddii aad su'aalo qabto, weydii.

Sheekooyinka Fashilan ee Patroni ama Sida loo burburiyo kooxdaada PostgreSQL. Alexey Lesovsky

Su'aalahaada

Waad ku mahadsan tahay warbixinta! Haddii ka dib faylalka aad wali u baahan tahay inaad si taxadar leh halkaas u eegto, markaa maxaan ugu baahanahay fayl-gale toos ah?

Sababtoo ah waa wax cusub. Waxaan iyada la joognay hal sano oo keliya. Wanagsan in la nabad galo. Waxaan rabnaa inaan soo galno oo aragno in wax walba ay runtii u shaqeeyeen sidii la rabay. Tani waa heerka kalsoonida-la'aanta dadka waaweyn - way fiicantahay in laba jeer la hubiyo oo la arko.

Tusaale ahaan, waxaan tagnay subaxdii oo aan eegnay, sax?

Ma aha subaxdii, sida caadiga ah waxaan baranaa autofile ku dhawaad ​​isla markiiba. Waxaan helnaa ogeysiisyo, waxaan aragnaa in autofile dhacay. Isla markiiba waannu tagnay oo eegnay. Laakiin dhammaan jeegaggaas waa in la keenaa heerka la socodka. Haddii aad ka gasho Patroni adoo adeegsanaya REST API, waxaa jira taariikh. Taariikh ahaan, waxaad arki kartaa waqtiyada uu dhacay faylka. Iyadoo taas laga duulayo, la socodka waa la samayn karaa. Waxaad arki kartaa taariikhda, inta dhacdo ee halkaas ka dhacay. Haddii aan haysano dhacdooyin badan, markaa autofile ayaa dhacay. Waad tagi kartaa oo arag Ama otomaatigyadayada la socodka waxay hubiyeen inaan haysano dhammaan nuqulada meesha yaal, ma jiraan wax dib u dhac ah oo wax walbaa waa fiican yihiin.

Waad ku mahadsan tahay!

Aad baad ugu mahadsantahay sheekada weyn! Haddii aan ka guurnay kooxda DCS meel ka fog kooxda Postgres, markaas kooxdani waxay sidoo kale u baahan tahay in loo adeego xilliyo? Waa maxay hababka ugu wanaagsan ee qaybo ka mid ah kooxda DCS ay u baahan yihiin in la damiyo, wax iyaga lagu sameeyo, iwm.? Sidee buu dhismahan oo dhami u badbaadayaa? Sideese u samaysaa waxyaalahan?

Hal shirkad, waxay ahayd lagama maarmaan in la sameeyo matrix dhibaatooyinka, waxa dhacaya haddii mid ka mid ah qaybaha ama dhowr qaybood ay ku guuldareystaan. Sida ku cad jaantuskan, waxaan si isdaba joog ah u mareynaa dhammaan qaybaha waxaanan dhiseynaa xaalado haddii ay dhacdo fashilka qaybahan. Sidaas awgeed, xaalad kasta oo guul-darro ah, waxaad yeelan kartaa qorshe hawleed soo kabasho. Dhanka DCS, waxay ku timaaddaa qayb ka mid ah kaabayaasha caadiga ah. Maamulka ayaana maamula, waxaanan horey ugu tiirsannahay maamulayaasha maamula iyo awooddooda inay hagaajiyaan haddii ay shil dhacaan. Haddii aysan jirin DCS gabi ahaanba, markaa waanu geynaa, laakiin isla markaa si gaar ah uma kormeerno, sababtoo ah mas'uul kama nihin kaabayaasha, laakiin waxaan ku siineynaa talooyin ku saabsan sida iyo waxa la kormeerayo.

Taasi waa, miyaan si sax ah u fahmay in aan u baahanahay in aan joojiyo Patroni, curyaamiyo faylalka, wax walbana baabi'iyo ka hor inta aan waxba la samayn martigeliyayaasha?

Waxay kuxirantahay inta nood ee aan ku leenahay kooxda DCS. Haddii ay jiraan nood badan iyo haddii aan joojinno mid ka mid ah qanjidhada (koobka), markaa kooxdu waxay haysaa kooram. Patronina wuu sii shaqaynayaa. Oo waxba lama kicin. Haddii aan haysano qaar ka mid ah hawlgallada adag ee saameeya qanjidhada badan, maqnaanshahooda kuwaas oo burburin kara kooramka, ka dib - haa, waxay macno samayn kartaa in Patroni la joojiyo. Waxay leedahay amar u dhigma - patronictl pause, patronictl resume. Waanu joojinay oo autofiiliyuhu ma shaqaynayo wakhtigaas. Waxaan dayactir ku sameynaa kooxda DCS, ka dib waan ka qaadnaa hakadkii oo aan sii wadnaa inaan noolaano.

Waad ku mahadsan tahay!

Aad baad ugu mahadsantahay warbixintaada! Sidee ayay kooxda alaabadu u dareemayaan xogta luminta?

Kooxaha wax soo saarku ma daneeyaan, hogaamiyayaasha kooxduna way welwelsan yihiin.

Maxaa dammaanad ah ayaa jira?

Dammaanadqaadyadu aad bay u adag yihiin. Alexander Kukushkin wuxuu leeyahay warbixin "Sida loo xisaabiyo RPO iyo RTO", ie waqtiga soo kabashada iyo inta xog ee aan lumin karno. Waxaan qabaa inaan u baahanahay inaan helno boggan oo aan barano. Ilaa hadda inta aan xasuusto, waxaa jira tallaabooyin gaar ah oo ku saabsan sida loo xisaabiyo waxyaalahan. Immisa xawaalad ayaannu lumin karnaa, inta xog ee aan lumin karno. Ikhtiyaar ahaan, waxaan u isticmaali karnaa ku celcelinta isku midka ah ee heerka Patroni, laakiin tani waa seef laba af leh: midkoodna waxaan haysanaa isku halaynta xogta, ama waxaan luminaa xawaaraha. Waxaa jira ku celcelin isku mid ah, laakiin sidoo kale ma dammaanad qaadayso 100% ka ilaalinta luminta xogta.

Alexey, waad ku mahadsan tahay warbixinta weyn! Waayo-aragnimo ma u leedahay isticmaalka Patroni ee ilaalinta heerka eber? Taasi waa, iyadoo lala kaashanayo heeganka isku midka ah? Tani waa su'aasha ugu horeysa. Iyo su'aasha labaad. Waxaad isticmaashay xalal kala duwan. Waxaan isticmaalnay Repmgr, laakiin aan lahayn autofiler, haddana waxaan qorsheyneynaa inaan ku darno autofiler. Waxaanan u aragnaa Patroni sidii xal kale. Maxaad dhihi kartaa faa'iidooyin ahaan marka la barbar dhigo Repmgr?

Su'aasha ugu horreysa waxay ku saabsan tahay nuqullada isku midka ah. Qofna ma isticmaalo ku celcelinta isku midka ah halkan, sababtoo ah qof kastaa wuu cabsanayaa (Macaamiil badan ayaa horeyba u isticmaalayay, mabda 'ahaan, ma dareemin dhibaatooyinka waxqabadka Qoraalka afhayeenka). Laakiin waxaan soo saarnay xeer nafteena ah oo ah in ay jiraan ugu yaraan saddex nood oo ku jira koox-celin isku mid ah, sababtoo ah haddii aan leenahay laba noodood iyo haddii sayid ama nuqul ku guuldareysto, ka dibna Patroni wuxuu u beddelaa noodhkan qaabka Standalone si codsigu u sii socdo shaqada. Xaaladdan oo kale, waxaa jira halis ah luminta xogta.

Marka laga hadlayo su'aasha labaad, waxaanu isticmaalnay Repmgr oo aan wali la samaynay macaamiisha qaar sababo taariikheed dartood. Maxaa la odhan karaa? Patroni wuxuu la socdaa autofiler ka baxsan sanduuqa, Repmgr waxay la socotaa autofiler sida muuqaal dheeri ah oo u baahan in la awoodsiiyo. Waxaan u baahanahay inaan ku wadno daemon Repmgr node kasta ka dibna waxaan habeyn karnaa autofiler-ka.

Repmgr waxay hubisaa haddii qanjidhada Postgres ay nool yihiin. Nidaamyada Repmgr waxay hubinayaan jiritaanka midba midka kale, tani maaha hab aad waxtar u leh. waxaa jiri kara kiisas adag oo go'doon shabakadeed kaas oo koox weyn oo Repgr ah ay u kala qaybsanaan karto kuwa yar yar oo ay sii wadato shaqada. Anigu ma daba socon Repmgr muddo dheer, laga yaabaa in la hagaajiyay ... ama laga yaabaa in aan. Laakin ka saarida macluumaadka ku saabsan xaalada kooxda ee DCS, sida Stolon, Patroni uu sameeyo, waa ikhtiyaarka ugu macquulsan.

Alexey, waxaan qabaa su'aal, malaha mid curyaan ah. Mid ka mid ah tusaalooyinkii ugu horreeyay, waxaad DCS ka rartay mishiinka deegaanka una guurtay martigeliyaha fog. Waxaan fahamsanahay in shabakadu tahay shay leh sifooyin u gaar ah, oo ay ku nooshahay keligeed. Maxaa dhacaya haddii sabab qaar ka mid ah kooxda DCS ay noqoto mid aan la heli karin? Ma sheegi doono sababaha, waxaa jiri kara wax badan oo iyaga ka mid ah: laga bilaabo gacmaha qalloocan ee shabakadaha ilaa dhibaatooyinka dhabta ah.

Si sare uguma odhan, laakiin kooxda DCS waa inay sidoo kale noqotaa mid guuldarraysa, ie. waa tiro aan caadi ahayn oo nood ah, si kooramku u buuxsamo. Maxaa dhacaya haddii kooxda DCS ay noqoto mid aan la heli karin, ama kooramku aanu buuxin karin, tusaale ahaan nooc ka mid ah shabakadaha kala go'a ama cilladda noodhka? Xaaladdan oo kale, kooxda Patroni waxay galaysaa habka akhrinta oo keliya. Kooxda Patroni ma go'aamin karto xaaladda kooxda iyo waxa la sameeyo. Ma la xidhiidhi karto DCS oo ku kaydin karto gobolka cusub ee kutlada halkaas, sidaas darteed kooxda oo dhan waxay ku socotaa akhrin keliya. Oo waxay sugaysaa faragelinta gacanta ee hawlwadeenka ama in DCS ay soo kabsato.

Qiyaas ahaan, DCS waxay noo noqotaa adeeg muhiim u ah sida saldhigga laftiisa?

Haa Haa. Shirkado badan oo casri ah, Discovery Service waa qayb muhiim ah oo ka mid ah kaabayaasha. Waxaa la hirgeliyay xitaa ka hor inta aan la helin kaydka xogta kaabayaasha. Marka la eego, kaabayaasha ayaa la bilaabay, waxaa la geeyay DC, waxaana isla markiiba aan helnay Raadinta Adeegga. Haddii ay tahay Qunsulka, markaa DNS ayaa lagu dhisi karaa. Haddii tani ay tahay Etcd, markaa waxaa jiri kara qayb ka socota kooxda Kubernetes, taas oo wax kasta oo kale la geyn doono. Waxay iila muuqataa in Adeegga Discovery uu mar horeba qayb muhiim ah ka yahay kaabayaasha casriga ah. Oo waxay ka fikiraan wax aad uga sii horreeya marka loo eego xogta macluumaadka.

Waad ku mahadsan tahay!

Source: www.habr.com

Add a comment