Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ebumnuche bụ isi nke Patroni bụ ịnye nnweta dị elu maka PostgreSQL. Ma Patroni bụ naanị ihe ndebiri, ọ bụghị ngwá ọrụ dị njikere (nke, n'ozuzu, a na-ekwu na akwụkwọ). N'ileghachi anya na mbụ, ebe ịtọlitela Patroni na ụlọ nyocha, ị nwere ike ịhụ nnukwu ngwá ọrụ ọ bụ na otú ọ dị mfe ọ na-esi edozi mgbalị anyị iji mebie ụyọkọ ahụ. Otú ọ dị, na omume, na ebe mmepụta ihe, ihe niile anaghị eme mgbe niile dị ka ihe mara mma na nke mara mma dị ka ụlọ nyocha.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Aga m agwa gị ntakịrị gbasara onwe m. Amalitere m dị ka onye nchịkwa sistemụ. Na-arụ ọrụ na mmepe weebụ. Anọ m na-arụ ọrụ na Data Egret kemgbe 2014. Ụlọ ọrụ ahụ na-etinye aka na nyocha na ngalaba nke Postgres. Anyị na-ejekwa ozi ozugbo Postgres, anyị na Postgres na-arụkwa ọrụ kwa ụbọchị, yabụ anyị nwere nka dị iche iche metụtara ọrụ ahụ.

Na njedebe nke 2018, anyị malitere iji nwayọọ nwayọọ na-eji Patroni. Ewekọtawokwa ahụmahụ ụfọdụ. Anyị n'ụzọ ụfọdụ achọpụtara ya, na-ege ntị ya, bịa na anyị kacha omume. Na akụkọ a, m ga-ekwu maka ha.

Ewezuga Postgres, ahụrụ m Linux n'anya. Ọ na-amasị m ịgbagharị gburugburu na ya wee nyochaa, ọ na-amasị m ịnakọta cores. Enwere m mmasị n'anya, arịa, docker, Kubernetes. Ihe a niile masịrị m, n'ihi na omume admin ochie na-emetụta. Ọ na-amasị m ịnagide nleba anya. Na m hụrụ n'anya postgres ihe metụtara nchịkwa, i.e. replication, ndabere. Na n'oge ohere m, m na-ede na Go. Abụghị m onye injinia sọftụwia, naanị m na-edere onwe m na Go. Ọ na-emekwa m obi ụtọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

  • Echere m na ọtụtụ n'ime unu maara na Postgres enweghị HA (Nnweta dị elu) na igbe. Iji nweta HA, ịkwesịrị ịwụnye ihe, hazie ya, mee mgbalị ma nweta ya.
  • Enwere ọtụtụ ngwaọrụ na Patroni bụ otu n'ime ha na-edozi HA mara mma nke ọma na nke ọma. Ma site n'itinye ya niile n'ime ụlọ nyocha ma na-agba ọsọ ya, anyị nwere ike ịhụ na ọ niile na-arụ ọrụ, anyị nwere ike ịmaliteghachi ụfọdụ nsogbu, lee otú Patroni si ejere ha ozi. Na anyị ga-ahụ na ọ niile na-arụ ọrụ nke ukwuu.
  • Ma na omume, anyị chere nsogbu dị iche iche ihu. M ga-ekwukwa banyere nsogbu ndị a.
  • Aga m agwa gị ka anyị si chọpụta ya, ihe anyị tweaked - ma ọ nyeere anyị aka ma ọ bụ na ọ bụghị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

  • Agaghị m agwa gị otu esi etinye Patroni, n'ihi na ị nwere ike google na ịntanetị, ị nwere ike lelee faịlụ nhazi iji ghọta otú ọ na-esi ebido, otu esi ahazi ya. Ị nwere ike ịghọta atụmatụ, architectures, ịchọta ozi gbasara ya na Ịntanetị.
  • Agaghị m ekwu banyere ahụmahụ onye ọzọ. M ga-ekwu naanị banyere nsogbu ndị anyị chere ihu.
  • Agaghị m ekwu maka nsogbu ndị dị na mpụga Patroni na PostgreSQL. Ọ bụrụ na, dịka ọmụmaatụ, enwere nsogbu metụtara nguzozi, mgbe ụyọkọ anyị daa, agaghị m ekwu maka ya.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na obere nkwupụta tupu anyị amalite akụkọ anyị.

Nsogbu ndị a niile anyị zutere, anyị nwere ha na ọnwa 6-7-8 mbụ nke ọrụ. Ka oge na-aga, anyị bịara na omume kacha mma nke ime anyị. Nsogbu anyị na-apụkwa. Ya mere, a mara ọkwa akụkọ ahụ ihe dị ka ọnwa isii gara aga, mgbe ọ dị ọhụrụ n'isi m ma echetara m ya niile nke ọma.

Na N'ezie nke na-akwadebe akụkọ, m ebuliwo ochie postmortems, anya na ndekọ. Na ụfọdụ nkọwa nwere ike chefuo, ma ọ bụ ụfọdụ n'ime nkọwa ụfọdụ enweghị ike nyochaa nke ọma n'oge nyocha nke nsogbu ndị ahụ, ya mere, n'oge ụfọdụ, ọ nwere ike iyi ka a naghị atụle nsogbu ahụ nke ọma, ma ọ bụ enweghị ozi. Ya mere a na m arịọ gị ka ị gbaghara m oge a.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Kedu ihe bụ Patroni?

  • Nke a bụ ndebiri maka iwuli HA. Nke ahụ bụ ihe ọ na-ekwu na akwụkwọ. Sitekwa n'echiche nke m, nke a bụ nkọwa zuru oke. Patroni abụghị mgbọ ọlaọcha nke ga-edozi nsogbu gị niile, ya bụ, ịkwesịrị ime mgbalị iji mee ka ọ rụọ ọrụ ma weta uru.
  • Nke a bụ ọrụ nnọchite arụnyere na ọrụ nchekwa data ọ bụla yana ụdị sistemụ init maka Postgres gị. Ọ na-amalite Postgres, kwụsị, malitegharịa, hazie ma gbanwee topology nke ụyọkọ gị.
  • N'ihi ya, iji chekwaa ọnọdụ nke ụyọkọ ahụ, ihe nnọchianya ya ugbu a, dị ka ọ dị, a chọrọ ụdị nchekwa ụfọdụ. Na site n'echiche a, Patroni weere ụzọ nke ịchekwa ala na usoro mpụga. Ọ bụ usoro nchekwa nhazi nkesa. Ọ nwere ike ịbụ Etcd, Consul, ZooKeeper, ma ọ bụ kubernetes Etcd, ya bụ otu n'ime nhọrọ ndị a.
  • Otu n'ime njirimara Patroni bụ na ị ga-enweta autofiler na igbe ahụ, naanị site na ịtọlite ​​​​ya. Ọ bụrụ na anyị ewere Repmgr maka ntụnyere, mgbe ahụ, a na-etinye faịlụ ahụ n'ebe ahụ. Na Repmgr, anyị na-enweta mgbanwe, ma ọ bụrụ na anyị chọrọ autofiler, mgbe ahụ anyị kwesịrị hazie ya ọzọ. Patroni enweelarị ihe ngwa ngwa n'ime igbe ahụ.
  • E nwekwara ọtụtụ ihe ndị ọzọ. Dịka ọmụmaatụ, mmezi nke nhazi, ịwụsa nsụgharị ọhụrụ, ndabere, wdg. Ma nke a karịrị njedebe nke akụkọ ahụ, agaghị m ekwu maka ya.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na obere nsonaazụ bụ na isi ọrụ Patroni bụ ime autofile nke ọma na ntụkwasị obi ka ụyọkọ anyị wee nọgide na-arụ ọrụ yana ngwa ahụ anaghị achọpụta mgbanwe na topology ụyọkọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma mgbe anyị malitere iji Patroni, usoro anyị na-enwekwu mgbagwoju anya. Ọ bụrụ na mbụ anyị nwere Postgres, mgbe ahụ mgbe anyị na-eji Patroni anyị na-enweta Patroni n'onwe ya, anyị na-enweta DCS ebe echekwara steeti. Na ihe niile ga-arụ ọrụ n'ụzọ ụfọdụ. Yabụ kedu ihe nwere ike ịgahie?

Enwere ike ịgbaji:

  • Postgres nwere ike imebi. Ọ nwere ike ịbụ nna ukwu ma ọ bụ oyiri, otu n'ime ha nwere ike ịda.
  • Patroni n'onwe ya nwere ike imebi.
  • DCS ebe echekwara steeti nwere ike imebi.
  • Na netwọk nwere ike imebi.

Isi ihe ndị a niile ka m ga-atụle na akụkọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

M ga-atụle ikpe ka ha na-adịwanye mgbagwoju anya, ọ bụghị site n'echiche na ikpe ahụ gụnyere ọtụtụ ihe. Na site n'echiche nke mmetụta uche, na ikpe a siri m ike, ọ na-esiri m ike ịkwasa ya ... na ọzọ, ụfọdụ ikpe dị mfe ma dị mfe ịkwasa ya.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na ikpe mbụ bụ nke kachasị mfe. Nke a bụ ikpe mgbe anyị were ụyọkọ nchekwa data wee tinye ebe nchekwa DCS anyị n'otu ụyọkọ ahụ. Nke a bụ mmejọ kachasị. Nke a bụ mmejọ na-ewu ụlọ, ya bụ, ijikọta ihe dị iche iche n'otu ebe.

Ya mere, enwere onye na-ebu faịlụ, ka anyị gaa na-eme ihe merenụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na ebe a anyị nwere mmasị na mgbe filer mere. Ya bụ, anyị nwere mmasị n'oge a n'oge ụyọkọ steeti gbanwere.

Mana onye na-ebu faịlụ anaghị adị ngwa ngwa, yabụ na ọ naghị ewe oge ọ bụla, enwere ike igbu oge. Ọ nwere ike ịdịte aka.

Ya mere, ọ nwere mmalite oge na oge ọgwụgwụ, ya bụ, ọ bụ ihe omume na-aga n'ihu. Ma anyị na-ekewa ihe omume niile n'ime oge atọ: anyị nwere oge n'ihu onye na-eme ihe, n'oge faịlụ na mgbe onye na-eme ihe. Ya bụ, anyị na-atụle ihe omume niile na usoro iheomume a.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na nke mbụ, mgbe onye faịlụ mere, anyị na-achọ ihe kpatara ihe merenụ, gịnị kpatara ihe kpatara onye ahụ.

Ọ bụrụ na anyị leba anya na ndekọ, ha ga-abụ ihe ndekọ Patroni kpochapụwo. Ọ na-agwa anyị n'ime ha na ihe nkesa aghọwo nna ukwu, na ọrụ nke nna ukwu gafere a ọnụ. Ebe a ka ọ pụta ìhè.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na-esote, anyị kwesịrị ịghọta ihe kpatara onye faịlụ ahụ ji mee, ya bụ ihe ndị mere na-eme ka ọrụ nna ukwu si n'otu ọnụ gaa na nke ọzọ. Na na nke a, ihe niile dị mfe. Anyị nwere mperi n'imekọrịta usoro nchekwa. Nna-ukwu ahụ ghọtara na ya enweghị ike ịrụ ọrụ na DCS, ya bụ, enwere ụdị nsogbu na mmekọrịta ahụ. Ọ na-ekwukwa na ya apụghịzi ịbụ nna ukwu ma gbaa arụkwaghịm. Ahịrị a "demoteed self" na-ekwu kpọmkwem nke ahụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ọ bụrụ na anyị leba anya n'ihe ndị bu ụzọ onye faịlụ ahụ, anyị nwere ike ịhụ ebe ahụ ihe kpatara nsogbu ahụ ji gaa n'ihu ọkachamara.

Ọ bụrụ na anyị eleba anya na ndekọ Patroni, anyị ga-ahụ na anyị nwere ọtụtụ njehie, oge nkwụsị, ya bụ onye ọrụ Patroni enweghị ike ịrụ ọrụ na DCS. N'okwu a, nke a bụ onye nnọchi anya Consul, nke na-ekwurịta okwu na ọdụ ụgbọ mmiri 8500.

Na nsogbu ebe a bụ na Patroni na nchekwa data na-agba ọsọ na otu onye ọbịa. Na sava ndị Consul ka ewepụtara n'otu ọnụ ọnụ. Site na ịmepụta ibu na ihe nkesa, anyị mepụtara nsogbu maka sava Consul. Ha enweghị ike ịkparịta ụka nke ọma.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Mgbe oge ụfọdụ gachara, mgbe ibu ahụ kwụsịrị, Patroni anyị nwere ike ịkọrọ ndị ọrụ ozi ọzọ. A maliteghachiri ọrụ nkịtị. Na otu ihe nkesa Pgdb-2 ahụ ghọrọ nna ukwu ọzọ. Ya bụ, e nwere obere ntụgharị, n'ihi nke ọnụ na-ahapụ ikike nke nna ukwu ahụ, wee weghara ha ọzọ, ya bụ, ihe niile laghachiri dị ka ọ dị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na nke a nwere ike na-ewere dị ka ụgha mkpu, ma ọ bụ nwere ike na-ewere na Patroni mere ihe niile ziri ezi. Ya bụ, ọ chọpụtara na ya apụghị ijide ọnọdụ nke ụyọkọ ahụ wee wepụ ikike ya.

Na ebe a nsogbu bilitere n'ihi eziokwu na ndị Consul sava dị na otu ngwaike dị ka bases. N'ihi ya, ibu ọ bụla: ma ọ bụ ibu na diski ma ọ bụ ndị nhazi, ọ na-emetụtakwa mmekọrịta ya na ụyọkọ Consul.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma anyị kpebiri na ọ gaghị ebi ọnụ, anyị ekenye a iche iche ụyọkọ maka Consul. Na Patroni na-arụ ọrụ na onye Consul dị iche, ya bụ, enwere ụyọkọ Postgres dị iche, ụyọkọ Consul dị iche. Nke a bụ ntụziaka bụ isi maka otu esi ebu ma debe ihe ndị a niile ka ọ ghara ibikọ ọnụ.

Dị ka nhọrọ, ị nwere ike igbanwe paramita ttl, loop_wait, retry_timeout, ya bụ, gbalịa ịlanarị ọnụ ọgụgụ kasị elu nke obere oge ndị a site n'ịbawanye paramita ndị a. Ma nke a abụghị nhọrọ kachasị mma, n'ihi na ibu a nwere ike ịdị ogologo oge. Na anyị ga-nnọọ gafere ndị a ókè nke ndị a parameters. Ma nke ahụ nwere ike ọ gaghị enyere gị aka.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Nsogbu mbụ, dị ka ị ghọtara, dị mfe. Anyị weere ma tinye DCS ọnụ na isi, anyị nwere nsogbu.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Nsogbu nke abụọ yiri nke mbụ. Ọ dị otu a na anyị nwekwara nsogbu mmekọrịta na sistemụ DCS ọzọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ọ bụrụ na anyị leba anya na ndekọ, anyị ga-ahụ na anyị nwere njehie nzikọrịta ozi ọzọ. Na Patroni na-ekwu na enweghị m ike ịmekọrịta na DCS ka onye nwe ugbu a banye n'ụdị oyiri.

Nna ukwu ochie na-aghọ oyiri, ebe a Patroni na-arụ ọrụ, dịka o kwesịrị ịdị. Ọ na-agba pg_rewind iji weghachi ndekọ azụmahịa wee jikọọ na nna ukwu ọhụrụ iji nweta nna ukwu ọhụrụ. Ebe Patroni na-arụ ọrụ, dị ka o kwesịrị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'ebe a, anyị ga-achọta ebe dị n'ihu onye faịlụ ahụ, ya bụ njehie ndị ahụ mere ka anyị nwee faịlụ. Na nke a, Patroni ndekọ na-adaba adaba na-arụ ọrụ na. Ọ na-ede otu ozi ahụ n'otu oge. Ma ọ bụrụ na anyị amalite ịpịgharịa na ndekọ ndị a ngwa ngwa, mgbe ahụ, anyị ga-ahụ site na ndekọ na ndekọ ahụ gbanwere, nke pụtara na nsogbu ụfọdụ amalitela. Anyị na-alaghachi ebe a ngwa ngwa, hụ ihe na-eme.

Na n'ọnọdụ nkịtị, ndekọ na-ele ihe dị ka nke a. A na-enyocha onye nwe mkpọchi ahụ. Ma ọ bụrụ na onye nwe ya, dịka ọmụmaatụ, agbanweela, mgbe ahụ, ụfọdụ ihe omume nwere ike ime na Patroni ga-azaghachi. Ma na nke a, anyị dị mma. Anyị na-achọ ebe njehie malitere.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na pịgharịa gaa n'ókè ebe njehie ahụ malitere ịpụta, anyị na-ahụ na anyị enweela faịlụ nke akpaaka. Ma ebe ọ bụ na njehie anyị metụtara mmekọrịta anyị na DCS na n'ọnọdụ anyị, anyị na-eji Consul, anyị na-elekwa akwụkwọ ndekọ Consul, ihe mere ebe ahụ.

N'ịtụle oge nke onye faịlụ na oge dị na ndekọ Consul, anyị na-ahụ na ndị agbata obi anyị nọ na ụyọkọ Consul malitere inwe obi abụọ banyere ịdị adị nke ndị ọzọ so na ụyọkọ Consul.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma ọ bụrụ na ị lelee ndekọ ndekọ nke ndị ọrụ Consul ndị ọzọ, ị nwekwara ike ịhụ na enwere ụdị ndakpọ netwọkụ na-aga ebe ahụ. Na ndị niile so na Consul ụyọkọ na-enwe obi abụọ na ibe ha dị. Na nke a bụ mkpali maka onye na-ede akwụkwọ.

Ọ bụrụ na i leba anya n'ihe mere tupu mmejọ ndị a, ị ga-ahụ na e nwere ụdị njehie niile, dịka ọmụmaatụ, njedebe, RPC dara, ya bụ, e nwere n'ụzọ doro anya ụdị nsogbu dị na mmekọrịta nke ndị òtù Consul Consul na ibe ha. .

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Azịza kachasị mfe bụ ịrụkwa netwọkụ. Mana maka m, iguzo na podium, ọ dị mfe ikwu nke a. Mana ọnọdụ ndị dị otú ahụ na ọ bụghị mgbe niile ka onye ahịa nwere ike imezigharị netwọkụ ahụ. O nwere ike ibi na DC ma ọ gaghị enwe ike ịrụkwa netwọkụ, na-emetụta akụrụngwa. Ya mere a chọrọ ụfọdụ nhọrọ ndị ọzọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Enwere nhọrọ:

  • Nhọrọ kachasị mfe, nke edere, n'echiche m, ọbụna na akwụkwọ ahụ, bụ iji gbanyụọ ndenye ego Consul, ya bụ, na-agafe ihe efu. Anyị na-agwakwa onye ọrụ Consul ka ọ ghara iji akwụkwọ ndenye ego ọ bụla. Site na nlele ndị a, anyị nwere ike ileghara oke ikuku netwọkụ ndị a anya ma ghara ibido onye na-ebufe faịlụ.
  • Nhọrọ ọzọ bụ ịlele raft_multiplier ugboro abụọ. Nke a bụ oke nke sava Consul n'onwe ya. Site na ndabara, atọrọ ya ka ọ bụrụ 5. A na-akwado uru a site na akwụkwọ maka nhazi gburugburu. N'ezie, nke a na-emetụta ugboro ole ozi n'etiti ndị otu netwọk Consul. N'ezie, oke a na-emetụta ọsọ nke nkwukọrịta ọrụ n'etiti ndị otu ụyọkọ Consul. Na maka mmepụta, a na-atụ aro ka ị belata ya ka ọnụ ọgụgụ ahụ na-agbanwe ozi ugboro ugboro.
  • Nhọrọ ọzọ anyị wepụtagoro bụ ịbawanye mkpa nke usoro Consul n'etiti usoro ndị ọzọ maka nhazi usoro sistemụ arụmọrụ. Enwere oke “mma” dị otú ahụ, ọ na-ekpebi ihe kacha mkpa nke usoro nke onye nhazi OS na-eburu n'uche mgbe ị na-ahazi usoro ihe omume. Anyị ebelatala ọmarịcha uru maka ndị ọrụ Consul, ya bụ. mụbara ihe kacha mkpa ka sistemụ arụmọrụ na-enye usoro ndị Consul oge ka ha rụọ ọrụ ma mebie koodu ha. N'ọnọdụ anyị, nke a doziri nsogbu anyị.
  • Nhọrọ ọzọ abụghị iji Consul. Enwere m enyi bụ nnukwu onye na-akwado Etcd. Anyị na ya na-arụ ụka mgbe niile nke ka mma Etcd ma ọ bụ Consul. Mana n'ihe gbasara nke ka mma, anyị na-ekwenyekarị na ya na Consul nwere onye nnọchi anya kwesịrị ịdị na-agba ọsọ na ọnụ nke ọ bụla na nchekwa data. Ya bụ, mmekọrịta nke Patroni na ụyọkọ Consul na-aga site na onye nnọchi anya a. Na onye nnọchi anya a na-aghọ ihe mgbochi. Ọ bụrụ na ihe emee onye nnọchi anya, Patroni enweghị ike ịrụkọ ọrụ na ụyọkọ Consul. Na nke a bụ nsogbu. Enweghị onye nnọchi anya na atụmatụ Etcd. Patroni nwere ike ịrụ ọrụ ozugbo na ndepụta nke sava Etcd wee soro ha kparịta ụka. N'akụkụ a, ọ bụrụ na ị na-eji Etcd na ụlọ ọrụ gị, mgbe ahụ, Etcd ga-abụ nhọrọ ka mma karịa Consul. Mana anyị na ndị ahịa anyị na-ejedebe mgbe niile site na ihe onye ahịa ahọrọla ma jiri ya mee ihe. Na anyị nwere Consul maka ọtụtụ akụkụ maka ndị ahịa niile.
  • Na njedebe ikpeazụ bụ imegharị ụkpụrụ paramita. Anyị nwere ike ibuli paramita ndị a n'olileanya na nsogbu netwọk anyị dị mkpụmkpụ ga-adị mkpụmkpụ ma ghara ịdaba n'èzí oke nke parampat ndị a. N'ụzọ dị otú a, anyị nwere ike ibelata ike ike nke Patroni na autofile ma ọ bụrụ na ụfọdụ netwọk nsogbu emee.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Echere m na ọtụtụ ndị na-eji Patroni maara iwu a.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Iwu a na-egosi ọnọdụ ụyọkọ ugbu a. Na ilele mbụ, foto a nwere ike iyi ihe nkịtị. Anyị nwere nna ukwu, anyị nwere oyiri, enweghị ngbanwe ọ bụla. Mana foto a bụ ihe kwesịrị ekwesị ruo mgbe anyị matara na ụyọkọ a kwesịrị inwe ọnụ atọ, ọ bụghị abụọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'ihi ya, e nwere autofile. Ma mgbe a autofile, anyị oyiri okụrede. Anyị kwesịrị ịchọpụta ihe mere o ji pụọ ​​na-eweghachi ya, weghachi ya. Ma anyị na-aga ọzọ na ndekọ na-ahụ ihe mere anyị nwere auto-fileover.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'okwu a, oyiri nke abụọ ghọrọ nna ukwu. Ọ dị mma ebe a.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị kwesịrị ileba anya n'ụdị oyiri dara na nke na-adịghị na ụyọkọ ahụ. Anyị na-emepe akwụkwọ ndekọ Patroni wee hụ na anyị nwere nsogbu n'oge usoro ijikọ na ụyọkọ ahụ na pg_rewind ogbo. Iji jikọọ na ụyọkọ ahụ, ịkwesịrị iweghachite ndekọ azụmahịa ahụ, rịọ ndekọ azụmahịa achọrọ n'aka nna ukwu, wee jiri ya nweta nna ukwu ahụ.

N'okwu a, anyị enweghị ndekọ azụmahịa na oyiri enweghị ike ịmalite. N'ihi ya, anyị na-akwụsị Postgres na njehie. Ya mere ọ dịghị na ụyọkọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị kwesịrị ịghọta ihe mere na ọ dịghị na ụyọkọ na ihe mere na-enweghị ndekọ. Anyị na-aga na nna ukwu ọhụrụ na-ele ihe o nwere na osisi. Ọ tụgharịrị na mgbe pg_rewind mere, ebe nlele mere. Na ụfọdụ n'ime ndekọ azụmahịa ochie ka e degharịrị aha. Mgbe nna ukwu ochie nwara ijikọ na nna ukwu ọhụrụ wee jụọ akwụkwọ ndekọ aha ndị a, ahaghachilarị ha aha, ha adịghị adị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Eji m akara oge tụnyere ihe ndị a mere. Ma n'ebe ahụ ihe dị iche bụ n'ezie 150 milliseconds, ya bụ, ebe a na-enyocha ya na 369 milliseconds, e degharịrị aha ngalaba WAL. Na n'ụzọ nkịtị na 517, mgbe 150 milliseconds, rewind malitere na ochie oyiri. Ya bụ, n'ụzọ nkịtị 150 milliseconds ezuru anyị nke mere na oyiri enweghị ike jikọọ na irite.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Gịnị bụ nhọrọ?

Anyị na-eji oghere mmegharị. Anyị chere na ọ dị mma. Ọ bụ ezie na na ọkwa mbụ nke ọrụ anyị gbanyụrụ oghere. Ọ dị anyị ka ọ bụrụ na oghere ndị ahụ na-akwakọba ọtụtụ akụkụ WAL, anyị nwere ike idobe nna ukwu ahụ. Ọ ga-ada. Anyị tara ahụhụ ruo oge ụfọdụ n'enweghị oghere. Ma anyị ghọtara na anyị chọrọ oghere, anyị weghachiri oghere.

Ma enwere nsogbu ebe a, na mgbe nna ukwu na-aga na oyiri, ọ na-ehichapụ oghere ma kpochapụ akụkụ WAL yana oghere. Na iji kpochapụ nsogbu a, anyị kpebiri ibuli paramita wal_keep_segments. Ọ na-adabara na ngalaba 8. Anyị buliri ya ruo 1 wee lelee ohere efu anyị nwere. Ma anyị nyere 000 gigabytes maka wal_keep_segments. Ya bụ, mgbe ị na-agbanwe, anyị na-enwe mgbe niile nchekwa nke 16 gigabytes nke ndekọ azụmahịa na ọnụ niile.

Na mgbakwunye - ọ ka dị mkpa maka ọrụ nlekọta ogologo oge. Ka anyị kwuo na anyị kwesịrị imelite otu n'ime oyiri. Anyị chọkwara ịgbanyụ ya. Anyị kwesịrị imelite ngwanro, ikekwe sistemụ arụmọrụ, ihe ọzọ. Ma mgbe anyị gbanyụrụ oyiri, a na-ewepụkwa oghere maka oyiri ahụ. Ma ọ bụrụ na anyị na-eji obere wal_keep_segments, mgbe ahụ na-enweghị ogologo oge nke oyiri, ndekọ azụmahịa ga-efunahụ. Anyị ga-ebuli otu oyiri, ọ ga-arịọ ndekọ ndekọ azụmahịa ebe ọ kwụsịrị, mana ha nwere ike ọ gaghị adị na nna ukwu. Na oyiri agaghị enwe ike ijikọ ma. Ya mere, anyị na-edobe nnukwu akwụkwọ akụkọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị nwere ntọala mmepụta. Enweelarị ọrụ na-aga n'ihu.

Enwere onye na-ebu faịlụ. Anyị banyere na-ele anya - ihe niile dị n'usoro, oyiri dị na ebe, ọ dịghị replication lag. Enweghị njehie na ndekọ ma, ihe niile dị n'usoro.

Ndị otu ngwaahịa na-ekwu na ekwesịrị inwe ụfọdụ data, mana anyị na-ahụ ya site n'otu ebe, mana anyị anaghị ahụ ya na nchekwa data. Anyị kwesịkwara ịghọta ihe mere ha.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

O doro anya na pg_rewind agbaghara ha. Anyị ghọtara nke a ozugbo, mana anyị gara ịhụ ihe na-eme.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'ime ndekọ ahụ, anyị nwere ike ịchọta mgbe niile mgbe onye faịlụ ahụ mere, onye ghọrọ nna ukwu, anyị nwekwara ike ikpebi onye bụ onye ochie ochie na mgbe ọ chọrọ ịghọ oyiri, ya bụ, anyị chọrọ ndekọ ndị a iji chọpụta ego ndekọ azụmahịa nke ahụ. furu efu.

Nna-ukwu anyị ochie ebilitela. Edebakwara Patroni aha na autorun. Ewepụtara Patroni. Ọ malitere Postgres. Kpọmkwem, tupu ịmalite Postgres na tupu ịme ya ka ọ bụrụ oyiri, Patroni malitere usoro pg_rewind. N'ihi ya, o kpochapụrụ akụkụ nke ndekọ azụmahịa, budata ndị ọhụrụ wee jikọọ. Ebe Patroni rụrụ ọrụ nke ọma, ya bụ, dị ka a tụrụ anya ya. Eweghachila ụyọkọ ahụ. Anyị nwere ọnụ ụzọ 3, mgbe onye na-agbapụta 3 nodes - ihe niile dị mma.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị atụfuola ụfọdụ data. Anyị kwesịkwara ịghọta ego ole anyị furu efu. Anyị na-achọ naanị oge mgbe anyị nwere azụghachi azụ. Anyị nwere ike ịhụ ya na ndenye akwụkwọ akụkọ. Nchigharị malitere, mee ihe n'ebe ahụ wee kwụsị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị kwesịrị ịchọta ọnọdụ na ndekọ azụmahịa ebe nna ukwu ochie kwụsịrị. N'okwu a, nke a bụ akara. Na anyị chọrọ akara nke abụọ, ya bụ, anya nke nna ukwu ochie si dị iche na nke ọhụrụ.

Anyị na-ewere pg_wal_lsn_diff na-emebu wee tulee akara abụọ a. Na nke a, anyị na-enweta 17 megabyte. Ọtụtụ ma ọ bụ ntakịrị, onye ọ bụla na-ekpebi onwe ya. N'ihi na maka mmadụ 17 megabytes abụghị nke ukwuu, maka onye ọ bụ ihe dị ukwuu na nke a na-anabataghị. N'ebe a, onye ọ bụla na-ekpebi onwe ya dịka mkpa nke azụmahịa ahụ si dị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma gịnị ka anyị chọpụtaworo n'onwe anyị?

Mbụ, anyị ga-ekpebiri onwe anyị - anyị na-mkpa mgbe niile Patroni ka autostart mgbe a usoro reboot? Ọ na-emekarị na anyị ga-agakwuru nna ukwu ochie, hụ ebe ọ gara. Ikekwe lelee akụkụ nke ndekọ azụmahịa, hụ ihe dị ebe ahụ. Na ịghọta ma anyị nwere ike idafu data a ma ọ bụ na anyị kwesịrị ịgba ọsọ nna ukwu ochie na ọnọdụ kwụ ọtọ iji dọpụta data a.

Naanị mgbe nke ahụ gasịrị, anyị ga-ekpebi ma anyị ga-atụfu data a ma ọ bụ na anyị nwere ike iweghachi ya, jikọọ ọnụ a dị ka oyiri na ụyọkọ anyị.

Na mgbakwunye, enwere oke "maximum_lag_on_failover". Site na ndabara, ọ bụrụ na ebe nchekwa m na-ejere m ozi, oke a nwere uru nke 1 megabyte.

Kedu ka ọ si arụ ọrụ? Ọ bụrụ na oyiri anyị dị n'azụ site na 1 megabyte nke data na nkwụsị mmegharị, mgbe ahụ oyiri a anaghị esonye na ntuli aka. Ma ọ bụrụ na mberede enwere faịlụ, Patroni na-eleba anya na ụdị nke na-ada azụ. Ọ bụrụ na ha nọ n'azụ site na ọnụ ọgụgụ buru ibu nke ndekọ azụmahịa, ha enweghị ike ịghọ nna ukwu. Nke a bụ ihe nchekwa dị mma nke na-egbochi gị ịla n'iyi ọtụtụ data.

Mana enwere nsogbu n'ihi na a na-emelite mmegharị n'ime ụyọkọ Patroni na DCS n'otu oge. Echere m na 30 sekọnd bụ uru ttl ndabara.

N'ihi ya, enwere ike inwe ọnọdụ ebe enwere otu replication lag for replicas na DCS, ma n'ezie enwere ike inwe ihe dị iche iche kpamkpam ma ọ bụ enweghị ike ọ bụla, ya bụ ihe a abụghị oge. Ọ bụghịkwa mgbe niile ka ọ na-egosipụta ihe bụ́ ezigbo mmadụ. Ma ọ baghị uru ime ezi uche na ya.

Na ihe ize ndụ nke ọnwụ na-anọgide mgbe niile. Na n'ọnọdụ kachasị njọ, otu usoro, na nkezi, usoro ọzọ. Ya bụ, mgbe anyị na-eme atụmatụ mmejuputa Patroni ma nyochaa ole data anyị nwere ike ịla n'iyi, anyị ga-adabere na usoro ndị a ma chee echiche ole data anyị ga-atụfu.

E nwekwara ozi ọma. Mgbe nna ukwu ochie gara n'ihu, ọ nwere ike ịga n'ihu n'ihi ụfọdụ usoro ndabere. Ya bụ, e nwere ụdị autovacuum, o dere data ahụ, chekwaa ha na ndekọ azụmahịa. Na anyị nwere ike mfe ileghara na ida a data. Enweghị nsogbu na nke a.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma nke a bụ ka ndekọ ahụ dị ka ma ọ bụrụ na edobere oke_lag_on_failover yana onye na-eme ihe mere, yana ịkwesịrị ịhọrọ nna ukwu ọhụrụ. Ihe oyiri ahụ na-enyocha onwe ya dị ka enweghị ike isonye na ntuli aka. Ọ jụkwara isonye n'ọsọ maka onye ndu. Ọ na-eche ka a họrọ onye nwe ọhụrụ, ka o wee nwee ike jikọọ na ya. Nke a bụ ihe mgbakwunye ọzọ megide ọnwụ data.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'ebe a, anyị nwere otu ngwaahịa ndị dere na ngwaahịa ha na-enwe nsogbu na Postgres. N'otu oge ahụ, nna ukwu n'onwe ya enweghị ike ịnweta ya, n'ihi na ọ dịghị site na SSH. Na autofile anaghị eme.

A manyere onye ọbịa a ka ọ malitegharịa. N'ihi nrụgharị ahụ, faịlụ akpaaka mere, n'agbanyeghị na ọ ga-ekwe omume ịme faịlụ akpaaka, dịka m ghọtara ugbu a. Na mgbe reboot, anyị na-ama na-aga ịhụ ihe anyị nwere na ugbu a nna ukwu.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'otu oge ahụ, anyị maara na anyị nwere nsogbu na diski, ya bụ, anyị amaraworị site na nyochaa ebe anyị ga-egwu ala na ihe anyị ga-achọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị banyere na postgres log, malite ịhụ ihe na-eme ebe ahụ. Anyị hụrụ na-eme nke na-adịru ebe ahụ maka otu, abụọ, sekọnd atọ, nke na-abụghị ihe ọ bụla. Anyị hụrụ na anyị autovacuum na-amalite nke ukwuu nwayọọ na iju. Anyị hụkwara faịlụ nwa oge na diski. Ya bụ, ndị a niile bụ ihe na-egosi nsogbu na diski.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị lere anya n'ime sistemụ dmesg (log kernel). Anyị hụkwara na anyị nwere nsogbu na otu diski. Usoro diski ahụ bụ Raid software. Anyị lere anya na /proc/mdstat wee hụ na anyị na-efu otu mbanye. Ya bụ, enwere Raid nke diski 8, anyị na-efu otu. Ọ bụrụ na i jiri nlezianya lelee slide ahụ, mgbe ahụ na mmepụta ị nwere ike ịhụ na anyị enweghị sde n'ebe ahụ. N'ebe anyị nọ, na-ekwu okwu, diski ahụ apụọla. Nke a kpalitere nsogbu diski, ngwa nwekwara nsogbu mgbe ha na ụyọkọ Postgres na-arụ ọrụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na nke a, Patroni agaghị enyere anyị aka n'ụzọ ọ bụla, n'ihi na Patroni enweghị ọrụ nke nyochaa ọnọdụ nke ihe nkesa ahụ, ọnọdụ nke diski. Na anyị ga-enyocha ọnọdụ ndị dị otú ahụ site na nlekota nke mpụga. Anyị gbakwụnye ngwa ngwa nlebanya diski na nlebanya mpụga.

Ma enwere echiche dị otú ahụ - nwere ike ịgbachi agbachi ma ọ bụ sọftụwia nche ga-enyere anyị aka? Anyị chere na ọ gaghị enyere anyị aka na nke a, n'ihi na n'oge nsogbu Patroni nọgidere na-emekọrịta ihe na ụyọkọ DCS ma ọ hụghị nsogbu ọ bụla. Nke ahụ bụ, site na echiche nke DCS na Patroni, ihe niile dị mma na ụyọkọ ahụ, ọ bụ ezie na n'ezie enwere nsogbu na diski ahụ, enwere nsogbu na ịnweta nchekwa data.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'uche nke m, nke a bụ otu n'ime nsogbu kachasị njọ m nyochaworo ogologo oge, agụọla m ọtụtụ akwụkwọ ndekọ, weghachite ma kpọọ ya simulator ụyọkọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Nsogbu bụ na nna ukwu ochie enweghị ike ịghọ ihe atụ nkịtị, ya bụ Patroni malitere ya, Patroni gosipụtara na ọnụ a dị ka oyiri, ma n'otu oge ahụ ọ bụghị ihe atụ nkịtị. Ugbu a, ị ga-ahụ ihe kpatara ya. Nke a bụ ihe m debere na nyocha nke nsogbu ahụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Oleekwa otú ihe niile si malite? Ọ malitere, dị ka ọ dị na nsogbu gara aga, na brek diski. Anyị nwere nkwa maka nkeji abụọ, abụọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Enwere nkwụsịtụ na njikọ, ya bụ, ndị ahịa dọwara.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Enwere mgbochi nke ịdị njọ dị iche iche.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na, n'ihi ya, diski subsystem adịghị anabata nke ọma.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na ihe kacha omimi nye m bụ arịrịọ mmechi ozugbo bịarutere. Postgres nwere ụdị mmechi atọ:

  • Ọ na-ama mma mgbe anyị chere ka ndị ahịa niile kwụsịrị n'onwe ha.
  • Enwere ngwa ngwa mgbe anyị na-amanye ndị ahịa ka ha kwụsị njikọ n'ihi na anyị ga-emechi.
  • Na ozugbo. N'okwu a, ozugbo anaghị agwa ndị ahịa ka ha mechie, ọ na-emechi na-enweghị ịdọ aka ná ntị. Na ndị ahịa niile, sistemụ arụmọrụ ezipụlarị ozi RST (ozi TCP na njikọ ahụ kwụsịrị na onye ahịa enweghị ihe ọ bụla ọzọ ijide).

Onye zitere mgbama a? Usoro ndabere postgres anaghị ezigara ibe ha ụdị mgbaàmà ahụ, yabụ nke a bụ igbu-9. Ha anaghị ezigara ibe ha ihe ndị dị otú ahụ, ha na-emeghachi omume na ihe ndị dị otú ahụ, ya bụ nke a bụ ihe mberede ịmaliteghachi Postgres. Onye zitere ya, amaghim.

M lere anya n'iwu "ikpeazụ" wee hụ otu onye sokwa anyị banye na nkesa a, mana ọ na-eme m ihere ịjụ ajụjụ. Ikekwe e gburu -9. M ga-ahụ igbu -9 na ndekọ, n'ihi na Postgres na-ekwu na ọ were igbu -9, mana ahụghị m ya na ndekọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'ileghachi anya n'ihu, ahụrụ m na Patroni edeghị ndekọ ahụ ogologo oge - 54 sekọnd. Ma ọ bụrụ na anyị atụnyere stampụ ugboro abụọ, enweghị ozi maka ihe dịka sekọn 54.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na n'oge a e nwere autofile. Patroni rụrụ nnukwu ọrụ ebe a ọzọ. Nna-ukwu ochie anyị anọghị ya, ihe mere ya. Na nhọpụta nke onye isi ọhụrụ malitere. Ihe niile gara nke ọma ebe a. Pgsql01 anyị aghọwo onye ndu ọhụrụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Anyị nwere oyiri nke ghọrọ nna ukwu. Ma enwere nzaghachi nke abụọ. Ma enwere nsogbu na oyiri nke abụọ. Ọ gbalịrị ịhazigharị ya. Dị ka m ghọtara ya, ọ gbalịrị ịgbanwe recovery.conf, malitegharịa Postgres ma jikọọ na nna ukwu ọhụrụ. Ọ na-ede ozi kwa sekọnd 10 ọ na-agbalị, mana ọ naghị eme nke ọma.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Na n'oge mgbalị ndị a, mgbaàmà nkwụsị ngwa ngwa na-abịarute nna ukwu ochie ahụ. Malitegharịa ekwentị nna ya ukwu. Na mgbake na-akwụsị n'ihi na nna ukwu ochie na-abanye na reboot. Ya bụ, oyiri ahụ enweghị ike ijikọ na ya, n'ihi na ọ nọ na ọnọdụ nkwụsị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'oge ụfọdụ, ọ na-arụ ọrụ, mana ịmalitegharị amaliteghị.

Naanị ihe m chere bụ na enwere adreesị nna ochie ochie na recovery.conf. Ma mgbe nna ukwu ọhụrụ pụtara, oyiri nke abụọ ka gbalịrị jikọọ na nna ukwu ochie ahụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Mgbe Patroni malitere na oyiri nke abụọ, ọnụ ahụ malitere mana enweghị ike ịmegharị ya. Na replication lag e hiwere, nke yiri ihe dị ka nke a. Ya bụ, ọnụ ụzọ atọ ahụ dị, mana ọnụ nke abụọ kwụsịrị n'azụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

N'otu oge ahụ, ọ bụrụ na i leba anya na ndekọ ndị e dere, ị ga-ahụ na ịmegharị ya enweghị ike ịmalite n'ihi na ndekọ azụmahịa dị iche iche. Na ndekọ azụmahịa ndị ahụ nna ukwu na-enye, nke akọwapụtara na recovery.conf, adabaghị ọnụ ọnụ anyị ugbu a.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ebe a ka m mehiere. Ekwesịrị m ịbịa hụ ihe dị na recovery.conf iji nwalee echiche m na anyị na-ejikọta na nna ukwu na-ezighi ezi. Ma mgbe ahụ, naanị m na-eme ihe banyere nke a ma ọ emeghị m, ma ọ bụ ahụrụ m na oyiri ahụ na-ada azụ na a ga-emejupụta ya, ya bụ, arụrụ m ọrụ n'akpachapụghị anya. Nke a bụ nkwonkwo m.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Mgbe nkeji 30 gachara, onye nchịkwa abịalarị, ya bụ, amalitere m Patroni na oyiri ahụ. M akwụsịlarị ya, echere m na a ga-emejupụta ya. Ma echere m - m ga-amaliteghachi Patroni, ikekwe ihe dị mma ga-apụta. Amalitere mgbake. Na isi ọbụna meghere, ọ dị njikere ịnakwere njikọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Mmụgharị amalitela. Ma otu nkeji ka e mesịrị, ọ dara na njehie na ndekọ azụmahịa adịghị mma maka ya.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Echere m na m ga-amalitegharị ọzọ. Amalitere m Patroni ọzọ, amaliteghịkwa m Postgres, mana malitegharịrị Patroni na-atụ anya na ọ ga-amalite nchekwa data ahụ n'ụzọ anwansi.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Mmụgharị ahụ malitere ọzọ, mana akara ndị dị na ndekọ azụmahịa dị iche, ha abụghị otu dị ka mbọ mmalite mbụ. Mgbanwegharị kwụsịrị ọzọ. Na ozi adịworị dị iche iche. Ọ bụghịkwa m ihe ọmụma nke ukwuu.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma mgbe ahụ ọ na-adakwasị m - gịnị ma ọ bụrụ na m malitegharịa Postgres, n'oge a, m na-eme nyocha na onye nwe ugbu a ka m mee ka isi ihe dị na ndekọ azụmahịa ahụ dị ntakịrị n'ihu ka mgbake wee malite oge ọzọ? Na mgbakwunye, anyị ka nwere ebuka WAL.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

M maliteghachiri Patroni, mere ụzọ nyocha abụọ na nna ukwu, ihe abụọ nke mmalite mmalite na oyiri mgbe ọ meghere. O nyekwara aka. M chere ogologo oge ihe mere o ji nyere aka na otú o si arụ ọrụ. Na oyiri malitere. Adọkakwaghị ya ọzọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Nsogbu dị otú ahụ nye m bụ otu n’ime ihe ndị kasị dị omimi karị, bụ́ nke m ka na-agbagwoju anya banyere ihe mere n’ebe ahụ n’ezie.

Kedu ihe ọ pụtara ebe a? Patroni nwere ike ịrụ ọrụ dịka ebumnobi na-enweghị njehie ọ bụla. Mana n'otu oge ahụ, nke a abụghị nkwa 100% na ihe niile dị mma na anyị. Ihe oyiri ahụ nwere ike ịmalite, mana ọ nwere ike ịbụ na steeti na-arụ ọrụ ọkara, ngwa ahụ enweghị ike ịrụ ọrụ na ụdị oyiri ahụ, n'ihi na a ga-enwe data ochie.

Na mgbe faịlụ ahụ gasịrị, ịkwesịrị ịlele mgbe niile na ihe niile dị n'usoro na ụyọkọ ahụ, ya bụ, enwere nọmba achọrọ nke oyiri, enweghị nkwụsị mmegharị.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ma ka anyị na-agabiga okwu ndị a, m ga-atụ aro. M gbalịrị ikpokọta ha na abụọ slides. Eleghị anya, enwere ike ijikọ akụkọ niile n'ime ihe mmịfe abụọ ma kwuo naanị ya.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Mgbe ị na-eji Patroni, ị ga-enwerịrị nleba anya. Ị kwesịrị ịma mgbe autofileover mere, n'ihi na ọ bụrụ na ịmaghị na ị nwere autofileover, ị nweghị njikwa na ụyọkọ ahụ. Nke ahụ dịkwa njọ.

Mgbe onye ọ bụla na-eme faịlụ, anyị ga-eji aka nyochaa ụyọkọ. Anyị kwesịrị ijide n'aka na anyị na-enwekarị ọnụ ọgụgụ nke oyiri, ọ dịghị ihe ọ bụla na-emegharị emegharị, ọ dịghị njehie ọ bụla na ndekọ ndị metụtara nkwanyegharị nkwanye, na Patroni, na usoro DCS.

Akpaaka nwere ike ịrụ ọrụ nke ọma, Patroni bụ ezigbo ngwá ọrụ. Ọ nwere ike ịrụ ọrụ, mana nke a agaghị ebute ụyọkọ ahụ na steeti achọrọ. Ọ bụrụkwa na anyị achọpụtaghị ya, anyị ga-anọ ná nsogbu.

Na Patroni abụghị mgbọ ọlaọcha. Anyị ka kwesịrị ịghọta ka Postgres si arụ ọrụ, ka mmegharị si arụ ọrụ na ka Patroni si arụ ọrụ na Postgres, yana otu esi enye nkwukọrịta n'etiti ọnụ. Nke a dị mkpa iji nwee ike iji aka gị dozie nsogbu.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Kedu ka m ga-esi abịakwute okwu gbasara nchoputa? O mere na anyị na ndị ahịa dị iche iche na-arụ ọrụ ma ọ dịghị onye nwere nchịkọta ELK, anyị ga-edozi ndekọ ahụ site na imepe consoles 6 na taabụ 2. N'otu taabụ, ndị a bụ ndekọ Patroni maka ọnụ ọ bụla, na taabụ nke ọzọ, ndị a bụ ndekọ ndekọ Consul, ma ọ bụ Postgres ma ọ bụrụ na ọ dị mkpa. O siri ezigbo ike ịchọpụta nke a.

Kedu ụzọ m siri mee? Nke mbụ, m na-ele anya mgbe onye faịlụ ahụ rutere. Na m nke a bụ mmiri mmiri. M na-ele ihe mere n'ihu onye faịlụ, n'oge filer na mgbe filer. The fileover nwere akara abụọ: nke a bụ mmalite na ọgwụgwụ oge.

Na-esote, m na-eleba anya na ndekọ maka ihe omume n'ihu onye na-eme ihe, nke bu ụzọ mee ihe, ya bụ, m na-achọ ihe kpatara onye ahụ ji mee.

Na nke a na-enye foto nke ịghọta ihe mere na ihe a ga-eme n'ọdịnihu ka ọnọdụ ndị dị otú ahụ ghara ime (na n'ihi ya, ọ dịghị faịlụ).

