Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Babban burin Patroni shine samar da Babban Samuwar ga PostgreSQL. Amma Patroni samfuri ne kawai, ba kayan aiki da aka shirya ba (wanda, a gaba ɗaya, an faɗi a cikin takaddun). A kallo na farko, bayan kafa Patroni a cikin dakin gwaje-gwaje, zaku iya ganin menene babban kayan aiki da kuma yadda sauƙin yake ɗaukar ƙoƙarinmu na karya tari. Koyaya, a aikace, a cikin yanayin samarwa, komai ba koyaushe yana faruwa da kyau da kyau kamar a cikin gwajin gwaji ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Zan gaya muku kadan game da kaina. Na fara a matsayin mai sarrafa tsarin. Ya yi aiki a ci gaban yanar gizo. Ina aiki a Data Egret tun 2014. Kamfanin yana yin shawarwari a fagen Postgres. Kuma muna hidima daidai Postgres, kuma muna aiki tare da Postgres kowace rana, don haka muna da ƙwarewa daban-daban dangane da aikin.

Kuma a ƙarshen 2018, mun fara amfani da Patroni sannu a hankali. Kuma an tara wasu gogewa. Ko ta yaya muka gano shi, mu gyara shi, mun zo ga mafi kyawun ayyukanmu. Kuma a cikin wannan rahoto zan yi magana a kansu.

Baya ga Postgres, Ina son Linux. Ina so in zagaya a ciki da bincike, Ina so in tattara muryoyi. Ina son haɓakawa, kwantena, docker, Kubernetes. Duk wannan yana ba ni sha'awa, saboda tsofaffin halayen admin suna tasiri. Ina son magance sa ido. Kuma ina son postgres abubuwan da suka shafi gudanarwa, watau replication, backup. Kuma a cikin sauran lokaci na na rubuta a cikin Go. Ni ba injiniyan software ba ne, kawai na rubuta wa kaina a cikin Go. Kuma yana ba ni jin daɗi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

  • Ina tsammanin da yawa daga cikinku sun san cewa Postgres ba shi da HA (High Availability) daga cikin akwatin. Don samun HA, kuna buƙatar shigar da wani abu, saita shi, yin ƙoƙari kuma ku samu.
  • Akwai kayan aiki da yawa kuma Patroni shine ɗayansu wanda ke warware HA kyakkyawa mai kyau da kyau sosai. Amma ta hanyar sanya shi duka a cikin gwajin gwaji da gudanar da shi, za mu iya ganin cewa duk yana aiki, za mu iya sake haifar da wasu matsalolin, duba yadda Patroni ke yi musu hidima. Kuma za mu ga cewa duk yana aiki mai girma.
  • Amma a aikace, mun fuskanci matsaloli daban-daban. Kuma zan yi magana game da waɗannan matsalolin.
  • Zan gaya muku yadda muka gano shi, abin da muka tweaked - ko ya taimake mu ko a'a.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

  • Ba zan gaya muku yadda ake shigar da Patroni ba, saboda kuna iya google akan Intanet, zaku iya duba fayilolin daidaitawa don fahimtar yadda komai yake farawa, yadda aka daidaita shi. Kuna iya fahimtar makirci, gine-gine, gano bayanai game da shi akan Intanet.
  • Ba zan yi magana game da kwarewar wani ba. Zan yi magana ne kawai game da matsalolin da muka fuskanta.
  • Kuma ba zan yi magana game da matsalolin da ke wajen Patroni da PostgreSQL ba. Idan, alal misali, akwai matsalolin da ke da alaƙa da daidaitawa, lokacin da ƙungiyarmu ta rushe, ba zan yi magana game da shi ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Da kuma 'yar karama kafin mu fara rahotonmu.

Duk waɗannan matsalolin da muka fuskanta, mun sami su a farkon watanni 6-7-8 na aiki. Bayan lokaci, mun zo ga mafi kyawun ayyukanmu na ciki. Kuma matsalolinmu sun ɓace. Saboda haka, an sanar da rahoton kimanin watanni shida da suka gabata, lokacin da ya yi sabo a kaina kuma na tuna da shi duka.

A cikin shirin shirya rahoton, na riga na tayar da tsofaffin matattu, na kalli katako. Kuma ana iya mantawa da wasu bayanai, ko kuma wasu bayanai ba za a iya yin cikakken bincike ba yayin da ake nazarin matsalolin, don haka a wasu lokutan ana iya ganin cewa ba a yi la’akari da matsalolin ba, ko kuma akwai karancin bayanai. Don haka ina rokonka da ka bani uzuri na wannan lokacin.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Menene Patroni?

  • Wannan samfuri ne don gina HA. Abin da ya ce a cikin takardun ke nan. Kuma a ra'ayi na, wannan bayani ne daidai. Patroni ba harsashin azurfa ba ne wanda zai magance duk matsalolin ku, wato, kuna buƙatar yin ƙoƙari don yin aiki da kawo fa'ida.
  • Wannan sabis ɗin wakili ne wanda aka shigar akan kowane sabis na bayanai kuma nau'in tsarin init ne don Postgres ɗin ku. Yana farawa Postgres, tsayawa, sake farawa, sake tsarawa, da canza yanayin gungun ku.
  • Sabili da haka, don adana yanayin cluster, wakilcinsa na yanzu, kamar yadda yake gani, ana buƙatar wani nau'in ajiya. Kuma daga wannan ra'ayi, Patroni ya ɗauki hanyar adana ƙasa a cikin tsarin waje. Yana da tsarin ajiyar ajiya mai rarrabawa. Yana iya zama Etcd, Consul, ZooKeeper, ko kubernetes Etcd, watau ɗaya daga cikin waɗannan zaɓuɓɓuka.
  • Kuma ɗayan fasalulluka na Patroni shine cewa zaku sami autofiler daga cikin akwatin, ta hanyar saita shi kawai. Idan muka ɗauki Repmgr don kwatanta, to an haɗa mai fayil ɗin a can. Tare da Repmgr, muna samun sauyawa, amma idan muna son autofiler, to muna buƙatar saita shi ƙari. Patroni ya riga ya sami autofiler daga cikin akwatin.
  • Kuma akwai wasu abubuwa da yawa. Alal misali, kula da daidaitawa, zuba sabon kwafi, madadin, da dai sauransu. Amma wannan ya wuce iyakar rahoton, ba zan yi magana game da shi ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma ƙaramin sakamako shine babban aikin Patroni shine yin rijiyar autofile da dogaro don rukunin mu ya ci gaba da aiki kuma aikace-aikacen baya lura da canje-canje a cikin gungun topology.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Amma lokacin da muka fara amfani da Patroni, tsarinmu yana samun ɗan rikitarwa. Idan a baya muna da Postgres, to lokacin amfani da Patroni muna samun Patroni kanta, muna samun DCS inda aka adana jihar. Kuma duk ya yi aiki ko ta yaya. To me zai iya faruwa ba daidai ba?