Ebeekwa ka anyị na-elekarị anya? m na-ele:

  • Nke mbụ, gaa na ndekọ Patroni.
  • Na-esote, m na-ele anya na Postgres logs, ma ọ bụ ndekọ DCS, dabere na ihe ahụrụ na ndekọ Patroni.
  • Na ndekọ usoro na-enyekwa nghọta mgbe ụfọdụ ihe kpatara onye faịlụ ahụ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Kedu ka m si ele Patroni? Mụ na Patroni nwere ezigbo mmekọrịta. N'uche m, nke a bụ ihe kacha mma e nwere taa. Amaara m ọtụtụ ngwaahịa ndị ọzọ. Ndị a bụ Stolon, Repmgr, Pg_auto_failover, PAF. 4 ngwaọrụ. M nwara ha niile. Patroni bụ ọkacha mmasị m.

Ọ bụrụ na ha jụọ m: "Ana m akwado Patroni?". Aga m asị ee, n'ihi na Patroni masịrị m. Echere m na m mụtara ka esi esi ya.

Ọ bụrụ na ị nwere mmasị ịhụ ihe nsogbu ndị ọzọ dị na Patroni ma e wezụga nsogbu ndị m kwuru, ị nwere ike ịlele ibe ahụ mgbe niile. mbipụta na GitHub. Enwere ọtụtụ akụkọ dị iche iche, a na-atụlekwa ọtụtụ ihe na-atọ ụtọ n'ebe ahụ. N'ihi ya, e webatara ụfọdụ ahụhụ ma dozie ya, ya bụ, nke a bụ ọgụgụ na-adọrọ mmasị.

Enwere ụfọdụ akụkọ na-atọ ụtọ gbasara ndị mmadụ na-agbapụ onwe ha n'ụkwụ. Ihe ọmụma nke ukwuu. Ị gụrụ ma ghọta na ọ dịghị mkpa ime otú ahụ. Etinyere m onwe m aka.

Ọ ga-amasị m ịsị Zalando nnukwu ekele maka ịmepụta ọrụ a, ya bụ Alexander Kukushkin na Alexey Klyukin. Aleksey Klyukin bụ otu n'ime ndị na-ede akwụkwọ, ọ naghị arụ ọrụ na Zalando, ma ndị a bụ mmadụ abụọ malitere ịrụ ọrụ na ngwaahịa a.

Ma echere m na Patroni bụ ihe dị mma. Obi dị m ụtọ na ọ dị, ọ na-amasị ya. Na nnukwu ekele maka ndị niile na-enye aka na-edegara Patroni patches. Enwere m olileanya na Patroni ga-eto eto, dị jụụ na ịrụ ọrụ nke ọma na afọ. Ọ na-arụ ọrụ, mana enwere m olileanya na ọ ga-aka mma. Ya mere, ọ bụrụ na ị na-eme atụmatụ iji Patroni, atụla egwu. Nke a bụ ngwọta dị mma, enwere ike ime ya ma jiri ya mee ihe.