Zai iya karya:

  • Postgres na iya karya. Yana iya zama master ko kwafi, ɗaya daga cikinsu na iya gazawa.
  • Patroni da kansa na iya karya.
  • DCS inda aka adana jihar na iya karyawa.
  • Kuma hanyar sadarwa na iya karya.

Duk waɗannan batutuwa zan yi la'akari da su a cikin rahoton.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Zan yi la'akari da lokuta yayin da suke daɗaɗaɗaɗawa, ba daga ra'ayi cewa lamarin ya ƙunshi abubuwa da yawa ba. Kuma daga mahangar ra'ayi na zahiri, cewa wannan shari'ar ta kasance mai wahala a gare ni, yana da wahala a wargaza shi ... kuma akasin haka, wani lamari yana da haske kuma yana da sauƙi a wargaza shi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma shari'ar farko ita ce mafi sauki. Wannan shine lamarin lokacin da muka ɗauki gungun bayanai kuma muka tura ma'ajiyar mu ta DCS akan gungu iri ɗaya. Wannan shine mafi yawan kuskure. Wannan kuskure ne wajen gina gine-gine, watau hada sassa daban-daban a wuri guda.

Don haka, akwai mai yin fayil, mu je mu magance abin da ya faru.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma a nan muna sha'awar lokacin da fayil ɗin ya faru. Wato, muna sha'awar wannan lokacin da yanayin tari ya canza.

Amma mai yin fayil ɗin ba koyaushe yana nan take ba, watau baya ɗaukar kowane raka'a na lokaci, ana iya jinkirta shi. Yana iya zama dawwama.

Saboda haka, yana da lokacin farawa da lokacin ƙarewa, watau lamari ne mai ci gaba. Kuma muna raba duk abubuwan da suka faru zuwa tazara guda uku: muna da lokaci kafin mai fayil, lokacin mai fayil da bayan mai fayil. Wato, muna la'akari da duk abubuwan da suka faru a cikin wannan lokaci.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma abu na farko, lokacin da fayil ɗin ya faru, muna neman dalilin abin da ya faru, menene dalilin abin da ya kai ga mai fayil ɗin.

Idan muka dubi rajistan ayyukan, za su zama classic Patroni rajistan ayyukan. Ya gaya mana a cikin su cewa uwar garken ya zama jagora, kuma aikin maigida ya wuce zuwa wannan kumburi. Anan an haskaka shi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Na gaba, muna buƙatar fahimtar dalilin da yasa mai fayil ɗin ya faru, watau abubuwan da suka faru waɗanda suka sa aikin maigida ya motsa daga wannan kumburi zuwa wancan. Kuma a wannan yanayin, duk abin da yake mai sauƙi ne. Muna da kuskure wajen yin hulɗa tare da tsarin ajiya. Maigidan ya gane cewa ba zai iya aiki tare da DCS ba, wato, akwai wata matsala game da hulɗar. Kuma ya ce ba zai iya zama ubangida ba kuma ya yi murabus. Wannan layin “demoteted self” yana faɗin haka.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Idan muka dubi abubuwan da suka faru a gaban mai fayil ɗin, za mu iya ganin a can ainihin dalilan da suka kasance matsalar ci gaba da mayen.

Idan muka kalli rajistan ayyukan Patroni, za mu ga cewa muna da kurakurai da yawa, lokutan ƙarewa, watau wakili na Patroni ba zai iya aiki tare da DCS ba. A wannan yanayin, wannan wakilin Consul ne, wanda ke sadarwa akan tashar jiragen ruwa 8500.

Kuma matsalar a nan ita ce Patroni da ma'ajin bayanai suna gudana akan mai masaukin baki daya. Kuma an kaddamar da sabar Consul a kan kulli guda. Ta hanyar ƙirƙirar kaya akan uwar garken, mun ƙirƙiri matsaloli ga sabar Consul kuma. Ba su iya sadarwa yadda ya kamata.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Bayan wani lokaci, lokacin da kaya ya ragu, Patroni namu ya sake yin magana da wakilai. An ci gaba da aiki na yau da kullun. Kuma wannan Pgdb-2 uwar garken ya sake zama maigidan kuma. Wato akwai wani ɗan ƙaramin juzu'i, wanda kullin ya yi murabus daga ikon maigidan, sannan ya sake ɗaukar su, wato, komai ya dawo kamar yadda yake.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma ana iya ɗaukar wannan azaman ƙararrawa na ƙarya, ko kuma ana iya ɗauka cewa Patroni ya yi duk abin da ke daidai. Wato ya gane cewa ba zai iya kula da halin da kungiyar ta ke ciki ba kuma ya cire ikonsa.

Kuma a nan matsalar ta taso ne saboda kasancewar Consul Servers suna kan na'urori iri ɗaya da sansanonin. Saboda haka, duk wani nauyi: ko nauyin da ke kan faifai ne ko na'urori masu sarrafawa, yana kuma shafar hulɗar da Consul cluster.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma mun yanke shawarar kada ta zauna tare, mun ware wani gungu na daban ga Consul. Kuma Patroni ya riga ya yi aiki tare da wani Consul na daban, wato, akwai wani gungu na Postgres daban, gungu na Consul daban. Wannan jagora ce ta asali akan yadda ake ɗauka da kiyaye duk waɗannan abubuwa don kada su zauna tare.

A matsayin zaɓi, zaku iya karkatar da sigogi ttl, loop_wait, retry_timeout, watau ƙoƙarin tsira daga waɗannan kololuwar nauyin ɗan gajeren lokaci ta ƙara waɗannan sigogi. Amma wannan ba shine zaɓi mafi dacewa ba, saboda wannan nauyin na iya zama dogon lokaci. Kuma kawai za mu wuce waɗannan iyakokin waɗannan sigogi. Kuma hakan bazai taimaka ba da gaske.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Matsala ta farko, kamar yadda kuka fahimta, mai sauƙi ce. Mun dauka muka sanya DCS tare da tushe, mun sami matsala.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Matsala ta biyu tana kama da ta farko. Yayi kama da cewa muna sake samun matsalolin haɗin kai tare da tsarin DCS.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Idan muka kalli rajistan ayyukan, za mu ga cewa muna sake samun kuskuren sadarwa. Kuma Patroni ya ce ba zan iya yin hulɗa da DCS ba don haka maigidan na yanzu ya shiga yanayin kwafi.

Tsohon maigidan ya zama kwafi, a nan Patroni yana aiki, kamar yadda ya kamata. Yana gudanar da pg_rewind don mayar da log ɗin ciniki sannan a haɗa zuwa sabon maigida don cim ma sabon maigidan. Anan Patroni yayi aiki, kamar yadda ya kamata.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Anan dole ne mu nemo wurin da ya gabace mai fayil ɗin, watau kurakuran da suka sa mu sami fayil ɗin. Kuma a wannan batun, rajistan ayyukan Patroni sun dace sosai don aiki tare. Yana rubuta saƙonni iri ɗaya a wani tazara. Kuma idan muka fara gungurawa cikin waɗannan kujerun cikin sauri, to za mu ga daga gundumomin cewa gungumen ya canza, wanda ke nufin an fara wasu matsaloli. Da sauri muka koma wurin nan, ga abin da ya faru.