Ọ gwụla. Ọ bụrụ na ị nwere ajụjụ, jụọ.

Akụkọ ọdịda Patroni ma ọ bụ Otu esi emebi ụyọkọ PostgreSQL gị. Alexei Lesovsky

Ajụjụ gị

Daalụ maka akụkọ ahụ! Ọ bụrụ na mgbe onye faịlụ gachara, ị ka kwesịrị ile anya ebe ahụ nke ọma, kedu ihe kpatara anyị ji chọọ onye na-eme ihe na-akpaghị aka?

N'ihi na ọ bụ ihe ọhụrụ. Anyị na ya nọrọ naanị otu afọ. Ọ ka mma ịnọ na nchekwa. Anyị chọrọ ịbata hụ na ihe niile mere n'ezie ka o kwesịrị. Nke a bụ ọkwa nke enweghị ntụkwasị obi okenye - ọ ka mma ịlele ugboro abụọ ma hụ.

Dịka ọmụmaatụ, anyị gara n'ụtụtụ wee lee anya, nri?

Ọ bụghị n'ụtụtụ, anyị na-amụtakarị banyere autofile ihe fọrọ nke nta ka ọ bụrụ ozugbo. Anyị na-enweta ọkwa, anyị na-ahụ na autofile emeela. Ọ fọrọ nke nta ka anyị gaa ozugbo lee. Mana nlele ndị a niile kwesịrị iweta na ọkwa nleba anya. Ọ bụrụ na ịnweta Patroni site na API REST, enwere akụkọ ihe mere eme. Site na akụkọ ihe mere eme ị nwere ike ịhụ akara oge mgbe onye na-eme faịlụ mere. Dabere na nke a, enwere ike ime nlekota. Ị nwere ike ịhụ akụkọ ihe mere eme, ole ihe omume dị. Ọ bụrụ na anyị nwere ọtụtụ mmemme, mgbe ahụ autofile emeela. Ị nwere ike ịga hụ. Ma ọ bụ akpaaka nlekota anyị enyochala na anyị nwere ụdị oyiri niile, ọ nweghị ihe ọ bụla na ihe niile dị mma.

Daalụ!

Daalụ nke ukwuu maka nnukwu akụkọ! Ọ bụrụ na anyị kwagara ụyọkọ DCS n'ebe dị anya site na ụyọkọ Postgres, yabụ ụyọkọ a kwesịkwara ịrụ ọrụ kwa oge? Kedu omume kacha mma na ụfọdụ iberibe ụyọkọ DCS chọrọ ka agbanyụọ, ihe a ga-eji ha mee, wdg? Kedu ka usoro a dum si adị ndụ? Oleekwa otú i si eme ihe ndị a?

Maka otu ụlọ ọrụ, ọ dị mkpa ịmepụta matriks nke nsogbu, ihe na-eme ma ọ bụrụ na otu n'ime ihe ndị ahụ ma ọ bụ ọtụtụ ihe na-ada. Dị ka matriks a si dị, anyị na-aga n'usoro ihe niile mejupụtara ma wuo ọnọdụ ma ọ bụrụ na ọdịda nke ihe ndị a dara. N'ihi ya, maka ọnọdụ ọdịda ọ bụla, ị nwere ike ịnwe atụmatụ mmemme maka mgbake. N'ihe banyere DCS, ọ na-abịa dịka akụkụ nke akụrụngwa ọkọlọtọ. Ndị nchịkwa na-ahụ maka ya, anyị na-adabere na ndị admins na-ahụ maka ya na ikike ha nwere ike idozi ya ma ọ bụrụ na mberede. Ọ bụrụ na enweghị DCS ma ọlị, mgbe ahụ anyị na-ebuga ya, mana n'otu oge ahụ anyị anaghị elele ya nke ọma, n'ihi na ọ bụghị anyị na-ahụ maka akụrụngwa, mana anyị na-enye ndụmọdụ maka otu na ihe ị ga-enyocha.