Kuma a cikin yanayi na al'ada, rajistan ayyukan suna kama da wannan. Ana duba mai makullin. Kuma idan mai shi, alal misali, ya canza, to, wasu al'amura na iya faruwa wanda dole ne Patroni ya amsa. Amma a wannan yanayin, muna lafiya. Muna neman wurin da kurakurai suka fara.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma bayan gungurawa har zuwa inda kurakuran suka fara bayyana, mun ga cewa mun sami babban fayil ɗin atomatik. Kuma da yake kurakuran mu suna da alaƙa da hulɗa da DCS kuma a cikin yanayinmu mun yi amfani da Consul, muna kuma duba bayanan Consul, abin da ya faru a can.

Kusan idan aka kwatanta lokacin mai shigar da karar da lokacin da ke cikin rajistar ofishin jakadancin, mun ga cewa makwabtanmu a cikin gungu na Consul sun fara shakkar wanzuwar sauran membobin kungiyar Consul.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma idan ka duba rajistan ayyukan wasu jami'an Consul, za ka ga cewa akwai wani irin rugujewar hanyar sadarwa da ke faruwa a wurin. Kuma dukkan mambobin kungiyar Consul suna shakkun kasancewar juna. Kuma wannan shine ƙwarin gwiwa ga mai fayil ɗin.

Idan aka dubi abin da ya faru kafin wadannan kura-kurai, za ka ga akwai kura-kurai iri-iri, misali, ajali, RPC ya fadi, wato a fili akwai wata matsala a mu’amalar ‘yan kungiyar Consul da juna. .

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Amsar mafi sauƙi ita ce gyara hanyar sadarwa. Amma a gare ni, a tsaye a kan mumbari, yana da sauƙi in faɗi wannan. Amma yanayin ya kasance wanda ba koyaushe abokin ciniki zai iya samun damar gyara hanyar sadarwar ba. Yana iya zama a cikin DC kuma bazai iya gyara hanyar sadarwa ba, ya shafi kayan aiki. Don haka ana buƙatar wasu zaɓuɓɓuka.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Akwai zaɓuɓɓuka:

  • Zaɓin mafi sauƙi, wanda aka rubuta, a ra'ayi na, har ma a cikin takaddun, shine musaki cak na Consul, wato, kawai wuce tsararrun fanko. Kuma muna gaya wa wakilin Consul kada ya yi amfani da cak. Tare da waɗannan cak, za mu iya yin watsi da waɗannan guguwar hanyar sadarwa kuma ba za mu fara mai fayil ba.
  • Wani zaɓi shine a duba raft_multiplier sau biyu. Wannan siga ce ta uwar garken Consul kanta. Ta hanyar tsohuwa, an saita shi zuwa 5. Ana ba da shawarar wannan ƙimar ta takaddun shaida don mahalli. A haƙiƙa, wannan yana shafar yawan saƙon tsakanin membobin cibiyar sadarwar Consul. A haƙiƙa, wannan siga yana shafar saurin sadarwar sabis tsakanin membobin ƙungiyar Consul. Kuma don samarwa, an riga an ba da shawarar rage shi don nodes ɗin suna musayar saƙonni sau da yawa.
  • Wani zaɓi da muka fito da shi shine ƙara fifikon ayyukan Consul a tsakanin sauran matakai don tsara tsarin tsarin aiki. Akwai irin wannan ma'auni na "kyakkyawa", kawai yana ƙayyade fifikon hanyoyin da mai tsara OS ke la'akari da shi lokacin tsarawa. Mun kuma rage kyakyawar kimar wakilan Consul, watau. ƙara fifiko ta yadda tsarin aiki ya ba wa Consul matakan lokaci don aiki da aiwatar da lambar su. A wajenmu, wannan ya warware mana matsalar.
  • Wani zaɓi kuma shine rashin amfani da Consul. Ina da aboki wanda yake babban mai goyon bayan Etcd. Kuma muna yi masa gardama akai-akai wanne ya fi Etcd ko Consul. Amma dangane da abin da ya fi kyau, yawanci mun yarda da shi cewa Consul yana da wakili wanda ya kamata ya gudana akan kowane kumburi tare da bayanan bayanai. Wato, hulɗar Patroni tare da ƙungiyar Consul ta shiga ta wannan wakili. Kuma wannan wakili ya zama kwalban kwalba. Idan wani abu ya faru da wakilin, Patroni ba zai iya yin aiki tare da gungu na Consul ba. Kuma wannan ita ce matsalar. Babu wakili a cikin shirin Etcd. Patroni na iya aiki kai tsaye tare da jerin sabar Etcd kuma ya riga ya sadarwa tare da su. Dangane da wannan, idan kuna amfani da Etcd a cikin kamfanin ku, to Etcd tabbas zai zama mafi kyawun zaɓi fiye da Consul. Amma mu a abokan cinikinmu koyaushe muna iyakance ta abin da abokin ciniki ya zaɓa da amfani. Kuma muna da Consul ga mafi yawancin abokan ciniki.
  • Kuma batu na ƙarshe shine a sake duba ƙimar ma'auni. Za mu iya ɗaga waɗannan sigogi sama da bege cewa matsalolin hanyar sadarwar mu na ɗan gajeren lokaci za su kasance gajere kuma ba za su faɗi a waje da kewayon waɗannan sigogi ba. Ta wannan hanyar za mu iya rage tashin hankali na Patroni zuwa autofile idan wasu matsalolin cibiyar sadarwa sun faru.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Ina tsammanin da yawa waɗanda ke amfani da Patroni sun saba da wannan umarnin.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Wannan umarni yana nuna halin yanzu na gungu. Kuma a kallon farko, wannan hoton na iya zama kamar al'ada. Muna da ubangida, muna da kwafi, babu lagwar kwafi. Amma wannan hoton al'ada ne daidai har sai mun san cewa wannan tarin ya kamata ya kasance yana da nodes uku, ba biyu ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A sakamakon haka, akwai autofile. Kuma bayan wannan autofile, kwafin mu ya ɓace. Muna bukatar mu gano dalilin da ya sa ta bace mu dawo da ita, mu mayar da ita. Kuma mun sake zuwa rajistan ayyukan mu ga dalilin da ya sa muke da auto-fileover.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A wannan yanayin, kwafi na biyu ya zama maigidan. Ba komai a nan.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma muna bukatar mu dubi kwafin da ya faɗo kuma wanda ba ya cikin gungu. Mun buɗe rajistan ayyukan Patroni kuma mun ga cewa mun sami matsala yayin aiwatar da haɗawa zuwa gungu a matakin pg_rewind. Don haɗawa zuwa gungu, kuna buƙatar mayar da rajistan ma'amala, nemi rajistan ma'amala da ake buƙata daga maigidan, sannan kuyi amfani da shi don cim ma maigidan.