Ya bụ, aghọtara m nke ọma na achọrọ m gbanyụọ Patroni, gbanyụọ onye na-eme ihe, gbanyụọ ihe niile tupu ya na ndị ọbịa ahụ eme ihe ọ bụla?

Ọ dabere na ọnụ ọnụ ole anyị nwere na ụyọkọ DCS. Ọ bụrụ na enwere ọtụtụ ọnụ ma ọ bụrụ na anyị gbanyụọ naanị otu ọnụ ọnụ (nke ahụ), mgbe ahụ ụyọkọ ahụ na-ejigide kworum. Na Patroni ka na-arụ ọrụ. Ọ dịghịkwa ihe na-akpalite. Ọ bụrụ na anyị nwere ọrụ mgbagwoju anya nke na-emetụta ọnụ ọgụgụ ndị ọzọ, enweghị nke nwere ike imebi quorum, mgbe ahụ - ee, ọ nwere ike ịbụ ihe ezi uche dị na itinye Patroni na nkwụsịtụ. O nwere iwu kwekọrọ - patronictl kwụsịtụ, patronictl resume. Anyị na-akwụsịtụ na autofiler anaghị arụ ọrụ n'oge ahụ. Anyị na-arụzi na ụyọkọ DCS, mgbe ahụ anyị na-ewepụ nkwụsịtụ wee gaa n'ihu na-adị ndụ.

Daalụ nke ukwuu!

Daalụ nke ukwuu maka akụkọ gị! Kedu ka ndị otu ngwaahịa si eche banyere data efu?

Ndị otu ngwaahịa achọghị ịma, na ndị isi otu na-echegbu onwe ha.

Kedu ihe nkwa dị?

Nkwenye siri ike. Alexander Kukushkin nwere akụkọ "Otu esi agbakọ RPO na RTO", ya bụ oge mgbake na ole data anyị nwere ike idafu. Echere m na anyị kwesịrị ịchọta slide ndị a ma mụọ ha. Dị ka m na-echeta, e nwere kpọmkwem nzọụkwụ na-agbakọ ihe ndị a. Olee otú ọtụtụ azụmahịa anyị nwere ike ida, ole data anyị nwere ike ida. Dịka nhọrọ, anyị nwere ike iji mmegharị mmekọrịta na ọkwa Patroni, mana nke a bụ mma agha ihu abụọ: anyị nwere ntụkwasị obi data, ma ọ bụ na-atụfu ọsọ. Enwere mmegharị mmekọrịta, mana ọ naghị ekwe nkwa nchebe 100% megide mfu data.

Alexey, daalụ maka nnukwu akụkọ ahụ! Ahụmịhe ọ bụla na iji Patroni maka nchebe ọkwa efu? Ya bụ, na njikọ na njikere synchronous? Nke a bụ ajụjụ mbụ. Na ajụjụ nke abụọ. Ị jirila ngwọta dị iche iche. Anyị na-eji Repmgr, ma na-enweghị autofiler, ma ugbu a anyị na-eme atụmatụ itinye autofiler. Na anyị na-atụle Patroni dị ka ihe ngwọta ọzọ. Kedu ihe ị nwere ike ikwu dị ka uru ma e jiri ya tụnyere Repmgr?