A wannan yanayin, ba mu da rajistar ma'amala kuma kwafin ba zai iya farawa ba. Saboda haka, mun dakatar da Postgres tare da kuskure. Saboda haka ba ya cikin gungu.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Muna bukatar mu fahimci dalilin da ya sa ba a cikin tari da kuma dalilin da ya sa babu gundumomi. Mu je wurin sabon maigidan mu dubi abin da yake da shi a cikin gungumen azaba. Ya zama cewa lokacin da aka yi pg_rewind, wurin bincike ya faru. Kuma wasu tsoffin rajistan ayyukan ciniki an sake sawa suna kawai. Lokacin da tsohon maigida yayi ƙoƙarin haɗawa da sabon maigidan kuma ya tambayi waɗannan rajistan ayyukan, an riga an sake musu suna, kawai babu su.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Na kwatanta tambura lokacin da waɗannan abubuwan suka faru. Kuma akwai bambanci a zahiri mil 150, wato, wurin binciken da aka kammala a cikin dakika 369, an canza wa sassan WAL suna. Kuma a zahiri a cikin 517, bayan 150 millise seconds, sake dawowa ya fara kan tsohon kwafi. Wato, a zahiri mil 150 ya ishe mu ta yadda kwafin ba zai iya haɗawa da samun riba ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Menene zaɓuɓɓuka?

Mun fara amfani da ramummuka kwafi. Mun dauka yana da kyau. Kodayake a matakin farko na aiki mun kashe ramummuka. Da alama a gare mu idan ramummuka sun tara yawancin sassan WAL, za mu iya sauke maigidan. Zai fadi. Mun sha wahala na ɗan lokaci ba tare da ramummuka ba. Kuma mun gane cewa muna bukatar ramummuka, mun mayar da ramummuka.

Amma akwai matsala a nan, cewa idan maigidan ya je wurin replica, yana goge ramummuka kuma ya goge sassan WAL tare da ramummuka. Kuma don kawar da wannan matsalar, mun yanke shawarar ɗaga ma'aunin wal_keep_segments. Yana ƙetare zuwa 8 segments. Mun ɗaga shi zuwa 1 kuma muka duba yawan sararin da muke da shi. Kuma mun ba da gudummawar gigabytes 000 don wal_keep_segments. Wato, lokacin da muke canzawa, koyaushe muna da ajiyar gigabytes 16 na rajistan ayyukan ma'amala akan duk nodes.

Kuma ƙari - har yanzu yana da dacewa don ayyukan kulawa na dogon lokaci. Bari mu ce muna buƙatar sabunta ɗaya daga cikin kwafin. Kuma muna so mu kashe shi. Muna buƙatar sabunta software, watakila tsarin aiki, wani abu dabam. Kuma idan muka kashe kwafi, an kuma cire ramin wannan kwafin. Kuma idan muka yi amfani da ƙaramin wal_keep_segments, to tare da dogon rashi na kwafi, rajistan ayyukan kasuwanci za su ɓace. Za mu ɗaga kwafi, zai buƙaci waɗannan rajistan ayyukan ma'amala inda ya tsaya, amma ƙila ba za su kasance a kan maigidan ba. Kuma kwafin ma ba zai iya haɗawa ba. Saboda haka, muna adana babban jari na mujallu.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Muna da tushen samarwa. Tuni akwai ayyukan da ke ci gaba.

Akwai mai fayil. Muka shiga muka duba-komai yana cikin tsari, kwafi-kwafi na nan a wurin, babu lauje mai kwafi. Babu kurakurai a cikin rajistan ayyukan ko dai, komai yana cikin tsari.

Ƙungiyar samfuran ta ce ya kamata a sami wasu bayanai, amma muna ganin su daga tushe ɗaya, amma ba mu gani a cikin bayanan. Kuma muna bukatar mu fahimci abin da ya faru da su.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A bayyane yake cewa pg_rewind ya rasa su. Nan take muka fahimci haka, amma mun je mu ga me ke faruwa.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A cikin rajistan ayyukan, za mu iya samun ko da yaushe lokacin da mai fayil ya faru, wanda ya zama maigidan, kuma za mu iya sanin wane ne tsohon maigidan da kuma lokacin da yake so ya zama kwafi, watau muna buƙatar waɗannan rajistan ayyukan don gano adadin ma'amalar rajistan ayyukan. aka rasa.

Tsohon ubangidanmu ya sake yi. Kuma an yi rajistar Patroni a cikin autorun. An ƙaddamar da Patroni. Sai ya fara Postgres. Daidai sosai, kafin fara Postgres kuma kafin yin shi kwafi, Patroni ya ƙaddamar da tsarin pg_rewind. Saboda haka, ya goge wani ɓangare na rajistan ayyukan ciniki, ya zazzage sababbi kuma ya haɗa. Anan Patroni yayi aiki da hankali, wato kamar yadda aka zata. An dawo da gungu. Muna da nodes 3, bayan mai fayil 3 nodes - duk abin da yake sanyi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Mun yi asarar wasu bayanai. Kuma muna bukatar mu fahimci nawa muka yi asara. Muna neman lokacin da muka sami koma baya. Za mu iya samun shi a cikin irin wannan shigarwar mujallu. Rewind ya fara, yayi wani abu a can ya ƙare.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Muna buƙatar nemo matsayi a cikin ma'amalar ma'amala inda tsohon maigidan ya tsaya. A wannan yanayin, wannan alama ce. Kuma muna buƙatar alamar ta biyu, wato, nisan da tsohon ubangida ya bambanta da sabon.

Muna ɗaukar pg_wal_lsn_diff na yau da kullun kuma muna kwatanta waɗannan alamomi guda biyu. Kuma a wannan yanayin, muna samun megabytes 17. Da yawa ko kadan, kowa ya yanke shawara da kansa. Domin ga wani megabytes 17 ba shi da yawa, ga wani yana da yawa kuma ba za a yarda da shi ba. A nan, kowane mutum yana ƙayyade kansa daidai da bukatun kasuwancin.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Amma me muka gano wa kanmu?

Na farko, dole ne mu yanke shawara da kanmu - shin koyaushe muna buƙatar Patroni don farawa ta atomatik bayan sake kunna tsarin? Sau da yawa yakan faru cewa dole ne mu je wurin tsohon maigida, mu ga yadda ya yi nisa. Wataƙila bincika sassan log ɗin ciniki, duba abin da ke wurin. Kuma don fahimtar ko za mu iya rasa wannan bayanan ko muna buƙatar gudanar da tsohon maigidan a cikin keɓewa don cire wannan bayanan.

Kuma bayan haka dole ne mu yanke shawara ko za mu iya zubar da wannan bayanan ko kuma za mu iya dawo da su, haɗa wannan kullin a matsayin kwafi ga tarin mu.

Bugu da kari, akwai ma'aunin "maximum_lag_on_failover". Ta hanyar tsohuwa, idan ƙwaƙwalwar ajiyar ta tana aiki da ni, wannan sigar tana da ƙimar megabyte 1.

Ta yaya yake aiki? Idan kwafin mu yana baya da megabyte 1 na bayanai a cikin lag ɗin kwafi, to wannan kwafin baya shiga cikin zaɓe. Kuma idan ba zato ba tsammani akwai fayilover, Patroni yana duban waɗanne kwafi ne a baya. Idan sun kasance a baya da adadi mai yawa na rajistar ma'amala, ba za su iya zama jagora ba. Wannan kyakkyawan yanayin tsaro ne wanda ke hana ku asarar bayanai da yawa.