Ajụjụ nke mbụ bụ maka oyiri mekọrịtara ọnụ. Ọ dịghị onye na-eji synchronous replication ebe a, n'ihi na onye ọ bụla na-atụ egwu (ọtụtụ ndị ahịa na-eji ya eme ihe, na ụkpụrụ, ha ahụghị nsogbu arụmọrụ - Ihe nkwuputa okwu). Ma anyị emepụtala iwu maka onwe anyị na e kwesịrị inwe ma ọ dịkarịa ala atọ ọnụ na a synchronous replication ụyọkọ, n'ihi na ọ bụrụ na anyị nwere ọnụ abụọ ma ọ bụrụ na nna ukwu ma ọ bụ oyiri ada ada, mgbe ahụ, Patroni switches a ọnụ ka Standalone mode nke mere na ngwa na-aga n'ihu. arụ ọrụ. Na nke a, e nwere ihe ize ndụ nke data ọnwụ.

Banyere ajụjụ nke abụọ, anyị ejirila Repmgr ma ka na-eme ụfọdụ ndị ahịa maka ihe mere eme. Gịnị ka a pụrụ ikwu? Patroni na-abịa na autofiler site na igbe ahụ, Repmgr na-abịa na autofiler dị ka ihe mgbakwunye nke kwesịrị ka enyere ya aka. Anyị kwesịrị ịgba ọsọ Repmgr daemon na ọnụ ọ bụla wee nwee ike hazie autofiler.

Repmgr na-enyocha ma ọ bụrụ na oghere Postgres dị ndụ. Usoro Repmgr na-enyocha ịdị adị nke ibe ya, nke a abụghị ụzọ dị mma. enwere ike ịnwe ikpe dị mgbagwoju anya nke ikewapụ netwọkụ nke nnukwu ụyọkọ Repmgr nwere ike ịdaba n'ọtụtụ dị nta wee gaa n'ihu na-arụ ọrụ. Anaghị m agbaso Repmgr ogologo oge, ma eleghị anya edozi ya ... ma ọ bụ ma eleghị anya ọ bụghị. Mana mwepụ nke ozi gbasara steeti ụyọkọ na DCS, dị ka Stolon, Patroni na-eme, bụ nhọrọ kachasị mma.

Alexey, enwere m ajụjụ, ma eleghị anya ọ bụ onye lamer. N'otu n'ime ihe atụ mbụ, ị bupụrụ DCS site na igwe mpaghara gaa na onye ọbịa dịpụrụ adịpụ. Anyị na-aghọta na netwọk bụ ihe nwere àgwà nke ya, ọ na-ebi n'onwe ya. Kedu ihe ga - eme ma ọ bụrụ na n'ihi ihe ụfọdụ, ụyọkọ DCS adịghị adị? Agaghị m ekwu ihe kpatara ya, enwere ike inwe ọtụtụ n'ime ha: site na aka gbagọrọ agbagọ nke ndị netwọk na ezigbo nsogbu.

Ekwughị m ya n'olu dara ụda, mana ụyọkọ DCS ga-adarịrị, ya bụ na ọ bụ ọnụọgụ ọnụ dị iche, ka e wee zute quorum. Kedu ihe ga - eme ma ọ bụrụ na ụyọkọ DCS agaghị adị, ma ọ bụ enweghị ike izute quorum, ya bụ, ụfọdụ ụdị netwọk kewara ma ọ bụ ọdịda ọnụ? N'okwu a, ụyọkọ Patroni na-abanye na ọnọdụ ọgụgụ naanị. Ụyọkọ Patroni enweghị ike ikpebi ọnọdụ ụyọkọ na ihe a ga-eme. Ọ nweghị ike ịkpọtụrụ DCS wee chekwaa ụyọkọ ọhụrụ ebe ahụ, yabụ ụyọkọ ahụ niile na-abanye naanị ịgụ. Ma na-eche ma ọ bụrụ na onye na-ahụ maka ọrụ nyere aka ma ọ bụ ka DCS gbakee.

N'ikwu okwu n'ụzọ siri ike, DCS na-aghọ ọrụ maka anyị dị mkpa dịka ntọala n'onwe ya?

Ee Ee. N'ọtụtụ ụlọ ọrụ ọgbara ọhụrụ, Nchọpụta Ọrụ bụ akụkụ dị mkpa nke akụrụngwa. A na-emejuputa ya ọbụna tupu enwee ọbụna nchekwa data na akụrụngwa. N'ikwu okwu n'otu n'otu, ewepụtara akụrụngwa, tinye ya na DC, ma anyị nwere Nchọpụta Ọrụ ozugbo. Ọ bụrụ na ọ bụ Consul, mgbe ahụ, DNS nwere ike wuo ya. Ọ bụrụ na nke a bụ Etcd, mgbe ahụ enwere ike ịnwe akụkụ sitere na ụyọkọ Kubernetes, nke a ga-ebuga ihe niile ọzọ. Ọ dị m ka nchọpụta ọrụ abụrụla akụkụ dị mkpa nke akụrụngwa ọgbara ọhụrụ. Ha na-echekwa banyere ya na mbụ karịa banyere ọdụ data.

Daalụ!

isi: www.habr.com

Tinye a comment