Amma akwai matsala a cikin cewa an sabunta lag ɗin maimaitawa a cikin gungun Patroni da DCS a wani ɗan lokaci. Ina tsammanin 30 seconds shine tsohuwar ƙimar ttl.

Dangane da haka, ana iya samun yanayi inda akwai lag guda ɗaya na kwafi don kwafi a cikin DCS, amma a zahiri za a iya samun lag ɗin gaba ɗaya ko kuma ba za a sami raguwa ba kwata-kwata, watau wannan abu ba lokaci ba ne. Kuma ba koyaushe yana nuna ainihin hoto ba. Kuma ba shi da daraja a yi zato dabaru a kai.

Kuma haɗarin hasara ya kasance koyaushe. Kuma a cikin mafi munin yanayi, dabara ɗaya, kuma a cikin matsakaicin yanayin, wata dabara. Wato, lokacin da muka tsara aiwatar da Patroni kuma muka ƙididdige yawan bayanan da za mu iya rasa, dole ne mu dogara da waɗannan dabarun kuma mu yi tunanin yawan bayanan da za mu iya rasa.

Kuma akwai labari mai dadi. Lokacin da tsohon maigidan ya ci gaba, zai iya ci gaba saboda wasu matakai na baya. Wato, akwai wani nau'i na autovacuum, ya rubuta bayanan, ya ajiye su zuwa log ɗin ciniki. Kuma za mu iya sauƙi watsi da rasa wannan bayanai. Babu matsala a cikin wannan.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma wannan shine yadda rajistan ayyukan yayi kama idan an saita max_lag_on_failover kuma fayil ɗin ya faru, kuma kuna buƙatar zaɓar sabon jagora. Kwafin yana tantance kansa a matsayin ba zai iya shiga zaɓe ba. Kuma ta ki shiga takarar shugaba. Kuma tana jira a zabo sabon ubangida, ta yadda za ta iya haɗawa da shi. Wannan ƙarin ma'auni ne akan asarar bayanai.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Anan muna da ƙungiyar samfur waɗanda suka rubuta cewa samfuran su na da matsala tare da Postgres. A lokaci guda, ba za a iya isa ga maigidan kansa ba, saboda ba a samuwa ta hanyar SSH. Kuma autofile din baya faruwa.

An tilasta wa wannan rundunar sake yin aiki. Saboda sake kunnawa, fayil ɗin auto-fayil ya faru, kodayake yana yiwuwa a yi fayil ɗin auto-fayil na hannu, kamar yadda na fahimta yanzu. Kuma bayan sake yi, za mu riga mu ga abin da muke da shi tare da maigidan na yanzu.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Har ila yau, mun sani tun da farko cewa muna da matsala ta faifai, wato, mun riga mun san ta hanyar sanya ido kan inda za mu tono da abin da za mu nema.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Mun shiga log ɗin postgres, muka fara ganin abin da ke faruwa a can. Mun ga aikata ayyukan da suka wuce a can na daƙiƙa ɗaya, biyu, uku, wanda ko kaɗan ba al'ada ba ne. Mun ga cewa autovacuum ɗinmu yana farawa a hankali da ban mamaki. Kuma mun ga fayilolin wucin gadi akan faifan. Wato, duk waɗannan alamu ne na matsalolin da faifai.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Mun duba cikin tsarin dmesg (Login kernel). Kuma mun ga cewa muna da matsala da daya daga cikin faifai. Tsarin faifan diski shine Raid software. Mun duba /proc/mdstat mun ga cewa mun rasa tuƙi ɗaya. Wato akwai Raid of 8 disks, mun rasa daya. Idan ka kalli faifan a hankali, to a cikin fitarwa za ka ga cewa ba mu da sde a can. A wurinmu, bisa ga sharadi, faifan ya fita. Wannan ya haifar da matsalolin faifai, kuma aikace-aikacen kuma sun sami matsala yayin aiki tare da gungu na Postgres.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma a wannan yanayin, Patroni ba zai taimaka mana ta kowace hanya ba, saboda Patroni ba shi da aikin kula da yanayin uwar garken, yanayin diski. Kuma dole ne mu sanya ido a kan irin waɗannan yanayi ta hanyar sa ido na waje. Mun ƙara saka idanu na diski da sauri zuwa saka idanu na waje.

Kuma akwai irin wannan tunani - shin shinge ko software na tsaro zai iya taimaka mana? Mun yi tunanin cewa da wuya ya taimaka mana a cikin wannan harka, domin a lokacin matsalolin Patroni ya ci gaba da hulɗa da ƙungiyar DCS kuma bai ga wata matsala ba. Wato, daga ra'ayi na DCS da Patroni, duk abin da yake da kyau tare da gungu, ko da yake a gaskiya akwai matsaloli tare da faifai, akwai matsaloli tare da samun bayanai.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A ra'ayi na, wannan yana daya daga cikin mafi ban mamaki matsalolin da na daɗe da bincike, na karanta litattafai da yawa, na sake zagaya kuma na kira shi cluster simulator.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Matsalar ita ce, tsohon maigidan ba zai iya zama kwafi na al'ada ba, watau Patroni ya fara shi, Patroni ya nuna cewa wannan kullin yana nan a matsayin kwafi, amma a lokaci guda ba kwafi na al'ada ba ne. Yanzu za ku ga dalilin. Wannan shi ne abin da na kiyaye daga nazarin wannan matsala.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma ta yaya aka fara? Ya fara, kamar yadda yake a cikin matsalar da ta gabata, tare da birki na diski. Mun yi alkawari na daƙiƙa, biyu.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

An sami raguwa a cikin haɗin gwiwa, watau, abokan ciniki sun tsage.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

An sami toshewar tsanani daban-daban.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma, bisa ga haka, tsarin tsarin faifai ba shi da amsa sosai.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma abu mafi ban mamaki a gare ni shine buƙatar rufewar nan take da ta iso. Postgres yana da hanyoyin rufewa guda uku:

  • Yana da kyau idan muka jira duk abokan ciniki su cire haɗin kansu da kansu.
  • Akwai sauri lokacin da muka tilasta abokan ciniki su cire haɗin saboda za mu rufe.
  • Kuma nan take. A wannan yanayin, nan da nan ba ya gaya wa abokan ciniki su rufe, kawai yana rufewa ba tare da gargadi ba. Kuma ga duk abokan ciniki, tsarin aiki ya riga ya aika saƙon RST (saƙon TCP wanda haɗin ke katsewa kuma abokin ciniki ba shi da wani abu don kamawa).

Wanene ya aiko da wannan siginar? Postgres baya tafiyar matakai ba sa aika irin waɗannan sigina ga juna, watau wannan shine kisa-9. Ba sa aika irin waɗannan abubuwa ga junansu, suna amsawa ne kawai ga irin waɗannan abubuwa, watau wannan shine sake farawa na gaggawa na Postgres. Wa ya aiko, ban sani ba.

Na kalli umurnin “karshe” sai naga mutum daya shima ya shiga wannan uwar garken tare da mu, amma ina jin kunyar yin tambaya. Wataƙila an kashe -9. Zan ga kashe -9 a cikin rajistan ayyukan, saboda Postgres ya ce ya kashe -9, amma ban gan shi a cikin rajistan ayyukan ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Duban gaba, na ga cewa Patroni bai rubuta wa log ɗin ba na dogon lokaci - 54 seconds. Kuma idan muka kwatanta tambura sau biyu, babu saƙon kusan daƙiƙa 54.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma a wannan lokacin akwai autofile. Patroni ya yi babban aiki a nan kuma. Tsohon maigidanmu bai samu ba, wani abu ya same shi. Kuma aka fara zaben sabon ubangida. Komai yayi kyau anan. pgsql01 mu ya zama sabon shugaba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Muna da kwafi wanda ya zama gwani. Kuma akwai amsa ta biyu. Kuma an sami matsaloli tare da kwafi na biyu. Ta yi kokarin sake tsarawa. Kamar yadda na fahimta, ta yi ƙoƙari ta canza recovery.conf, sake kunna Postgres kuma haɗi zuwa sabon maigidan. Takan rubuta saƙonni kowane daƙiƙa 10 da take ƙoƙarin, amma ba ta yi nasara ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma yayin waɗannan yunƙurin, siginar rufewa nan da nan ya isa ga tsohon maigidan. An sake kunna maigidan. Haka kuma farfadowa yana tsayawa saboda tsohon maigidan ya shiga sake yi. Wato kwafin ba zai iya haɗawa da shi ba, saboda yana cikin yanayin kashewa.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A wani lokaci, ya yi aiki, amma maimaitawa bai fara ba.

Iyakar abin da nake tsammani shine akwai wani tsohon adireshin adireshin a recovery.conf. Kuma a lokacin da wani sabon master ya bayyana, na biyu kwafi har yanzu kokarin haɗi zuwa tsohon master.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Lokacin da Patroni ya fara kan kwafi na biyu, kumburin ya fara sama amma ya kasa yin kwafi. Kuma an sami lag ɗin kwafi, wanda yayi kama da wannan. Wato duk kulliyoyin uku suna nan, amma kulli na biyu ya koma baya.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

A lokaci guda kuma, idan ka duba rajistan ayyukan da aka rubuta, za ka ga cewa kwafin ba zai iya farawa ba saboda rajistan ayyukan ciniki sun bambanta. Kuma waɗannan rajistan ayyukan ma'amala waɗanda maigidan yake bayarwa, waɗanda aka ƙayyade a cikin recovery.conf, kawai ba su dace da kumburin mu na yanzu ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma a nan na yi kuskure. Dole ne in zo in ga abin da ke cikin recovery.conf don gwada hasashe na cewa muna haɗawa da maigidan da ba daidai ba. Amma sai kawai ina fama da wannan kuma hakan bai same ni ba, ko kuma na ga kwafin ya koma baya kuma za a sake cikawa, wato na yi aiki da rashin kulawa. Wannan shine haɗin gwiwa na.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Bayan mintuna 30, admin ya riga ya zo, watau na sake kunna Patroni akan kwafin. Na riga na kawo karshensa, na yi tunanin za a sake cikawa. Kuma na yi tunani - Zan sake farawa Patroni, watakila wani abu mai kyau zai juya. An fara farfadowa. Kuma tushe har ma ya buɗe, yana shirye don karɓar haɗi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

An fara maimaitawa. Amma bayan minti daya, ta fadi da kuskuren cewa ma'amaloli ba su dace da ita ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Ina tsammanin zan sake farawa. Na sake kunna Patroni, kuma ban sake kunna Postgres ba, amma na sake kunna Patroni da fatan zai fara bayanan da sihiri.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kwafiwar ta sake farawa, amma alamun da ke cikin log ɗin ma'amala sun bambanta, ba su kasance iri ɗaya da ƙoƙarin farawa na baya ba. Maimaitawa ya sake tsayawa. Kuma sakon ya riga ya ɗan bambanta. Kuma bai ba ni cikakken bayani ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma sai ya faru a gare ni - menene idan na sake kunna Postgres, a wannan lokacin na sanya wurin bincike a kan maigidan na yanzu don matsar da batu a cikin ma'amalar shiga gaba kadan don dawo da farawa daga wani lokaci? Bugu da ƙari, har yanzu muna da hannun jari na WAL.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Na sake kunna Patroni, na yi wuraren bincike guda biyu a kan maigidan, maki biyu na sake farawa akan kwafi lokacin da ya buɗe. Kuma ya taimaka. Na dade ina tunanin dalilin da yasa ya taimaka da kuma yadda yake aiki. Kuma kwafi ya fara. Kuma maimaitawa ba ta ƙara tsage ba.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Irin wannan matsala a gare ni ita ce daya daga cikin mafi ban mamaki, wanda har yanzu ina mamakin ainihin abin da ya faru a can.

Menene abubuwan da ke faruwa a nan? Patroni na iya aiki kamar yadda aka yi niyya kuma ba tare da kurakurai ba. Amma a lokaci guda, wannan ba garantin 100% bane cewa komai yana da kyau tare da mu. Kwafi zai iya farawa, amma yana iya kasancewa a cikin yanayin aiki na rabin lokaci, kuma aikace-aikacen ba zai iya aiki tare da irin wannan kwafin ba, saboda za a sami tsofaffin bayanai.

Kuma bayan mai yin fayil ɗin, koyaushe kuna buƙatar bincika cewa komai yana cikin tsari tare da cluster, wato, akwai adadin da ake buƙata na kwafi, babu raguwar kwafi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Kuma yayin da muke cikin waɗannan batutuwa, zan ba da shawarwari. Na yi ƙoƙarin haɗa su zuwa nunin faifai biyu. Wataƙila, duk labarun za a iya haɗa su zuwa nunin faifai guda biyu kuma kawai a faɗi.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Lokacin da kake amfani da Patroni, dole ne ka sami kulawa. Ya kamata ku sani koyaushe lokacin da autofileover ya faru, domin idan ba ku san kuna da autofileover ba, ba ku da iko akan gungu. Kuma wannan ba shi da kyau.

Bayan kowane mai fayil, koyaushe dole ne mu bincika gungu da hannu. Muna buƙatar tabbatar da cewa koyaushe muna da adadin kwafi na yau da kullun, babu raguwar maimaitawa, babu kurakurai a cikin rajistan ayyukan da ke da alaƙa da kwafin kwafi, tare da Patroni, tare da tsarin DCS.

Automation na iya aiki cikin nasara, Patroni kayan aiki ne mai kyau sosai. Zai iya aiki, amma wannan ba zai kawo gungu zuwa yanayin da ake so ba. Kuma idan ba mu gano ba, za mu shiga cikin matsala.

Kuma Patroni ba harsashi na azurfa ba ne. Har yanzu muna buƙatar fahimtar yadda Postgres ke aiki, yadda kwafi ke aiki da yadda Patroni ke aiki tare da Postgres, da kuma yadda ake samar da sadarwa tsakanin nodes. Wannan wajibi ne don samun damar gyara matsalolin da hannunka.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Ta yaya zan tunkari batun ganewar asali? Ya faru da cewa muna aiki tare da abokan ciniki daban-daban kuma babu wanda ke da tarin ELK, kuma dole ne mu warware rajistan ayyukan ta buɗe 6 consoles da shafuka 2. A cikin ɗaya shafin, waɗannan su ne rajistan ayyukan Patroni na kowane kumburi, a cikin ɗayan shafin, waɗannan su ne log ɗin Consul, ko Postgres idan ya cancanta. Yana da matukar wahala a gano wannan.

Wadanne hanyoyi na ɓullo da? Na farko, koyaushe ina duba lokacin da mai fayil ya iso. Kuma a gare ni wannan magudanar ruwa ce. Ina kallon abin da ya faru a gaban mai fayil, lokacin mai fayil da kuma bayan mai fayil. Fayil ɗin yana da alamomi biyu: wannan shine farkon lokaci da lokacin ƙarshe.

Na gaba, Ina duba cikin rajistan ayyukan abubuwan da suka faru a gaban mai fayil, wanda ya rigaya ya wuce mai fayil, watau Ina neman dalilan da yasa mai fayil ɗin ya faru.

Kuma wannan yana ba da hoton fahimtar abin da ya faru da abin da za a iya yi a nan gaba don kada irin wannan yanayi ya faru (kuma a sakamakon haka, babu mai sarrafa fayil).

Kuma ina muke yawan kallo? ina duba:

  • Na farko, zuwa ga rajistan ayyukan Patroni.
  • Na gaba, Ina duban rajistan ayyukan Postgres, ko rajistan ayyukan DCS, dangane da abin da aka samo a cikin rajistan ayyukan Patroni.
  • Kuma tsarin rajistan ayyukan ma wani lokacin yana ba da fahimtar abin da ya haifar da mai fayil ɗin.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Yaya nake ji game da Patroni? Ina da kyakkyawar dangantaka da Patroni. A ganina, wannan shine mafi kyawun akwai a yau. Na san wasu samfuran da yawa. Waɗannan su ne Stolon, Repmgr, Pg_auto_failover, PAF. 4 kayan aiki. Na gwada su duka. Patroni shine abin da na fi so.

Idan sun tambaye ni: "Shin ina ba da shawarar Patroni?". Zan ce eh, saboda ina son Patroni. Kuma ina tsammanin na koyi yadda ake dafa shi.

Idan kuna sha'awar ganin irin matsalolin da ke tattare da Patroni baya ga matsalolin da na ambata, koyaushe kuna iya duba shafin. al'amurran da suka shafi ku GitHub. Akwai labarai daban-daban kuma an tattauna batutuwa masu ban sha'awa da yawa a wurin. Kuma a sakamakon haka, an gabatar da wasu kurakurai kuma an warware su, wato, wannan karatu ne mai ban sha'awa.

Akwai labarai masu ban sha'awa game da yadda mutane ke harbin kansu a ƙafa. Mai ba da labari sosai. Kuna karanta kuma ku fahimci cewa ba lallai ba ne yin hakan. Na tabe kaina.

Kuma ina so in ce babban godiya ga Zalando don bunkasa wannan aikin, wato Alexander Kukushkin da Alexey Klyukin. Aleksey Klyukin yana ɗaya daga cikin mawallafa, ba ya aiki a Zalando, amma waɗannan mutane biyu ne da suka fara aiki tare da wannan samfurin.

Kuma ina tsammanin Patroni abu ne mai sanyi sosai. Na yi farin ciki da kasancewar ta, yana da ban sha'awa tare da ita. Kuma babban godiya ga duk masu ba da gudummawa da suka rubuta faci zuwa Patroni. Ina fatan Patroni zai zama mafi girma, sanyi da inganci tare da shekaru. Ya riga yana aiki, amma ina fatan zai fi kyau. Saboda haka, idan kun shirya yin amfani da Patroni, to, kada ku ji tsoro. Wannan mafita ce mai kyau, ana iya aiwatarwa da amfani da ita.

Shi ke nan. Idan kuna da tambayoyi, tambaya.

Labarun gazawar Patroni ko Yadda ake lalata tarin ku na PostgreSQL. Alexei Lesovsky

Tambayoyi

Na gode da rahoton! Idan bayan mai fayil har yanzu kuna buƙatar duba wurin sosai a hankali, to me yasa muke buƙatar fayil ɗin atomatik?

Domin sabon abu ne. Mun yi shekara guda da ita. Gara a zauna lafiya. Muna so mu shigo mu ga cewa komai ya yi daidai yadda ya kamata. Wannan shine matakin rashin amincewa da manya - yana da kyau a duba sau biyu kuma ku gani.

Misali, mun je da safe muka duba, ko?

Ba da safe ba, yawanci muna koya game da autofile kusan nan da nan. Muna karɓar sanarwa, mun ga cewa fayil ɗin auto ya faru. Kusan nan da nan mu je mu duba. Amma duk waɗannan cak ɗin yakamata a kai su matakin sa ido. Idan kun sami damar Patroni ta hanyar API REST, akwai tarihi. Ta tarihi zaku iya ganin tambura lokacin da mai fayil ɗin ya faru. Dangane da wannan, ana iya sanya idanu. Kuna iya ganin tarihi, nawa abubuwan da suka faru a can. Idan muna da ƙarin abubuwan da suka faru, to an sami autofile. Kuna iya zuwa ku gani. Ko kuma aikin sa ido na mu ya bincika cewa muna da duk kwafi a wurin, babu lauyi kuma komai yana da kyau.

Na gode!

Na gode da yawa don babban labari! Idan muka matsar da gungu na DCS wani wuri mai nisa da gungun Postgres, to wannan gungu kuma yana buƙatar a yi masa hidima lokaci-lokaci? Menene mafi kyawun ayyuka waɗanda wasu guntu na gungu na DCS ke buƙatar kashe, wani abu da za a yi da su, da sauransu? Ta yaya wannan tsarin duka ya tsira? Kuma yaya kuke yin waɗannan abubuwa?

Ga kamfani ɗaya, ya zama dole don yin matrix na matsalolin, abin da zai faru idan ɗaya daga cikin abubuwan da aka gyara ko abubuwa da yawa sun gaza. Dangane da wannan matrix, muna bibiyar duk abubuwan da aka gyara kuma muna gina yanayi idan aka sami gazawar waɗannan abubuwan. Saboda haka, ga kowane yanayin rashin nasara, zaku iya samun tsarin aiki don murmurewa. Kuma a cikin yanayin DCS, ya zo a matsayin wani ɓangare na daidaitattun abubuwan more rayuwa. Kuma admin ne ke gudanar da shi, kuma mun riga mun dogara ga admins da suke gudanar da shi da kuma iya gyara shi idan ya faru. Idan babu DCS kwata-kwata, to muna tura shi, amma a lokaci guda ba mu saka idanu ba musamman, saboda ba mu da alhakin abubuwan more rayuwa, amma muna ba da shawarwari kan yadda za a saka idanu.

Wato, shin na fahimci daidai cewa ina buƙatar kashe Patroni, musaki mai fayil ɗin, kashe komai kafin yin wani abu tare da runduna?

Ya dogara da nodes ɗin da muke da su a cikin gungu na DCS. Idan akwai nodes da yawa kuma idan muka kashe ɗaya kawai daga cikin nodes (kwafin), to tarin yana kiyaye adadin ƙima. Kuma Patroni ya ci gaba da aiki. Kuma babu abin da ya jawo. Idan muna da wasu hadaddun ayyuka waɗanda ke shafar ƙarin nodes, waɗanda rashin su na iya lalata ƙungiyar ƙira, to - a, yana iya zama ma'ana a sanya Patroni a kan dakatarwa. Yana da madaidaicin umarni - patronictl pause, patronictl resume. Mun dakata kawai kuma autofiler ba ya aiki a lokacin. Muna yin gyare-gyare akan gungu na DCS, sannan mu cire dakatarwa kuma mu ci gaba da rayuwa.

Na gode sosai!

Na gode kwarai da rahoton ku! Yaya ƙungiyar samfurin ke ji game da asarar bayanai?

Ƙungiyoyin samfuran ba su damu ba, kuma jagororin ƙungiyar suna damuwa.

Wane garanti akwai?

Garanti suna da wahala sosai. Alexander Kukushkin yana da rahoto "Yadda za a lissafta RPO da RTO", watau lokacin dawowa da kuma yawan bayanan da za mu iya rasa. Ina ganin muna bukatar mu nemo wadannan nunin faifai mu yi nazarin su. Kamar yadda na tuna, akwai takamaiman matakai kan yadda ake lissafin waɗannan abubuwa. Nawa ma'amaloli za mu iya rasa, nawa bayanai za mu iya rasa. A matsayin zaɓi, za mu iya amfani da kwafi na aiki tare a matakin Patroni, amma wannan takobi ne mai kaifi biyu: ko dai muna da amincin bayanai, ko kuma mu rasa gudu. Akwai kwafi na aiki tare, amma kuma baya bada garantin kariya 100% daga asarar bayanai.

Alexey, na gode da babban rahoton! Ko akwai gogewa ta amfani da Patroni don kariyar matakin sifili? Wato, tare da haɗin gwiwa tare da jiran aiki aiki tare? Wannan ita ce tambaya ta farko. Da tambaya ta biyu. Kun yi amfani da mafita daban-daban. Mun yi amfani da Repmgr, amma ba tare da autofiler ba, kuma yanzu muna shirin haɗawa da autofiler. Kuma muna la'akari da Patroni a matsayin madadin mafita. Menene zaku iya faɗi azaman fa'idodi idan aka kwatanta da Repmgr?

Tambaya ta farko game da kwafi masu aiki tare. Babu wanda ke amfani da kwafin aiki tare a nan, saboda kowa yana jin tsoro (da yawa abokan ciniki sun riga sun yi amfani da shi, bisa ƙa'ida, ba su lura da matsalolin aiki ba - Bayanin mai magana). Amma mun ƙirƙira ka'ida don kanmu cewa yakamata a sami aƙalla nodes guda uku a cikin gungu mai daidaitawa, saboda idan muna da nodes biyu kuma idan maigidan ko kwafi ya kasa, to Patroni ya canza wannan kumburin zuwa yanayin Standalone don aikace-aikacen ya ci gaba. aiki. A wannan yanayin, akwai haɗarin asarar bayanai.

Game da tambaya ta biyu, mun yi amfani da Repmgr kuma har yanzu muna yin tare da wasu abokan ciniki don dalilai na tarihi. Me za a iya cewa? Patroni ya zo tare da autofiler daga cikin akwatin, Repmgr ya zo tare da autofiler azaman ƙarin fasalin da ke buƙatar kunnawa. Muna buƙatar gudanar da Repmgr daemon akan kowane kumburi sannan zamu iya saita autofiler.

Repmgr yana bincika idan nodes na Postgres suna raye. Ayyukan Repmgr suna bincika kasancewar juna, wannan ba hanya ce mai inganci ba. za a iya samun hadaddun lokuta na keɓewar cibiyar sadarwa wanda babban gungu na Repmgr zai iya faɗuwa cikin ƙananan ƙananan kuma ya ci gaba da aiki. Ban dade ina bin Repmgr ba, watakila an gyara shi ... ko watakila a'a. Amma kawar da bayanai game da yanayin gungu a cikin DCS, kamar yadda Stolon, Patroni ke yi, shine mafi kyawun zaɓi.

Alexey, ina da tambaya, watakila gurguwa ce. A cikin ɗaya daga cikin misalan farko, kun matsar da DCS daga injin gida zuwa mai masaukin nesa. Mun fahimci cewa hanyar sadarwa wani abu ne da yake da halayensa, yana rayuwa da kansa. Kuma me zai faru idan saboda wasu dalilai ba a samu gungu na DCS ba? Ba zan faɗi dalilan ba, za a iya samun da yawa daga cikinsu: daga karkatattun hannayen masu amfani da hanyar sadarwa zuwa matsaloli na gaske.

Ban fade shi da babbar murya ba, amma har ila yau cluster DCS dole ne ya gaza, watau madaidaicin adadin nodes ne, domin a samu cikar qurum. Me zai faru idan gungu na DCS ya zama babu, ko kuma ba za a iya cika adadin adadin ba, watau wani nau'in tsagawar hanyar sadarwa ko gazawar kumburi? A wannan yanayin, gungu na Patroni yana shiga cikin yanayin karantawa kawai. Ƙungiyar Patroni ba za ta iya ƙayyade yanayin gungu da abin da za a yi ba. Ba zai iya tuntuɓar DCS da adana sabon jihar gungu a wurin ba, don haka duk gungu yana shiga cikin karantawa kawai. Kuma yana jira ko dai don sa baki daga mai aiki ko don DCS ya murmure.

Kusan magana, DCS ya zama sabis a gare mu mai mahimmanci kamar tushe da kanta?

Na iya. A cikin kamfanoni na zamani da yawa, Gano Sabis wani ɓangare ne na abubuwan more rayuwa. Ana aiwatar da shi tun ma kafin a sami ma'ajin bayanai a cikin abubuwan more rayuwa. Dangane da magana, an ƙaddamar da abubuwan more rayuwa, an tura su a cikin DC, kuma nan da nan muna samun Gano Sabis. Idan Consul ne, to ana iya gina DNS akansa. Idan wannan shine Etcd, to ana iya samun sashi daga gungu na Kubernetes, wanda za'a tura duk wani abu. Ga alama a gare ni cewa Binciken Sabis ya riga ya zama wani muhimmin sashi na abubuwan more rayuwa na zamani. Kuma suna tunani game da shi a baya fiye da game da bayanan bayanai.

Na gode!

source: www.habr.com

Add a comment