{"id":90103,"date":"2020-07-29T13:42:32","date_gmt":"2020-07-29T11:42:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij"},"modified":"2020-07-29T13:42:32","modified_gmt":"2020-07-29T11:42:32","slug":"patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij","title":{"rendered":"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/6404cba13214f499d1f347cca0aacbe7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Q\u00ebllimi kryesor i Patroni \u00ebsht\u00eb t\u00eb siguroj\u00eb Disponueshm\u00ebri t\u00eb Lart\u00eb p\u00ebr PostgreSQL. Por Patroni \u00ebsht\u00eb vet\u00ebm nj\u00eb template, jo nj\u00eb mjet i gatsh\u00ebm (\u00e7far\u00eb gjithashtu thuhet n\u00eb dokumentacion). N\u00eb nj\u00eb shikim t\u00eb par\u00eb, duke e konfiguruar Patroni n\u00eb nj\u00eb laboratore testuese, mund t\u00eb shoh\u00ebsh se sa mjet i shk\u00eblqyer \u00ebsht\u00eb dhe si e trajton leht\u00ebsisht p\u00ebrpjekjen ton\u00eb p\u00ebr t\u00eb shkat\u00ebrruar klastri. Megjithat\u00eb, n\u00eb praktik\u00eb, n\u00eb nj\u00eb mjedis prodhimi, gjith\u00e7ka nuk ndodh gjithmon\u00eb aq bukur dhe elegant si n\u00eb laboratorin e testeve.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/ff445e6d76a2ad46a232b705e104446f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Do t\u00eb flas pak p\u00ebr veten time. Kam filluar si administrator sistemi. Kam punuar n\u00eb zhvillimin e uebit. Nga viti 2014 punoj n\u00eb Data Egret. Kompania merret me konsulenc\u00eb n\u00eb fush\u00ebn e Postgres. Dhe ne sh\u00ebrbejm\u00eb pik\u00ebrisht Postgres, duke punuar \u00e7do dit\u00eb me t\u00eb, prandaj kemi ekspertiz\u00eb t\u00eb ndryshme t\u00eb lidhura me operimin. <\/p>\n<p><\/p>\n<p>Dhe n\u00eb fund t\u00eb vitit 2018 filluam ngadal\u00eb t\u00eb p\u00ebrdorim Patroni. Dhe kemi akumuluar nj\u00eb p\u00ebrvoj\u00eb t\u00eb caktuar. Ne e diagnostikuam, e p\u00ebrshtat\u00ebm, erdh\u00ebm n\u00eb praktikat tona m\u00eb t\u00eb mira. N\u00eb k\u00ebt\u00eb prezantim do t\u00eb flas p\u00ebr to.<\/p>\n<p><\/p>\n<p>P\u00ebrve\u00e7 Postgres, un\u00eb p\u00eblqej Linux-in. M\u00eb p\u00eblqen ta eksploroja dhe t\u00eb eksperimentoj me t\u00eb, m\u00eb p\u00eblqen t\u00eb nd\u00ebrtoj b\u00ebrthama. M\u00eb p\u00eblqejn\u00eb virtualizimi, kontejner\u00ebt, Docker, Kubernetes. K\u00ebto gj\u00ebra m\u00eb interesojn\u00eb sepse pasojat e zakoneve t\u00eb vjetra t\u00eb administrat\u00ebs shfaqen. M\u00eb p\u00eblqen t\u00eb merrem me monitorimet. Dhe m\u00eb p\u00eblqejn\u00eb gj\u00ebrat e Postgres-it q\u00eb lidhen me administrimin, pra replikimi, kopjimi rezerv\u00eb. Dhe n\u00eb koh\u00ebn time t\u00eb lir\u00eb shkruaj n\u00eb Go. Nuk jam inxhinier software-i, thjesht shkruaj p\u00ebr vete n\u00eb Go. Dhe m\u00eb sjell k\u00ebnaq\u00ebsi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/02cfd9293af5a8410c91e39afe2c75e6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Mendoj se shumica prej jush e din\u00eb se n\u00eb Postgres nuk ka HA (Disponibilitet t\u00eb Lart\u00eb) nga kutia. P\u00ebr t\u00eb pasur HA, duhet t\u00eb vendosni di\u00e7ka, ta konfiguroni, t\u00eb shkoni p\u00ebrpara dhe ta arrini at\u00eb. <\/li>\n<li>Ekzistojn\u00eb disa mjete dhe Patroni \u00ebsht\u00eb nj\u00eb prej tyre q\u00eb e zgjidh HA mjaft mir\u00eb dhe shum\u00eb efektivisht. Por duke vendosur gjith\u00e7ka n\u00eb nj\u00eb laboratori provues dhe duke e nisur, mund t\u00eb shohim se gjith\u00e7ka funksionon, mund t\u00eb riprodhojm\u00eb disa probleme, t\u00eb shohim se si i trajton Patroni ato. Dhe do t\u00eb shohim se gjith\u00e7ka funksionon p\u00ebr mrekulli. <\/li>\n<li>Por n\u00eb praktik\u00eb kemi hasur n\u00eb probleme t\u00eb ndryshme. Dhe mbi k\u00ebto probleme do t\u00eb flas.<\/li>\n<li>Do t\u00eb tregoj se si e diagnostikuam, \u00e7far\u00eb ndryshuam - na ndihmoi kjo apo jo. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/7126b45b40dd08521e80a3c150382bec.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Nuk do t\u00eb flas p\u00ebr m\u00ebnyr\u00ebn se si t\u00eb instaloni Patroni, sepse mund ta k\u00ebrkoni n\u00eb internet, mund t\u00eb shikoni skedar\u00ebt e konfigurimit p\u00ebr t\u00eb kuptuar se si funksionon dhe si konfiguroni gjith\u00e7ka. Mund t\u00eb kuptoni arkitektur\u00ebn, duke gjetur informacion p\u00ebr k\u00ebt\u00eb n\u00eb internet. <\/li>\n<li>Nuk do t\u00eb flas p\u00ebr p\u00ebrvoj\u00ebn e t\u00eb tjer\u00ebve. Do t\u00eb flas vet\u00ebm p\u00ebr problemet q\u00eb kemi hasur ne vet\u00eb. <\/li>\n<li>Dhe nuk do t\u00eb flas p\u00ebr problemet q\u00eb jan\u00eb jasht\u00eb Patroni dhe PostgreSQL. N\u00ebse, p\u00ebr shembull, ka probleme q\u00eb lidhen me balancimin, kur klasteri yn\u00eb u shkat\u00ebrrua, p\u00ebr k\u00ebt\u00eb nuk do t\u00eb flas. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/3f8d179e7c78ce83e8842ef5c72fe30d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe nj\u00eb shp\u00ebrndarje e vog\u00ebl para se t\u00eb fillojm\u00eb prezantimin ton\u00eb. <\/p>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto probleme q\u00eb kemi hasur ndodhen gjat\u00eb 6-7-8 muajve t\u00eb par\u00eb t\u00eb p\u00ebrdorimit. Me kalimin e koh\u00ebs, arrit\u00ebm n\u00eb praktikat tona m\u00eb t\u00eb mira. Dhe problemet nuk na kan\u00eb shqet\u00ebsuar m\u00eb. Prandaj, prezantimi ishte planifikuar rreth gjasht\u00eb muaj m\u00eb par\u00eb, kur gjith\u00e7ka ishte ende e fresk\u00ebt n\u00eb mendje dhe un\u00eb e mbaja mend mir\u00eb. <\/p>\n<p><\/p>\n<p>Gjat\u00eb p\u00ebrgatitjes s\u00eb raportit, kam shqyrtuar postmortemet e m\u00ebparshme dhe kam par\u00eb log\u00ebt. Disa detaje mund t\u00eb ken\u00eb r\u00ebn\u00eb n\u00eb harres\u00eb, ose disa informacione mund t\u00eb mos ken\u00eb qen\u00eb t\u00eb studiuara plot\u00ebsisht gjat\u00eb analiz\u00ebs s\u00eb problemeve, prandaj n\u00eb disa momente mund t\u00eb duket se problemet nuk jan\u00eb shqyrtuar plot\u00ebsisht, ose ekziston ndonj\u00eb mang\u00ebsi informacioni. Prandaj, ju lutem, m\u00eb falni p\u00ebr k\u00ebt\u00eb moment. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/30d414284a41fcbc3bf417c9da28ca52.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb \u00ebsht\u00eb Patroni?<\/p>\n<p><\/p>\n<ul>\n<li>\u00cbsht\u00eb nj\u00eb model p\u00ebr nd\u00ebrtimin e HA. K\u00ebshtu \u00ebsht\u00eb shkruar n\u00eb dokumentacion. Dhe nga pik\u00ebpamja ime, \u00ebsht\u00eb nj\u00eb sqarim shum\u00eb i drejt\u00eb. Patroni nuk \u00ebsht\u00eb nj\u00eb plumb argjendi q\u00eb do t\u00eb zgjidh\u00eb t\u00eb gjitha problemet tuaja, pra \u00ebsht\u00eb e nevojshme t\u00eb b\u00ebni p\u00ebrpjekje q\u00eb t\u00eb filloj\u00eb t\u00eb punoj\u00eb dhe t\u00eb sjell\u00eb p\u00ebrfitime. <\/li>\n<li>\u00cbsht\u00eb nj\u00eb sh\u00ebrbim agjential q\u00eb instalohet n\u00eb \u00e7do sh\u00ebrbim me databaz\u00eb dhe q\u00eb funksionon si nj\u00eb lloj sistemi init p\u00ebr Postgres-in tuaj. Ai nis Postgres-in, e ndalon, e rib\u00ebn, ndryshon konfigurimin dhe ndryshon topologjin\u00eb e klasterit tuaj. <\/li>\n<li>N\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mbani gjendjen e klasterit, p\u00ebrfaq\u00ebsimin e tij aktual dhe si ai duket, nevojitet ndonj\u00eb magazin\u00eb. Nga kjo pik\u00ebpamje, Patroni ndjek rrug\u00ebn e ruajtjes s\u00eb gjendjes n\u00eb nj\u00eb sistem t\u00eb jasht\u00ebm. Ky \u00ebsht\u00eb nj\u00eb sistem i ruajtjes s\u00eb konfigurations s\u00eb shp\u00ebrndar\u00eb. Mund t\u00eb jet\u00eb Etcd, Consul, ZooKeeper, ose Etcd i Kubernetes, pra ndonj\u00eb nga k\u00ebto opsione. <\/li>\n<li>Nj\u00eb nga ve\u00e7orit\u00eb e Patroni \u00ebsht\u00eb se ju merrni auto-failover-in q\u00eb nga fillimi, vet\u00ebm duke e konfiguruar. N\u00eb krahasim me Repmgr, atje failover-i vjen me paket\u00ebn. Me Repmgr ne marrim switchover, por n\u00ebse duam auto-failover, duhet ta konfiguroni at\u00eb ndryshe. N\u00eb Patroni, auto-failover \u00ebsht\u00eb tashm\u00eb p\u00ebrfshir\u00eb nga fillimi.<\/li>\n<li>Ka shum\u00eb gj\u00ebra t\u00eb tjera gjithashtu. P\u00ebrdorimi i konfigurimeve, kalimi i replikave t\u00eb reja, kopjimi rezerv\u00eb etj. Por k\u00ebto jan\u00eb jasht\u00eb k\u00ebtij raporti, nuk do flas p\u00ebr to. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/fed0f1ce931df99ca76ae1116f8098cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb p\u00ebrmbledhje e vog\u00ebl \u2013 detyra kryesore e Patroni \u00ebsht\u00eb t\u00eb b\u00ebj\u00eb auto-failover-in n\u00eb m\u00ebnyr\u00eb t\u00eb sigurt dhe t\u00eb besueshme, p\u00ebr t\u00eb siguruar q\u00eb klasteri t\u00eb vazhdoj\u00eb t\u00eb jet\u00eb operativ dhe aplikacioni mos e v\u00eb re ndryshimin n\u00eb topologjin\u00eb e klasterit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/fac52620957efa47ced330e7cc8084e0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por kur ne fillojm\u00eb t\u00eb p\u00ebrdorim Patroni, sistemi yn\u00eb b\u00ebhet pak m\u00eb i komplikuar. N\u00ebse m\u00eb par\u00eb kishim Postgres, tani me p\u00ebrdorimin e Patroni marrim vet\u00eb Patroni, marrim DCS, ku ruhet gjendja. Dhe gjith\u00eb kjo duhet t\u00eb funksionoj\u00eb n\u00eb nj\u00eb m\u00ebnyr\u00eb. Prandaj, \u00e7far\u00eb mund t\u00eb d\u00ebshtoj\u00eb?<\/p>\n<p><\/p>\n<p>Mund t\u00eb d\u00ebshtoj\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Mund t\u00eb d\u00ebshtoj\u00eb Postgres. Kjo mund t\u00eb jet\u00eb master ose replik\u00eb, di\u00e7ka nga k\u00ebto mund t\u00eb dal\u00eb jasht\u00eb funksionimit. <\/li>\n<li>Mund t\u00eb d\u00ebshtoj\u00eb vet\u00eb Patroni. <\/li>\n<li>Mund t\u00eb d\u00ebshtoj\u00eb DCS, ku ruhet gjendja.<\/li>\n<li>Dhe mund t\u00eb d\u00ebshtoj\u00eb rrjeti. <\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto aspekte do t'i shqyrtoj n\u00eb prezantimin tim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/1aeaf46d37bf1935b514b0581e0dbd0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Do t\u00eb shqyrtoj rastet sipas kompleksitetit t\u00eb tyre, jo nga pik\u00ebpamja se rasti p\u00ebrfshin shum\u00eb komponente. Por nga pik\u00ebpamja e ndjenjave subjektive, q\u00eb ky rast ishte i komplikuar p\u00ebr mua, ishte e v\u00ebshtir\u00eb p\u00ebr t'u analizuar... dhe anasjelltas, ndonj\u00eb rast ishte i leht\u00eb dhe ishte e thjesht\u00eb p\u00ebr t'u analizuar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/65b0c98bf2284610e955ced5eb998f39.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe rasti i par\u00eb \u00ebsht\u00eb m\u00eb i lehti. \u00cbsht\u00eb ai rast ku ne mor\u00ebm nj\u00eb grup t\u00eb dh\u00ebnash dhe n\u00eb t\u00eb nj\u00ebjtin grup vendos\u00ebm ruajtjen ton\u00eb DCS. Kjo \u00ebsht\u00eb gabimi m\u00eb i zakonsh\u00ebm. \u00cbsht\u00eb nj\u00eb gabim n\u00eb nd\u00ebrtimin e arkitektur\u00ebs, dmth, kombinimi i komponenteve t\u00eb ndryshme n\u00eb nj\u00eb vend. <\/p>\n<p><\/p>\n<p>Pra, ndodhi nj\u00eb d\u00ebshtim i dosjes, shkojm\u00eb t\u00eb shqyrtojm\u00eb se \u00e7far\u00eb ndodhi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/244b69d623fe2205c2d9ed2aa4620067.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu na intereson kur ndodhi fileri. Dometh\u00ebn\u00eb, na intereson ky moment i p\u00ebrkohsh\u00ebm kur ndodhi ndryshimi i gjendjes s\u00eb klasterit. <\/p>\n<p><\/p>\n<p>Por fileri nuk \u00ebsht\u00eb gjithmon\u00eb nj\u00eb moment i vet\u00ebm, dometh\u00ebn\u00eb nuk zgjat vet\u00ebm nj\u00eb nj\u00ebsi kohe, mund t\u00eb jet\u00eb i zgjatur. Ai mund t\u00eb zgjatet p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb.<\/p>\n<p><\/p>\n<p>Prandaj, ai ka nj\u00eb koh\u00eb fillimi dhe nj\u00eb koh\u00eb p\u00ebrfundimi, dometh\u00ebn\u00eb \u00ebsht\u00eb nj\u00eb ngjarje q\u00eb zgjat. Ne ndajm\u00eb t\u00eb gjitha ngjarjet n\u00eb tre intervale: kemi koh\u00ebn para filerit, gjat\u00eb filerit dhe pas filerit. Dometh\u00ebn\u00eb, ne shqyrtojm\u00eb t\u00eb gjitha ngjarjet n\u00eb k\u00ebt\u00eb shkall\u00eb t\u00eb koh\u00ebs. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/a0ed61afe55d1a157147e0d80b17e5d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe e para gj\u00eb q\u00eb b\u00ebjm\u00eb kur ndodh fileri, \u00ebsht\u00eb t\u00eb k\u00ebrkojm\u00eb shkakun, \u00e7far\u00eb ndodhi, \u00e7far\u00eb e shkaktoi at\u00eb q\u00eb \u00e7oi n\u00eb filer. <\/p>\n<p><\/p>\n<p>N\u00ebse shohim logjet, ato do t\u00eb jen\u00eb logjet klasike t\u00eb Patroni. Ai na njofton se serveri \u00ebsht\u00eb b\u00ebr\u00eb master dhe roli i masterit \u00ebsht\u00eb kaluar n\u00eb k\u00ebt\u00eb nyje. K\u00ebtu \u00ebsht\u00eb e sh\u00ebnuar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/9998c69f7d0d4358b277f4e0e7b4350f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00eb pas, na nevojitet t\u00eb kuptojm\u00eb pse ndodhi ndarja e skedarit, dmth. \u00e7far\u00eb ndodhi q\u00eb detyroi rolin e mjeshtrit t\u00eb kaloj\u00eb nga nj\u00eb nyje n\u00eb nj\u00eb tjet\u00ebr. N\u00eb k\u00ebt\u00eb rast, k\u00ebtu \u00ebsht\u00eb e thjesht\u00eb. Kemi nj\u00eb gabim n\u00eb nd\u00ebrveprimin me sistemin e ruajtjes. Mjeshtri kuptoi se nuk mund t\u00eb punonte me DCS, dmth. ndodhi ndonj\u00eb problem n\u00eb nd\u00ebrveprim. Dhe ai thot\u00eb se nuk mund t\u00eb jet\u00eb m\u00eb mjesht\u00ebr dhe heq dor\u00eb nga autoritetet. Kjo linj\u00eb \"demoted self\" flet pik\u00ebrisht p\u00ebr k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/4a8eca27689546b4b0fc3c666a3c37c4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse shohim ngjarjet q\u00eb i paraprin\u00eb ndarjes s\u00eb skedarit, mund t\u00eb shohim ato arsye q\u00eb sh\u00ebrbyen si problem p\u00ebr vazhdimin e pun\u00ebs s\u00eb mjeshtrit. <\/p>\n<p><\/p>\n<p>N\u00ebse shohim log-et e Patroni, do t\u00eb shohim se kemi nj\u00eb mori gabimesh, k\u00ebputjesh, dmth. agjenti Patroni nuk mund t\u00eb punoj\u00eb me DCS. N\u00eb k\u00ebt\u00eb rast, \u00ebsht\u00eb agjenti Consul, me t\u00eb cilin komunikohet p\u00ebrmes portit 8500. <\/p>\n<p><\/p>\n<p>Dhe problemi k\u00ebtu \u00ebsht\u00eb se Patroni dhe baza e t\u00eb dh\u00ebnave jan\u00eb t\u00eb drejtuara n\u00eb t\u00eb nj\u00ebjtin host. Dhe n\u00eb k\u00ebt\u00eb nyje ishin t\u00eb drejtuar server\u00ebt Consul. Duke krijuar ngarkes\u00eb n\u00eb server, ne krijuam probleme edhe p\u00ebr <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/\"   title=\"server\u00ebve\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1515\">server\u00ebve<\/a> Consul. Ata nuk arrit\u00ebn t\u00eb komunikonin normalisht. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/0d8dba6641809560e6b32825d481e30b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pas nj\u00eb kohe, kur ngarkesa u ul, Patroni yn\u00eb arriti t\u00eb komunikonte p\u00ebrs\u00ebri me agjent\u00ebt. Puna normale u rinis. Dhe e nj\u00ebjta server Pgdb-2 u b\u00eb p\u00ebrs\u00ebri master. Do thot\u00eb, kishte nj\u00eb fluks t\u00eb vog\u00ebl, p\u00ebr shkak t\u00eb t\u00eb cilit nyja humbi autoritetin e masterit, dhe m\u00eb pas e rimori, pra gjith\u00e7ka u kthye si\u00e7 ishte. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/131b93e0bd83099e1b99b53742419e13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe kjo mund t\u00eb interpretohet si nj\u00eb alarm false, ose mund t\u00eb shihet si nj\u00eb veprim i duhur nga Patroni. Do thot\u00eb, ai e kuptoi se nuk mund t\u00eb mbante gjendjen e klasterit dhe e hoqi veten nga autoriteti.<\/p>\n<p><\/p>\n<p>Dhe problemi ka lindur nga fakti se server\u00ebt e Consul ndodhen n\u00eb t\u00eb nj\u00ebjt\u00ebn pajisje si bazat e t\u00eb dh\u00ebnave. Prandaj, \u00e7do ngarkes\u00eb, qoft\u00eb ngarkes\u00eb n\u00eb disk ose procesor\u00eb, ndikon gjithashtu n\u00eb bashk\u00ebpunimin me klasterin Consul.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/142c7cf839c8da078451f7ba9d5499e5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe ne vendos\u00ebm se kjo nuk duhej t\u00eb jetonte s\u00eb bashku, ne krijuam nj\u00eb klaster t\u00eb ve\u00e7ant\u00eb p\u00ebr Consul. Dhe Patroni tashm\u00eb po punonte me nj\u00eb Consul t\u00eb ve\u00e7ant\u00eb, dmth. kishte nj\u00eb klaster Postgres t\u00eb ve\u00e7ant\u00eb, nj\u00eb klaster Consul t\u00eb ve\u00e7ant\u00eb. Kjo \u00ebsht\u00eb nj\u00eb udh\u00ebzues bazik se si t\u00eb ndahen t\u00eb gjitha k\u00ebto gj\u00ebra dhe t\u00eb mbahen, n\u00eb m\u00ebnyr\u00eb q\u00eb ato t\u00eb mos jetojn\u00eb s\u00eb bashku. <\/p>\n<p><\/p>\n<p>Si kemi mund\u00ebsi t\u00eb konfiguroni parametrat ttl, loop_wait, retry_timeout, dmth, t\u00eb p\u00ebrpiqemi t\u00eb mbijetojm\u00eb gjat\u00eb k\u00ebtyre kulmeve t\u00eb ngarkes\u00ebs p\u00ebrmes rritjes s\u00eb k\u00ebtyre parametrave. Por kjo nuk \u00ebsht\u00eb zgjidhja m\u00eb e p\u00ebrshtatshme, sepse k\u00ebto ngarkesa mund t\u00eb jen\u00eb t\u00eb vazhdueshme. N\u00eb k\u00ebt\u00eb kuptim, do t\u00eb tejkalojm\u00eb kufijt\u00eb e k\u00ebtyre parametrave. Dhe kjo mund t\u00eb mos ndihmoj\u00eb fare. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/c51f35dcd88b1c792acec231c0c6c66c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Problemi i par\u00eb, si\u00e7 e kuptoni, \u00ebsht\u00eb i thjesht\u00eb. Ne e vendos\u00ebm DCS-in s\u00eb bashku me baz\u00ebn, dhe k\u00ebshtu e mor\u00ebm problemin. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/cc2a98d9790441577fb4080406cbc53f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Problemi i dyt\u00eb \u00ebsht\u00eb i ngjash\u00ebm me t\u00eb parin. Ai \u00ebsht\u00eb i ngjash\u00ebm sepse p\u00ebrs\u00ebri kemi probleme me bashk\u00ebpunimin me sistemin DCS.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/e5c01b105adca48cc620085db8dd2d2b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse shikojm\u00eb n\u00eb log-et, do t\u00eb shohim se s\u00ebrish kemi gabim n\u00eb komunikim. Dhe Patroni thot\u00eb se nuk mund t\u00eb bashk\u00ebpunoj me DCS, k\u00ebshtu q\u00eb mjeshtri aktual kalon n\u00eb modin replik\u00eb.<\/p>\n<p><\/p>\n<p>Mjeshtri i vjet\u00ebr b\u00ebhet replik\u00eb, k\u00ebtu Patroni punon si\u00e7 duhet. Ai aktivizon pg_rewind, p\u00ebr t\u00eb kthyer regjistrin e transaksioneve dhe pastaj p\u00ebr t'u lidhur me mjeshtrin e ri, dhe p\u00ebr t\u00eb arritur n\u00eb mjeshtrin e ri. K\u00ebtu Patroni funksionon si duhet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/29255f4790abb15b64dbf9ee0b41c7fc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu ne duhet t\u00eb gjejm\u00eb vendin q\u00eb e parapriu failover-in, pra gabimet q\u00eb sh\u00ebrbyen si shkak, pse ndodhi failover. N\u00eb k\u00ebt\u00eb aspekt, punimi me log\u00ebt e Patroni \u00ebsht\u00eb mjaft i leht\u00eb. Ai shkruan t\u00eb nj\u00ebjtat mesazhe n\u00eb intervale t\u00eb caktuara. Dhe n\u00ebse fillojm\u00eb t\u00eb rrokullisim shpejt k\u00ebto log, ne shohim q\u00eb log\u00ebt jan\u00eb ndryshuar, q\u00eb do t\u00eb thot\u00eb se kan\u00eb filluar ndonj\u00eb problem. Ne kthehemi shpejt n\u00eb at\u00eb vend dhe shohim se \u00e7far\u00eb po ndodh. <\/p>\n<p><\/p>\n<p>Dhe n\u00eb situata normale, log\u00ebt duken k\u00ebshtu. Kontrollohet pronari i bllokimit. Dhe n\u00ebse, p\u00ebr shembull, pronari ka ndryshuar, at\u00ebher\u00eb mund t\u00eb ndodhin disa ngjarje, p\u00ebr t\u00eb cilat Patroni duhet t\u00eb reagoj\u00eb. Por n\u00eb k\u00ebt\u00eb rast, gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull. Ne jemi duke k\u00ebrkuar vendin ku kan\u00eb filluar gabimet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/f48ebd22a405f5b2900621451c68f543.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe duke u kthyer n\u00eb at\u00eb vend kur filluan t\u00eb shfaqen gabimet, ne shohim q\u00eb kemi pasur auto-failover. Dhe pasi gabimet tona ishin t\u00eb lidhura me nd\u00ebrveprimin me DCS dhe n\u00eb rastin ton\u00eb ne p\u00ebrdor\u00ebm Consul, ne gjithashtu shikojm\u00eb log\u00ebt e Consul p\u00ebr t\u00eb par\u00eb \u00e7far\u00eb ka ndodhur atje. <\/p>\n<p><\/p>\n<p>Duke krahasoshim koh\u00ebn e skaner\u00ebve dhe koh\u00ebn n\u00eb regjistrat e Consul, shohim se fqinj\u00ebt tan\u00eb n\u00eb cluster-in e Consul filluan t\u00eb dyshojn\u00eb p\u00ebr egzistenc\u00ebn e pjes\u00ebmarr\u00ebsve t\u00eb tjer\u00eb t\u00eb cluster-it t\u00eb Consul.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/63b02ac5b4f5a34a2822f1eee2b1f2f8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe n\u00ebse shohim regjistrat e agjent\u00ebve t\u00eb tjer\u00eb t\u00eb Consul, gjithashtu shihet q\u00eb ka ndodhur nj\u00eb kolaps rrjeti. T\u00eb gjith\u00eb pjes\u00ebtar\u00ebt e cluster-it t\u00eb Consul dyshojn\u00eb p\u00ebr egzistenc\u00ebn e nj\u00ebri-tjetrit. Kjo ishte nxitja p\u00ebr skanerin. <\/p>\n<p><\/p>\n<p>N\u00ebse shohim se \u00e7far\u00eb ndodhi para k\u00ebtyre gabimeve, mund t\u00eb shohim se ka pasur lloje t\u00eb ndryshme gabimesh, si deadline, RPC falled, dometh\u00ebn\u00eb qart\u00eb nj\u00eb problem gjat\u00eb bashk\u00ebpunimit t\u00eb pjes\u00ebmarr\u00ebsve t\u00eb cluster-it t\u00eb Consul me nj\u00ebri-tjetrin. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/b15c912f2afb49d9d85e7bb9361ce449.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrgjigjja m\u00eb e thjesht\u00eb \u00ebsht\u00eb t\u00eb riparosh rrjetin. Por un\u00eb, duke q\u00ebndruar n\u00eb tribun\u00eb, \u00ebsht\u00eb e leht\u00eb t\u00eb them k\u00ebt\u00eb. Por rrethanat jan\u00eb t\u00eb tilla q\u00eb nuk gjithmon\u00eb klienti mund t\u00eb p\u00ebrballoj\u00eb riparimet e rrjetit. Ai mund t\u00eb jetoj\u00eb n\u00eb qendr\u00ebn e t\u00eb dh\u00ebnave dhe mund t\u00eb mos ket\u00eb mund\u00ebsi p\u00ebr t\u00eb riparuar rrjetin, p\u00ebr t\u00eb ndikuar te pajisjet. Prandaj nevojiten disa alternativa t\u00eb tjera. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/1dbdb66233acc3bc321a30a1c5fe14f9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka alternativa:<\/p>\n<p><\/p>\n<ul>\n<li>Opsioni m\u00eb i thjesht\u00eb, i cili \u00ebsht\u00eb shkruar, mendoj, madje n\u00eb dokumentacion, \u00ebsht\u00eb t\u00eb \u00e7aktivizosh verifikimet e Consul, pra thjesht t\u00eb kalosh nj\u00eb array t\u00eb zbraz\u00ebt. K\u00ebshtu, ne i themi agjentit t\u00eb Consul t\u00eb mos p\u00ebrdor\u00eb asnj\u00eb verifikim. Fal\u00eb k\u00ebtyre verifikimeve, ne mund t\u00eb injorojm\u00eb k\u00ebto stuhi rrjetesh dhe t\u00eb mos inicojm\u00eb d\u00ebshtimin e skedar\u00ebve. <\/li>\n<li>Nj\u00eb opsion tjet\u00ebr \u00ebsht\u00eb t\u00eb kontrollosh raft_multiplier-in. Ky \u00ebsht\u00eb nj\u00eb parametr i serverit Consul. N\u00eb parazgjedhje, ai \u00ebsht\u00eb vendosur n\u00eb vler\u00ebn 5. Kjo vler\u00eb rekomandohet n\u00eb dokumentacion p\u00ebr ambientet staging. N\u00eb thelb, kjo ndikon n\u00eb frekuenc\u00ebn e shk\u00ebmbimeve t\u00eb mesazheve mes an\u00ebtar\u00ebve t\u00eb rrjetit Consul. Pra, ky parametr ndikon n\u00eb shpejt\u00ebsin\u00eb e komunikimit sh\u00ebrbyes mes an\u00ebtar\u00ebve t\u00eb klasterit Consul. Dhe p\u00ebr producim, tashm\u00eb rekomandohet ta reduktosh q\u00eb nyjat t\u00eb shk\u00ebmbejn\u00eb mesazhe m\u00eb shpesh. <\/li>\n<li>Nj\u00eb tjet\u00ebr mund\u00ebsi q\u00eb filluam ta p\u00ebrdorim \u00ebsht\u00eb rritja e prioritetit t\u00eb proceseve t\u00eb Consul-it mes proceseve t\u00eb tjera p\u00ebr planifikuesin e proceseve t\u00eb sistemit operativ. Ka nj\u00eb parametrin \"nice\", i cili pik\u00ebrisht p\u00ebrcakton prioritetin e proceseve q\u00eb merret parasysh nga planifikuesi i OS gjat\u00eb planifikimit. Ne ul\u00ebm vler\u00ebn e nice p\u00ebr agjent\u00ebt e Consul-it, dmth. rrit\u00ebm prioritetin, n\u00eb m\u00ebnyr\u00eb q\u00eb sistemi operativ t'u jepte m\u00eb shum\u00eb koh\u00eb proceseve t\u00eb Consul p\u00ebr t\u00eb punuar dhe p\u00ebr t\u00eb ekzekutuar kodin e tij. N\u00eb rastin ton\u00eb, kjo e zgjidhi problemin ton\u00eb. <\/li>\n<li>Nj\u00eb opsion tjet\u00ebr \u00ebsht\u00eb q\u00eb t\u00eb mos p\u00ebrdorsh Consul. Kam nj\u00eb mik, i cili \u00ebsht\u00eb nj\u00eb mb\u00ebshtet\u00ebs i madh i Etcd. Ne rregullisht debatojm\u00eb se cila \u00ebsht\u00eb m\u00eb e mira, Etcd apo Consul. Megjithat\u00eb, sa i p\u00ebrket asaj se cila \u00ebsht\u00eb m\u00eb e mir\u00eb, zakonisht arrijm\u00eb n\u00eb p\u00ebrfundimin se Consul ka nj\u00eb agjent q\u00eb duhet t\u00eb jet\u00eb aktiv n\u00eb \u00e7do nyje me baz\u00ebn e t\u00eb dh\u00ebnave. Dometh\u00ebn\u00eb, nd\u00ebrveprimi i Patroni me klasterin Consul kalon p\u00ebrmes k\u00ebtij agjenti. Dhe ky agjent b\u00ebhet pika e ngusht\u00eb. N\u00ebse ndodh di\u00e7ka me agjentin, at\u00ebher\u00eb Patroni nuk mund t\u00eb punoj\u00eb me klasterin Consul. Kjo \u00ebsht\u00eb nj\u00eb problem. N\u00eb rastin e Etcd, nuk ka asnj\u00eb agjent. Patroni mund t\u00eb punoj\u00eb drejtp\u00ebrdrejt me list\u00ebn e server\u00ebve Etcd dhe t\u00eb komunikoj\u00eb me ta. N\u00eb k\u00ebt\u00eb k\u00ebndv\u00ebshtrim, n\u00ebse p\u00ebrdorni Etcd n\u00eb kompanin\u00eb tuaj, ndoshta Etcd do t\u00eb ishte zgjedhja m\u00eb e mir\u00eb sesa Consul. Por ne te klient\u00ebt tan\u00eb, gjithmon\u00eb jemi t\u00eb kufizuar nga ajo q\u00eb ka zgjedhur dhe p\u00ebrdor klienti. Dhe n\u00eb shumic\u00ebn e rasteve, Consul \u00ebsht\u00eb i pranish\u00ebm te t\u00eb gjith\u00eb klient\u00ebt. <\/li>\n<li>Dhe pika e fundit \u00ebsht\u00eb t\u00eb rishikojm\u00eb vlerat e parametrave. Ne mund t\u00eb rrisim k\u00ebto parametra n\u00eb an\u00ebn e madhe duke shpresuar se problemet tona t\u00eb shkurtra n\u00eb rrjet do t\u00eb jen\u00eb t\u00eb shkurtra dhe nuk do t\u00eb bien brenda intervalit t\u00eb k\u00ebtyre parametrave. K\u00ebshtu, ne mund t\u00eb zvog\u00eblojm\u00eb agresivitetin e Patroni p\u00ebr t\u00eb kryer autodiskrimim, n\u00ebse ndodhin ndonj\u00eb problem n\u00eb rrjet.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/f0043050da20f6368dabf66ec9a4eade.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mendoj se shum\u00eb nga ata q\u00eb p\u00ebrdorin Patroni jan\u00eb t\u00eb njohur me k\u00ebt\u00eb komand\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/9f78f59dab166e47ac78436802156d04.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kjo komand\u00eb tregon gjendjen aktuale t\u00eb klasterit. Dhe me sy t\u00eb par\u00eb, kjo pamje mund t\u00eb duket normale. Kemi nj\u00eb master, kemi nj\u00eb replik\u00eb, nuk ka asnj\u00eb vones\u00eb n\u00eb replikim. Por kjo pamje \u00ebsht\u00eb normale derisa t\u00eb dim\u00eb se n\u00eb k\u00ebt\u00eb klaster duhet t\u00eb ket\u00eb tre nod\u00eb, e jo dy. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/a39c891f8620ba210b6bce0727e0fa8b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr k\u00ebt\u00eb arsye, ndodhi autodiskrimimi. Pas k\u00ebtij autodiskrimimi, ne humb\u00ebm replik\u00ebn. Duhet t\u00eb zbulojm\u00eb se pse ajo humbi dhe ta kthejm\u00eb at\u00eb p\u00ebrs\u00ebri, ta rikuperojm\u00eb. Dhe ne p\u00ebrs\u00ebri shkojm\u00eb n\u00eb loge dhe shohim pse ndodhi autodiskrimimi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/e6e67d46cb20c8d7e58c7505157f68e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb rast, replik\u00eb e dyt\u00eb u b\u00eb master. K\u00ebtu gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/b86ccea68b0c6013a23bbd2804e48320.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe ne duhet t\u00eb shikojm\u00eb tashm\u00eb n\u00eb replik\u00ebn q\u00eb ka humbur dhe q\u00eb nuk \u00ebsht\u00eb n\u00eb klaster. Hapim logjet e Patroni dhe shohim se kemi pasur nj\u00eb problem n\u00eb faz\u00ebn e lidhjes me klasterin n\u00eb procesin e pg_rewind. P\u00ebr t'u lidhur me klasterin, duhet t\u00eb kthejm\u00eb regjistrin e transaksioneve, t\u00eb k\u00ebrkojm\u00eb regjistrin e nevojsh\u00ebm t\u00eb transaksioneve nga masteri dhe t\u00eb arrijm\u00eb masterin p\u00ebrmes tij. <\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb rast, ne nuk kemi regjistrin e transaksioneve dhe replika nuk mund t\u00eb ndizet. P\u00ebr rrjedhoj\u00eb, ne e ndalojm\u00eb Postgres-in me nj\u00eb gabim. Dhe prandaj ajo nuk \u00ebsht\u00eb n\u00eb klaster. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/dadbd44b766674b719d85781ef7f0caa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Duhet t\u00eb kuptojm\u00eb pse ajo nuk \u00ebsht\u00eb n\u00eb klaster dhe pse nuk kishte logje. Ne shkojm\u00eb te masteri i ri dhe shohim \u00e7far\u00eb ka n\u00eb logjet e tij. Del se kur u b\u00eb pg_rewind, ndodhi nj\u00eb checkpoint. Dhe nj\u00eb pjes\u00eb e vjet\u00ebr e regjistrave t\u00eb transaksioneve thjesht u rinominua. Kur masteri i vjet\u00ebr p\u00ebrpiqej t\u00eb lidhej me masterin e ri dhe t\u00eb k\u00ebrkonte k\u00ebto logje, ato ishin tashm\u00eb t\u00eb rinominuara, thjesht nuk ishin m\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/f2d5c37324f9436b2bdad1290612d86f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Un\u00eb kam krahasuar timestamps kur kan\u00eb ndodhur k\u00ebto ngjarje. Dhe diferenca \u00ebsht\u00eb n\u00eb t\u00eb v\u00ebrtet\u00eb vet\u00ebm 150 milisekonda, pra n\u00eb 369 milisekonda p\u00ebrfundoi checkpointi, u rinovuan segmentet e WAL. Dhe vet\u00ebm n\u00eb 517 milisekonda, pas 150 milisekondave, filloi rewinding n\u00eb replik\u00ebn e vjet\u00ebr. Pra, vet\u00ebm 150 milisekonda na mjaftuan q\u00eb replika t\u00eb mos mund t\u00eb lidh\u00eb dhe t\u00eb punoj\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/99dd80deb8466bfc3aff568456e07102.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb opionesh ka?<\/p>\n<p><\/p>\n<p>Fillimisht kemi p\u00ebrdorur slotet e replikimit. Na dukej se ishte mir\u00eb. Megjithat\u00eb, n\u00eb faz\u00ebn e par\u00eb t\u00eb eksploatimit i \u00e7uam slotet m\u00ebnjan\u00eb. Na dukej se, n\u00ebse slotet do t\u00eb grumbullonin shum\u00eb segmente WAL, mund t\u00eb rr\u00ebzonim masterin. Ai do t\u00eb bie. Ndjem\u00eb pak pa slotet. Dhe kuptuam se na nevojiteshin slotet, prandaj i kthyem ato. <\/p>\n<p><\/p>\n<p>Por k\u00ebtu ka nj\u00eb problem, sepse kur masteri kalon n\u00eb replik\u00eb, ai fshin slotet dhe s\u00eb bashku me slotet fshin segmentet WAL. Dhe p\u00ebr t\u00eb eliminuar shfaqjen e k\u00ebsaj problemi, vendos\u00ebm t\u00eb rrisim parametrin wal_keep_segments. Ai \u00ebsht\u00eb 8 segmente si parazgjedhje. E rrit\u00ebm n\u00eb 1,000 dhe pam\u00eb sa hap\u00ebsir\u00eb t\u00eb lir\u00eb kishim. Dhe ne dhuruam 16 gigabajt p\u00ebr wal_keep_segments. Pra, gjat\u00eb kalimit, gjithmon\u00eb kemi nj\u00eb rezerv\u00eb prej 16 gigabajt\u00ebsh t\u00eb regjistrimeve t\u00eb transaksioneve n\u00eb t\u00eb gjitha nyjet.<\/p>\n<p><\/p>\n<p>Dhe plus \u2013 kjo \u00ebsht\u00eb akoma e r\u00ebnd\u00ebsishme p\u00ebr detyrat afatgjata t\u00eb mir\u00ebmbajtjes. Supozoni se duhet t\u00eb p\u00ebrdit\u00ebsojm\u00eb nj\u00eb nga replikat. Dhe duam ta ndalim at\u00eb. Duhet t\u00eb p\u00ebrdit\u00ebsojm\u00eb softin, ndoshta sistemin operativ, di\u00e7ka tjet\u00ebr. Dhe kur e ndalim replik\u00ebn, sloti p\u00ebr at\u00eb replik\u00eb eliminohet gjithashtu. N\u00ebse p\u00ebrdorim nj\u00eb wal_keep_segments t\u00eb vog\u00ebl, at\u00ebher\u00eb n\u00eb munges\u00eb t\u00eb vazhdueshme t\u00eb replik\u00ebs, regjistrat e transaksionit do t\u00eb riprodhohen. Ne do ta ngrem\u00eb replik\u00ebn, ajo do t\u00eb k\u00ebrkoj\u00eb ato regjistra transaksionesh ku u ndal, por mund t\u00eb mos jen\u00eb t\u00eb pranish\u00ebm te masteri. Dhe replika gjithashtu nuk do t\u00eb mund t\u00eb lidh\u00eb. Prandaj, ne mbajm\u00eb nj\u00eb rezerv\u00eb t\u00eb madhe regjistrash.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/dad55c828128ce92f649a99cc53ce54b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/63e70f0b098567f3a6d4fd66a0c293bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne kemi nj\u00eb baz\u00eb production. Aty tashm\u00eb jan\u00eb projektet n\u00eb pun\u00eb. <\/p>\n<p><\/p>\n<p>Ka ndodhur nj\u00eb failure. Ne hyjm\u00eb dhe shohim \u2013 gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull, replikat jan\u00eb n\u00eb vend, nuk ka vonesa n\u00eb replikim. Nuk ka gabime n\u00eb regjistra gjithashtu, gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull. <\/p>\n<p><\/p>\n<p>Ekipa e produktit thot\u00eb se duhet t\u00eb ket\u00eb disa t\u00eb dh\u00ebna, por ne i shohim n\u00eb nj\u00eb burim, nd\u00ebrsa n\u00eb baz\u00eb nuk i shohim. Dhe duhet t\u00eb kuptojm\u00eb se \u00e7far\u00eb i ndodhi atyre. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/568ca9aa31680d5e0c9d4ed9693b14e6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E qart\u00eb, pg_rewind i ka fshir\u00eb ata. Ne e kuptuam menj\u00ebher\u00eb k\u00ebt\u00eb, por shkuam t\u00eb shihnim se \u00e7far\u00eb ndodhi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/a8fee389201d96e81761cd276c5265c3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb log-e gjithmon\u00eb mund t\u00eb gjejm\u00eb kur ndodhi d\u00ebshtimi, kush u b\u00eb masteri dhe mund t\u00eb p\u00ebrcaktojm\u00eb kush ishte masteri i vjet\u00ebr dhe kur vendosi t\u00eb b\u00ebhej replik\u00eb, pra na nevojiten k\u00ebto log-e p\u00ebr t\u00eb zbuluar at\u00eb sasi t\u00eb regjistrimeve t\u00eb transaksioneve q\u00eb \u00ebsht\u00eb humbur.<\/p>\n<p><\/p>\n<p>Mjeshtri yn\u00eb i vjet\u00ebr u ribashkua. Dhe n\u00eb autostart ishte e regjistruar Patroni. Patroni u aktivizua. Ai m\u00eb pas nisi Postgres. Sakt\u00ebsisht para fillimit t\u00eb Postgres-it dhe para se ta b\u00ebnte at\u00eb replik\u00eb, Patroni nisi procesin pg_rewind. N\u00eb p\u00ebrputhje me k\u00ebt\u00eb, ai fshiu nj\u00eb pjes\u00eb t\u00eb regjistrave t\u00eb transaksioneve, shkarkoi t\u00eb rinjt\u00eb dhe u lidh. K\u00ebtu Patroni punoi shk\u00eblqyesh\u00ebm, pra ashtu si\u00e7 duhej. Klasteri yn\u00eb u rikuperua. Kishim 3 n\u00ebnshkrime, pas failoverit 3 n\u00ebnshkrime \u2013 gjith\u00e7ka \u00ebsht\u00eb perfekte. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/b747a24f53e20ed098c2dc0afc79bead.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne humb\u00ebm nj\u00eb pjes\u00eb t\u00eb t\u00eb dh\u00ebnave. Dhe na nevojitet t\u00eb kuptojm\u00eb sa kemi humbur. Po k\u00ebrkojm\u00eb pik\u00ebrisht at\u00eb moment kur ndodhi rewind-i. Mund ta gjejm\u00eb k\u00ebt\u00eb sipas k\u00ebtyre sh\u00ebnimeve n\u00eb log. Rewind nisi, b\u00ebri di\u00e7ka dhe p\u00ebrfundoi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/5b7bacffb52e3ccd529a3a734c441295.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na nevojitet t\u00eb gjejm\u00eb at\u00eb pozicion n\u00eb regjistrin e transaksioneve, ku ndaloi masteri i vjet\u00ebr. N\u00eb k\u00ebt\u00eb rast \u2013 \u00ebsht\u00eb ky sh\u00ebnim. Dhe na nevojitet nj\u00eb sh\u00ebnim i dyt\u00eb, pra ajo distanc\u00eb, me t\u00eb cil\u00ebn ndan masteri i vjet\u00ebr nga i ri. <\/p>\n<p><\/p>\n<p>Ne marrim ndryshimin e zakonsh\u00ebm pg_wal_lsn_diff dhe krahasojm\u00eb k\u00ebto dy sh\u00ebnime. N\u00eb k\u00ebt\u00eb rast, ne marrim 17 megabajt. \u00c7far\u00eb \u00ebsht\u00eb shum\u00eb e \u00e7far\u00eb \u00ebsht\u00eb pak, secili e vendos p\u00ebr vete. Sepse p\u00ebr disa 17 megabajt \u00ebsht\u00eb pak, p\u00ebr disa t\u00eb tjer\u00eb \u00ebsht\u00eb shum\u00eb dhe e papranueshme. K\u00ebtu \u00e7do nj\u00ebri duhet t\u00eb p\u00ebrcaktoj\u00eb n\u00eb p\u00ebrputhje me nevojat e biznesit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/55335fce85961e159459c38300a0ad12.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por \u00e7far\u00eb zbuluam ne p\u00ebr vete? <\/p>\n<p><\/p>\n<p>S\u00eb pari, ne duhet t\u00eb vendosim p\u00ebr vete \u2013 a na nevojitet gjithmon\u00eb autostart i Patroni pas rinisjes s\u00eb sistemit? Ndodh shpesh q\u00eb duhet t\u00eb hyjm\u00eb n\u00eb masterin e vjet\u00ebr, t\u00eb shohim se sa larg \u00ebsht\u00eb shkuar. Ndoshta, t\u00eb inspektojm\u00eb segmentet e gazet\u00ebs s\u00eb transaksioneve, t\u00eb shohim \u00e7far\u00eb \u00ebsht\u00eb atje. Dhe t\u00eb kuptojm\u00eb \u2013 a mund t\u00eb humbasim k\u00ebta t\u00eb dh\u00ebna apo na nevojitet t\u00eb nisemi n\u00eb nj\u00eb modalitet standalone p\u00ebr t\u00eb nxjerr\u00eb k\u00ebto t\u00eb dh\u00ebna. <\/p>\n<p><\/p>\n<p>Dhe vet\u00ebm pas k\u00ebsaj duhet t\u00eb marrim vendim, n\u00ebse mund t\u2019i hedhim k\u00ebto t\u00eb dh\u00ebna apo mund t\u2019i rikuperojm\u00eb, duke lidhur k\u00ebt\u00eb nyje si replik\u00eb n\u00eb klasterin ton\u00eb.<\/p>\n<p><\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, ekziston parametri \u201cmaximum_lag_on_failover\u201d. Sipas standardit, n\u00ebse nuk m\u00eb tradhton mendja, ky parametr ka vler\u00eb 1 megabajt. <\/p>\n<p><\/p>\n<p>Si e ka punon? N\u00ebse kopja jon\u00eb ndjek me 1 megabajt t\u00eb dh\u00ebnash p\u00ebr vones\u00ebn e replikimit, at\u00ebher\u00eb kjo kopje nuk merr pjes\u00eb n\u00eb zgjedhje. Dhe, n\u00ebse ndodh nj\u00eb ndarje e \u00e7far\u00ebdo lloji, Patroni shikon se cilat kopje kan\u00eb ngecje. N\u00ebse ato kan\u00eb ngecje t\u00eb madhe me shum\u00eb regjistra transaksionesh, ato nuk mund t\u00eb b\u00ebhen master. Kjo \u00ebsht\u00eb nj\u00eb funksion mbrojt\u00ebs shum\u00eb i mirat\u00eb, i cili ndihmon t\u00eb mos humbasim shum\u00eb t\u00eb dh\u00ebna. <\/p>\n<p><\/p>\n<p>Por k\u00ebtu ka nj\u00eb problem q\u00eb vonesa e replikimit n\u00eb klasterin Patroni dhe DCS p\u00ebrdit\u00ebsohet me nj\u00eb interval t\u00eb caktuar. Mendoj se \u00ebsht\u00eb 30 sekonda vlere e paracaktuar ttl.<\/p>\n<p><\/p>\n<p>P\u00ebr rrjedhoj\u00eb, mund t\u00eb ket\u00eb nj\u00eb situat\u00eb ku vonesa e replikimit p\u00ebr kopjet n\u00eb DCS \u00ebsht\u00eb nj\u00eb, nd\u00ebrsa n\u00eb t\u00eb v\u00ebrtet\u00eb mund t\u00eb ket\u00eb nj\u00eb vones\u00eb krejt\u00ebsisht tjet\u00ebr ose nuk ka vones\u00eb fare, dmth, kjo gj\u00eb nuk \u00ebsht\u00eb realtime. Dhe ajo nuk e reflekton gjithmon\u00eb imazhin real. Dhe nuk ia vlef t\u00eb b\u00ebsh logjik\u00eb t\u00eb avancuar mbi t\u00eb. <\/p>\n<p><\/p>\n<p>Dhe rreziku i humbjeve gjithmon\u00eb mbetet. N\u00eb rastin m\u00eb t\u00eb keq kemi nj\u00eb formul\u00eb, nd\u00ebrsa n\u00eb rastin mesatar nj\u00eb formul\u00eb tjet\u00ebr. Pra, kur planifikojm\u00eb implementimin e Patroni dhe vler\u00ebsojm\u00eb se sa t\u00eb dh\u00ebna mund t\u00eb humbasim, duhet t\u00eb mb\u00ebshtetemi n\u00eb k\u00ebto formula dhe t\u00eb kemi nj\u00eb ide t\u00eb p\u00ebraf\u00ebrt se sa t\u00eb dh\u00ebna mund t\u00eb humbasim. <\/p>\n<p><\/p>\n<p>Dhe ka nj\u00eb lajm t\u00eb mir\u00eb. Kur masteri i vjet\u00ebr u largua, ai mund t\u00eb ikte p\u00ebrmes disa proceseve n\u00eb background. Do t\u00eb thot\u00eb, kishte nj\u00eb avto-vakuum, ai shkroi t\u00eb dh\u00ebnat, i ruajti ato n\u00eb regjistrin e transaksionit. Dhe ne mund t'i injorojm\u00eb leht\u00ebsisht ato t\u00eb dh\u00ebna dhe t'i humbasim. Nuk ka asnj\u00eb problem n\u00eb k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/a86e8971ab4ef41b89af9cf0bdf519ba.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja si duken log-et n\u00eb rast se \u00ebsht\u00eb vendosur maximum_lag_on_failover dhe ndodhi nj\u00eb failover, dhe duhet t\u00eb zgjidhet nj\u00eb master i ri. Replica e vler\u00ebson veten si t\u00eb paaft\u00eb p\u00ebr t\u00eb marr\u00eb pjes\u00eb n\u00eb zgjedhje. Ajo refuzon t\u00eb marr\u00eb pjes\u00eb n\u00eb gar\u00ebn p\u00ebr liderin. Dhe pret derisa t\u00eb zgjidhet nj\u00eb master i ri p\u00ebr t'u lidhur me t\u00eb. Kjo \u00ebsht\u00eb nj\u00eb mas\u00eb shtes\u00eb p\u00ebr t\u00eb parandaluar humbjen e t\u00eb dh\u00ebnave.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/f760788e5951facdd08b2069037830fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/c32f26e7526e1873f3bfd7d3693fcc72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu ekipi yn\u00eb produkt shkruajti se produkti i tyre p\u00ebrballet me probleme gjat\u00eb p\u00ebrdorimit t\u00eb Postgres. Megjithat\u00eb, nuk mund t\u00eb hyhet n\u00eb masterin vet\u00eb, sepse \u00ebsht\u00eb i paaksesuesh\u00ebm p\u00ebrmes SSH. Dhe failover-i automatik gjithashtu nuk ndodh. <\/p>\n<p><\/p>\n<p>Ky host u d\u00ebrgua me forc\u00eb p\u00ebr t'u rind\u00ebrtuar. P\u00ebr shkak t\u00eb rind\u00ebrtimit ndodhi nj\u00eb failover automatik, megjith\u00ebse mund t\u00eb ishte b\u00ebr\u00eb edhe nj\u00eb failover manual, si\u00e7 e kuptoj tani. Dhe pas rind\u00ebrtimit ne shkojm\u00eb t\u00eb shikojm\u00eb se \u00e7far\u00eb ndodhi me masterin aktual. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/95efb82e0647a396a21683cd53a69547.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Megjithat\u00eb, ne e dinim paraprakisht q\u00eb kishim probleme me disqet, dometh\u00ebn\u00eb, p\u00ebrmes monitorimit tashm\u00eb e dinim se ku duhej t\u00eb shikonim dhe \u00e7far\u00eb t\u00eb k\u00ebrkonim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/367aaab607d833d96a573ddbbbced502.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne hyr\u00ebm n\u00eb log-un e postgres-it dhe filluam t\u00eb shikonim \u00e7far\u00eb po ndodhte atje. Pam\u00eb komitetet q\u00eb zgjatnin nj\u00eb, dy, tre sekonda, gj\u00eb q\u00eb nuk \u00ebsht\u00eb normale. Pam\u00eb q\u00eb avtokorrigjimi po fillonte shum\u00eb ngadal\u00eb dhe n\u00eb m\u00ebnyr\u00eb t\u00eb \u00e7uditshme. Dhe pam\u00eb skedar\u00eb t\u00eb p\u00ebrkohsh\u00ebm n\u00eb disk. Dometh\u00ebn\u00eb, t\u00eb gjitha k\u00ebto jan\u00eb tregues t\u00eb problemeve me disqet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/7e0cfce7a81901ef9ef736c3fefc8dce.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne hodh\u00ebm nj\u00eb sy n\u00eb sistemin dmesg (n\u00eb log-un e mesazheve t\u00eb kernelit). Dhe pam\u00eb se kishim probleme me nj\u00eb nga disqet. Sistemi i diskut p\u00ebrb\u00ebnte nj\u00eb Raid softuerik. Shikuan \/proc\/mdstat dhe pan\u00eb se na mungonte nj\u00eb disk. Dometh\u00ebn\u00eb, k\u00ebtu \u00ebsht\u00eb nj\u00eb Raid prej 8 disqesh, na mungon nj\u00eb. N\u00ebse e shqyrtojm\u00eb me kujdes slajdin, mund t\u00eb shohim n\u00eb p\u00ebrfundim se disku sde mungon. Pra, n\u00eb terma t\u00eb thjesht\u00eb, disku ka r\u00ebn\u00eb. Kjo shkaktoi probleme n\u00eb disk dhe aplikacionet gjithashtu has\u00ebn probleme gjat\u00eb pun\u00ebs me cluster-in Postgres.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/4b09b3aa761cb504fa79173ef280faac.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>As in this case, Patroni wouldn't have helped us because it doesn't have the task of monitoring server status or disk status. We need to track such situations with external monitoring. We have added disk monitoring to our external monitoring system promptly. <\/p>\n<p><\/p>\n<p>There was a thought \u2014 could fencing or a software watchdog help us? We thought it unlikely because during the issues, Patroni continued to interact with the DCS cluster and didn't see any problems. From the perspective of DCS and Patroni, everything was fine with the cluster, although there were indeed problems with the disk and database availability. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/15fdac78535355d4eb889efcc27efc46.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In my opinion, this is one of the strangest problems I've investigated for a long time; I've read through many logs, dissected them, and dubbed it the cluster-simulating issue. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/b5259774931c290eda6673deb14b6c48.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>The problem was that the old master couldn't become a proper replica; that is, Patroni started it, and Patroni showed that this node was present as a replica, but at the same time, it wasn't a normal replica. You will now see why. I have retained this from the analysis of that problem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/c35a5d102a46764bbf96e5a75ee88171.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe si filloi gjith\u00e7ka? Filloi, ashtu si n\u00eb problemin e m\u00ebparsh\u00ebm, me frenat disk. Kishim komit\u00eb nj\u00eb her\u00eb n\u00eb sekond\u00eb, dy. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/435c1b350a89f288e0e10ca9d5a2ec6e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ishte nd\u00ebrprerje lidhjesh, dmth klient\u00ebt u ndan\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/920cb1f3f3b40578e15e6ff711e85c50.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ishte bllokime t\u00eb ndryshme t\u00eb r\u00ebnd\u00ebsis\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/285d6292d89b928a85e95602ee57d38a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe, p\u00ebr pasoj\u00eb, n\u00ebn sistemi i disqeve nuk ishte shum\u00eb reaktiv. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/ebe71d49360e7f604ecd6a3c8276cb73.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe m\u00eb e misteriozja p\u00ebr mua \u2013 ishte k\u00ebrkesa p\u00ebr ndalim t\u00eb menj\u00ebhersh\u00ebm. Postgres ka tri m\u00ebnyra p\u00ebr t\u00eb shkuar n\u00eb ndalim:<\/p>\n<p><\/p>\n<ul>\n<li>Ka graceful, kur presim q\u00eb t\u00eb gjith\u00eb klient\u00ebt t\u00eb \u00e7aktivizohen vetvetiu. <\/li>\n<li>Ka fast, kur e detyrojm\u00eb klient\u00ebt t\u00eb \u00e7aktivizohen, sepse po shkojm\u00eb p\u00ebr ndalim. <\/li>\n<li>Dhe immediate. N\u00eb k\u00ebt\u00eb rast, immediate as nuk i njofton klient\u00ebt se duhet t\u00eb \u00e7aktivizohen, thjesht ndalon pa paralajm\u00ebrim. T\u00eb gjith\u00eb klient\u00ebt gjithashtu d\u00ebrgohet nj\u00eb mesazh RST nga sistemi operativ (mesazh TCP q\u00eb lidhja \u00ebsht\u00eb nd\u00ebrprer\u00eb dhe klienti nuk ka m\u00eb \u00e7far\u00eb t\u00eb kap\u00eb). <\/li>\n<\/ul>\n<p><\/p>\n<p>Kush e d\u00ebrgoi k\u00ebt\u00eb sinjal? Proceset e prapavij\u00ebs t\u00eb Postgres nuk d\u00ebrgojn\u00eb sinjale t\u00eb tilla nj\u00ebra-tjetr\u00ebs, dmth \u00ebsht\u00eb kill-9. Ata nuk d\u00ebrgojn\u00eb nj\u00ebri-tjetrit di\u00e7ka t\u00eb till\u00eb, ata vet\u00ebm reagojn\u00eb ndaj saj, dmth \u00ebsht\u00eb nj\u00eb rip\u00ebrshtatje emergjente e Postgres. Kush e d\u00ebrgoi, nuk e di. <\/p>\n<p><\/p>\n<p>Shikova pas ekipit \"last\", pash\u00eb nj\u00eb person q\u00eb kishte hyr\u00eb n\u00eb k\u00ebt\u00eb server bashk\u00eb me ne, por e ndjeva veten t\u00eb turp\u00ebruar t\u00eb b\u00ebja pyetje. Mund t\u00eb ket\u00eb qen\u00eb kill -9. Un\u00eb do t\u00eb kisha par\u00eb kill -9 n\u00eb log, sepse Postgres shkruan q\u00eb mori kill -9, por nuk e pash\u00eb k\u00ebt\u00eb n\u00eb log. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/fe8e844649cea3384ebfde86e36eba44.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Duke vazhduar hetimin, pash\u00eb q\u00eb Patroni nuk kishte shkruar n\u00eb log p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb - 54 sekonda. Dhe n\u00ebse krahasoj dy timestamp, ka qen\u00eb rreth 54 sekonda pa mesazhe. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/ffb1c4db3d7de591d77d56ed2fcc4f2a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe gjat\u00eb k\u00ebsaj kohe ndodhi auto failover. Patroni punoi p\u00ebrs\u00ebri perfekt. Mjeshtri yn\u00eb i vjet\u00ebr nuk ishte i aksesuesh\u00ebm, ndodhi di\u00e7ka me t\u00eb. Dhe nisi zgjedhja e nj\u00eb mjeshtri t\u00eb ri. K\u00ebtu gjith\u00e7ka funksionoi mir\u00eb. Pgsql01 u b\u00eb lideri i ri. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/6b2457653e9f77af44cd64b4aff021a0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kemi nj\u00eb replik\u00eb q\u00eb u b\u00eb mjesht\u00ebr. Dhe kemi nj\u00eb replik\u00eb t\u00eb dyt\u00eb. Dhe me replik\u00ebn e dyt\u00eb kishim pik\u00ebrisht probleme. Ajo p\u00ebrpiqej t\u00eb rikonstruktohej. Sa kuptoj, ajo p\u00ebrpiqej t\u00eb ndryshonte recovery.conf, t\u00eb riniste Postgres dhe t\u00eb lidhej me mjeshtrin e ri. Ajo \u00e7do 10 sekonda shkruan mesazhe q\u00eb po p\u00ebrpiqet, por nuk po arrin. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/381818f189e19c3e1154074b4652f837.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe gjat\u00eb k\u00ebtyre p\u00ebrpjekjeve, sinjali i mbylljes s\u00eb menj\u00ebhershme i d\u00ebrgohet masterit t\u00eb vjet\u00ebr. Masteri ri starton. Po ashtu, rikuperimi ndalon, sepse masteri i vjet\u00ebr kalon n\u00eb ri-startim. Pra, kloni nuk mund t\u00eb lidhet me t\u00eb, sepse \u00ebsht\u00eb n\u00eb modalitetin e fikjes. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/d8a8cde925fa8fe601d44ab908ae69dc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb moment ajo filloi t\u00eb funksionoj\u00eb, por replikimi nuk u aktivizua. <\/p>\n<p><\/p>\n<p>Kam vet\u00ebm nj\u00eb hipotez\u00eb, q\u00eb n\u00eb recovery.conf ishte adresa e masterit t\u00eb vjet\u00ebr. Dhe kur doli masteri i ri, kloni i dyt\u00eb vazhdonte t\u00eb p\u00ebrpiqej t\u00eb lidhej me masterin e vjet\u00ebr. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/425ea3af1f1e186f4760e1fb1f5419fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kur Patroni startoi n\u00eb klonin e dyt\u00eb, nodi u nis, por nuk mundi t\u00eb lidhej p\u00ebr replikim. K\u00ebshtu q\u00eb u formua nj\u00eb vones\u00eb e replikimit, e cila dukej k\u00ebshtu. Pra, t\u00eb tre nodet ishin n\u00eb vend, por nody i dyt\u00eb mbeti prapa. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/f564eacd9944666c9a3f5bea634ede6b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, n\u00ebse shikoni log-\u00ebt q\u00eb ishin shkruar, mund t\u00eb v\u00ebreni se replikimi nuk mund t\u00eb iniciohej, sepse regjistrat e transaksioneve ndryshojn\u00eb. Dhe ato regjistra t\u00eb transaksioneve q\u00eb ofron masteri, q\u00eb jan\u00eb t\u00eb specifikuara n\u00eb recovery.conf, thjesht nuk i p\u00ebrshtaten nodit ton\u00eb aktual. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/6b09947d157c9ef0a190da2df2cb5892.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe k\u00ebtu kam b\u00ebr\u00eb nj\u00eb gabim. Duhej t\u00eb isha shkruar p\u00ebr t\u00eb kontrolluar \u00e7far\u00eb kishte aty n\u00eb recovery.conf, p\u00ebr t\u00eb verifikuar hipotez\u00ebn time se ne po lidhnim me masterin e gabuar. Por at\u00ebher\u00eb sapo po merresha me k\u00ebt\u00eb dhe nuk m\u00eb erdhi n\u00eb mendje, ose pash\u00eb q\u00eb replikimi po vonohej dhe do t\u00eb duhej ta riparoj, pra ndihmova si\u00e7 mundesha. Kjo ishte gabimi im. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/159f2256fd81428fd0d82a255528887d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>30 minuta m\u00eb von\u00eb erdhi administrator, pra e rinisja Patroni n\u00eb replik\u00eb. Isha ndjer\u00eb i pafat me t\u00eb, mendova se do t\u00eb duhej ta riparoja. Dhe mendova \u2013 do ta rinis Patroni, ndoshta do dal\u00eb ndonj\u00eb gj\u00eb e mir\u00eb. U hap recovery. Dhe baza madje u hap, ishte gati t\u00eb priste lidhjet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/aeac98750386c8389d39e006a229cc85.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Replikimi filloi. Por pas nj\u00eb minute ajo u ndal me nj\u00eb gabim se nuk i p\u00ebrshtaten regjistrat e transaksioneve. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/17eaba000a79c80c29d1bc3902de05e6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mendova se do ta rinisja p\u00ebrs\u00ebri. E rinisa p\u00ebrs\u00ebri Patroni, p\u00ebrve\u00e7 se nuk e rinisa Postgres, por rinisa sakt\u00ebsisht Patroni me shpres\u00ebn se ai do ta hap\u00eb baz\u00ebn n\u00eb m\u00ebnyr\u00eb magjike. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/a85b38e033c45ad73da317f41e0ef24a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Replikimi u rinis s\u00ebrish, por shenjat n\u00eb regjistrin e transaksioneve ishin ndryshe, ato nuk ishin ato q\u00eb ishin gjat\u00eb p\u00ebrpjekjes s\u00eb m\u00ebparshme p\u00ebr t\u00eb nisur. Replikimi u ndal s\u00ebrish. Dhe mesazhi ishte pak m\u00eb i ndrysh\u00ebm. Dhe p\u00ebr mua, ai nuk ishte shum\u00eb informues. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/fd90d708230bd54af685786c7e361ee1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe k\u00ebtu m\u00eb vjen n\u00eb mendje \u2013 \u00e7far\u00eb n\u00ebse ri-startoj Postgres, gjat\u00eb k\u00ebsaj kohe t\u00eb b\u00ebj nj\u00eb checkpoint n\u00eb masterin aktual, p\u00ebr t\u00eb zhvendosur pik\u00ebn n\u00eb regjistrin e transaksioneve pak m\u00eb p\u00ebrpara, n\u00eb m\u00ebnyr\u00eb q\u00eb rikuperimi t\u00eb fillonte nga nj\u00eb moment tjet\u00ebr? Plus, kishim edhe disa rezervat WAL. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/19e67f95d1a74141a013947c9aa39e38.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rini-startova Patroni, b\u00ebra disa checkpoints n\u00eb master, disa pika t\u00eb rikthimit n\u00eb replik\u00eb, kur ajo u hap. Dhe kjo ndihmoi. Mendova p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb se pse kjo ndihmoi dhe se si ndodhi kjo. Dhe replika u nis. Dhe replikimi nuk u nd\u00ebrpre m\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/418ca59a681be84f51ed374a73a759c9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb problem i till\u00eb p\u00ebr mua \u00ebsht\u00eb nj\u00eb nga m\u00eb misterioz\u00ebt, mbi t\u00eb cilin ende po mendoj, se \u00e7far\u00eb ndodhi n\u00eb t\u00eb v\u00ebrtet\u00eb. <\/p>\n<p><\/p>\n<p>Cilat jan\u00eb p\u00ebrfundimet k\u00ebtu? Patroni mund t\u00eb punoj\u00eb si\u00e7 ishte menduar pa asnj\u00eb gabim. Por, kjo nuk \u00ebsht\u00eb nj\u00eb garanci 100% q\u00eb gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull. Nj\u00eb replik\u00eb mund t\u00eb ngrihet, por mund t\u00eb jet\u00eb n\u00eb nj\u00eb gjendje gjysm\u00eb-funksionale, dhe aplikacioni nuk duhet t\u00eb punoj\u00eb me nj\u00eb replik\u00eb t\u00eb till\u00eb, pasi do t\u00eb ket\u00eb t\u00eb dh\u00ebna t\u00eb vjetra. <\/p>\n<p><\/p>\n<p>Dhe pas \u00e7do failover-i, gjithmon\u00eb duhet t\u00eb kontrolloni q\u00eb gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull me klasterin, pra, t\u00eb ket\u00eb numrin e duhur t\u00eb replikave, dhe t\u00eb mos ket\u00eb vonesa n\u00eb replikim.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/aca7047ff33d3efe14071b798b554091.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe gjat\u00eb shqyrtimit t\u00eb k\u00ebtyre problemeve, do t\u00eb formuloj rekomandime. Kam p\u00ebrgatitur dy slajde p\u00ebr to. Besoj se t\u00eb gjitha histori mund t\u00eb ishin bashkuar n\u00eb dy slajde dhe vet\u00ebm ato t\u00eb ishin treguar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/d4ad31b26d83c8846fe4097a11d70849.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kur p\u00ebrdorni Patroni, duhet patjet\u00ebr t\u00eb keni monitorim. Duhet gjithmon\u00eb t\u00eb dini kur ka ndodhur nj\u00eb auto-failover, sepse, n\u00ebse nuk e dini q\u00eb keni pasur nj\u00eb auto-failover, nuk e kontrolloni klasterin. Dhe kjo \u00ebsht\u00eb e keqe.<\/p>\n<p><\/p>\n<p>Pas \u00e7do failover-i, gjithmon\u00eb duhet t\u00eb kontrollojm\u00eb dorazi klasterin. Duhet t\u00eb sigurohemi q\u00eb gjithmon\u00eb t\u00eb kemi numrin e sakt\u00eb t\u00eb replikave, t\u00eb mos ket\u00eb vonesa n\u00eb replikim, dhe n\u00eb regjistrat t\u00eb mos ket\u00eb gabime t\u00eb lidhura me replikimin e rrjedh\u00ebs, me Patroni, me sistemin DCS.<\/p>\n<p><\/p>\n<p>Automatika mund t\u00eb funksionoj\u00eb me sukses, Patroni \u00ebsht\u00eb nj\u00eb mjet shum\u00eb i mir\u00eb. Ai mund t\u00eb funksionoj\u00eb, por kjo nuk do ta \u00e7oj\u00eb grupin n\u00eb gjendjen e duhur. Dhe n\u00ebse nuk e m\u00ebsojm\u00eb k\u00ebt\u00eb, do t\u00eb kemi probleme.<\/p>\n<p><\/p>\n<p>Dhe Patroni nuk \u00ebsht\u00eb nj\u00eb plumb argjendi. Ne duhet t\u00eb kemi gjithsesi nj\u00eb kuptim se si punon Postgres, si funksionon replikimi dhe se si Patroni punon me Postgres, dhe si sigurohet nd\u00ebrveprimi mes nyjave. Kjo \u00ebsht\u00eb e nevojshme p\u00ebr t\u00eb ditur si t\u00eb zgjidhim problemet q\u00eb shfaqen me duar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/ea4162df3561d2ea7001f2ef6788eaaa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si e qasem un\u00eb \u00e7\u00ebshtjen e diagnostikimit? Ka ndodhur q\u00eb ne punojm\u00eb me klient\u00eb t\u00eb ndrysh\u00ebm dhe askujt nuk i ka steka ELK, k\u00ebshtu q\u00eb e kemi t\u00eb nevojshme t\u00eb merremi me logjet, duke hapur 6 konsola dhe 2 tab. N\u00eb nj\u00eb tab jan\u00eb logjet e Patronit p\u00ebr \u00e7do nyj\u00eb, n\u00eb tab tjet\u00ebr jan\u00eb logjet e Consul-it ose Postgres-it sipas nevoj\u00ebs. T\u00eb diagnostikosh k\u00ebt\u00eb \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb. <\/p>\n<p><\/p>\n<p>Cilat qasje kam zhvilluar? Si fillim, gjithmon\u00eb shikoj kur ka ardhur fileveri. Dhe p\u00ebr mua kjo \u00ebsht\u00eb nj\u00eb ndarje. Shikoj \u00e7far\u00eb ka ndodhur para fileverit, gjat\u00eb fileverit dhe pas fileverit. Fileveri ka dy etiketa: koha e fillimit dhe e p\u00ebrfundimit. <\/p>\n<p><\/p>\n<p>Pastaj, un\u00eb shikoj ngjarjet n\u00eb logjet para d\u00ebshtimit, q\u00eb parashikuan d\u00ebshtimin, dmth. po k\u00ebrkoj arsyet pse ndodhi d\u00ebshtimi. <\/p>\n<p><\/p>\n<p>Dhe kjo jep nj\u00eb pamje se \u00e7far\u00eb ndodhi dhe \u00e7far\u00eb mund t\u00eb b\u00ebj n\u00eb t\u00eb ardhmen q\u00eb rrethana t\u00eb tilla t\u00eb mos ndodhin (dhe si pasoj\u00eb, q\u00eb d\u00ebshtimi t\u00eb mos ndodh\u00eb).<\/p>\n<p><\/p>\n<p>Dhe ku shikojm\u00eb zakonisht? Un\u00eb shikoj:<\/p>\n<p><\/p>\n<ul>\n<li>Fillimisht n\u00eb logjet e Patroni. <\/li>\n<li>Pastaj shikoj logjet e Postgres, ose logjet DCS n\u00eb var\u00ebsi t\u00eb asaj q\u00eb gjendet n\u00eb logjet e Patroni. <\/li>\n<li>Dhe logjet e sistemit gjithashtu ndonj\u00ebher\u00eb ofrojn\u00eb nj\u00eb kuptim t\u00eb asaj q\u00eb ishte shkak i d\u00ebshtimit. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/a53618e366020e1a550d852fc308c188.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si e shoh Patroni? Patroni m\u00eb p\u00eblqen shum\u00eb. N\u00eb mendimin tim, kjo \u00ebsht\u00eb gj\u00ebja m\u00eb e mir\u00eb q\u00eb ekziston sot. Njoh shum\u00eb produkte t\u00eb tjera. K\u00ebto jan\u00eb Stolon, Repmgr, Pg_auto_failover, PAF. 4 mjete. I kam provuar t\u00eb gjitha. Patroni m\u00eb p\u00eblqeu m\u00eb shum\u00eb. <\/p>\n<p><\/p>\n<p>N\u00ebse m\u00eb pyesin: \"A rekomandoj Patroni?\". Do t\u00eb them po, sepse m\u00eb p\u00eblqen Patroni. Dhe, besoj se kam m\u00ebsuar ta p\u00ebrdor. <\/p>\n<p><\/p>\n<p>N\u00ebse jeni t\u00eb interesuar t\u00eb shikoni \u00e7far\u00eb probleme t\u00eb tjera ekzistojn\u00eb me Patroni, p\u00ebrve\u00e7 atyre q\u00eb kam p\u00ebrmendur, gjithmon\u00eb mund t\u00eb shkoni n\u00eb faqen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/zalando\/patroni\/issues\/\">issues<\/a><\/noindex> n\u00eb GitHub. Atje ka shum\u00eb histori t\u00eb ndryshme dhe diskutojn\u00eb shum\u00eb probleme interesante. Dhe n\u00eb fund, disa bug-e jan\u00eb regjistruar dhe zgjidhur, pra \u00ebsht\u00eb nj\u00eb lexim interesant. <\/p>\n<p><\/p>\n<p>Atje ka histori interesante p\u00ebr m\u00ebnyr\u00ebn se si ndokush i sh\u00ebnon veten n\u00eb k\u00ebmb\u00eb. Shum\u00eb edukative. Lexon dhe kupton se nuk duhet ta b\u00ebsh at\u00eb. Kam sh\u00ebnuar nj\u00eb shenj\u00eb p\u00ebr veten. <\/p>\n<p><\/p>\n<p>Dhe do t\u00eb donja t\u00eb shprehja fal\u00ebnderimin tim t\u00eb madh p\u00ebr kompanin\u00eb Zalando p\u00ebr zhvillimin e k\u00ebtij projekti, ve\u00e7an\u00ebrisht Aleksandrit Kukushkin dhe Aleksej Kljukin. Aleksej Kljukin \u00ebsht\u00eb nj\u00eb nga bashk\u00ebautor\u00ebt, ai nuk punon m\u00eb n\u00eb Zalando, por k\u00ebta jan\u00eb dy njer\u00ebz q\u00eb filluan t\u00eb punojn\u00eb me k\u00ebt\u00eb produkt. <\/p>\n<p><\/p>\n<p>Dhe besoj se Patroni \u00ebsht\u00eb nj\u00eb gj\u00eb shum\u00eb e shk\u00eblqyer. Jam i k\u00ebnaqur q\u00eb ekziston, \u00ebsht\u00eb interesante. Dhe nj\u00eb fal\u00ebnderim i madh p\u00ebr t\u00eb gjith\u00eb kontribuuesit q\u00eb shkruajn\u00eb patch-e n\u00eb Patroni. Shpresoj q\u00eb Patroni, me kalimin e koh\u00ebs, t\u00eb b\u00ebhet m\u00eb i pjekur, m\u00eb cool dhe m\u00eb funksional. Ai \u00ebsht\u00eb funksional n\u00eb k\u00ebt\u00eb moment, por shpresoj se do t\u00eb b\u00ebhet edhe m\u00eb i mir\u00eb. Pra, n\u00ebse planifikoni ta p\u00ebrdorni Patroni, mos u frik\u00ebsoni. \u00cbsht\u00eb nj\u00eb zgjidhje e mir\u00eb, mund ta implementoni dhe p\u00ebrdorni. <\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb t\u00ebr\u00eb. N\u00ebse keni pyetje, pyetni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Histori d\u00ebshtimi t\u00eb Patroni ose Si t\u00eb d\u00ebshtoni cluster-in tuaj PostgreSQL. Aleksei Lesovski\" src=\"\/wp-content\/uploads\/2020\/07\/85c2fef2455999b48413c9fc3b235ed6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pyetje<\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr raportin! N\u00ebse pas filesh errorit ende duhet t\u00eb shikojm\u00eb shum\u00eb me kujdes, at\u00ebher\u00eb p\u00ebrse na nevojitet nj\u00eb files error automatik?<\/em> <\/p>\n<p><\/p>\n<p>Sepse kjo \u00ebsht\u00eb nj\u00eb gj\u00eb e re. Ne po punojm\u00eb me t\u00eb vet\u00ebm p\u00ebr nj\u00eb vit. M\u00eb mir\u00eb t\u00eb jemi t\u00eb sigurt. Duam t\u00eb hyjm\u00eb dhe t\u00eb shohim se \u00e7do gj\u00eb ka funksionuar ashtu si duhet. Ky \u00ebsht\u00eb nj\u00eb nivel i mosbesimit t\u00eb rritur - m\u00eb mir\u00eb t\u00eb kontrollojm\u00eb dhe t\u00eb shohim. <\/p>\n<p><\/p>\n<p><em>P\u00ebr shembull, ne hynim dhe kontrollonim n\u00eb m\u00ebngjes, apo jo?<\/em><\/p>\n<p><\/p>\n<p>Jo n\u00eb m\u00ebngjes, ne zakonisht e m\u00ebsojm\u00eb p\u00ebr filesh errorin automatik praktikisht menj\u00ebher\u00eb. Na vijn\u00eb njoftimet, shohim q\u00eb ka ndodhur nj\u00eb files error automatik. Ne hyjm\u00eb dhe kontrollojm\u00eb praktikisht menj\u00ebher\u00eb. Por t\u00eb gjitha k\u00ebto kontrolle duhet t\u00eb jen\u00eb t\u00eb transferuara n\u00eb nivelin e monitorimit. N\u00ebse i drejtohemi Patroni p\u00ebrmes REST API, ka historikun. Nga historia, mund t\u00eb shohim shenjat kohore kur ka ndodhur files errori. N\u00eb baz\u00eb t\u00eb k\u00ebsaj, mund t\u00eb b\u00ebjm\u00eb monitorim. Mund t\u00eb shohim historikun, sa ngjarje ka pasur. N\u00ebse kemi m\u00eb shum\u00eb ngjarje, do t\u00eb thot\u00eb se ka ndodhur nj\u00eb files error automatik. Mund t\u00eb shkojm\u00eb dhe t\u00eb shohim. Ose automatikja jon\u00eb n\u00eb monitorim kontrolloi q\u00eb t\u00eb gjitha replikat jan\u00eb n\u00eb vend, nuk ka vonesa dhe gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull. <\/p>\n<p><\/p>\n<p><em>Faleminderit!<\/em><\/p>\n<p><\/p>\n<p><em>Faleminderit shum\u00eb p\u00ebr tregimin e shk\u00eblqyer! N\u00ebse ne e zhvendosim grumbullin DCS n\u00eb ndonj\u00eb vend larg grumbullit Postgres, a duhet ta mir\u00ebmbajm\u00eb at\u00eb grumbull gjithashtu nga koh\u00eb n\u00eb koh\u00eb? Cilat jan\u00eb praktikat m\u00eb t\u00eb mira p\u00ebr t\u00eb \u00e7aktivizuar disa pjes\u00eb t\u00eb grumbullit DCS, \u00e7far\u00eb t\u00eb b\u00ebjm\u00eb me to etj.? Si funksionon e gjith\u00eb kjo konstruktion? Dhe si mund t\u00eb realizohen k\u00ebto gj\u00ebra?<\/em><\/p>\n<p><\/p>\n<p>P\u00ebr nj\u00eb kompani duhej t\u00eb b\u00ebhej nj\u00eb matric\u00eb problemesh, q\u00eb ndodh n\u00ebse ndonj\u00eb nga komponent\u00ebt ose disa komponent\u00eb dalin jasht\u00eb funksionit. Sipas k\u00ebsaj matrice, ne kalojm\u00eb rregullisht t\u00eb gjith\u00eb komponent\u00ebt dhe nd\u00ebrtuam skenar\u00ebt n\u00eb rast t\u00eb d\u00ebshtimit t\u00eb k\u00ebtyre komponent\u00ebve. P\u00ebr \u00e7do skenar d\u00ebshtimi mund t\u00eb kemi nj\u00eb plan veprimi p\u00ebr rikuperim. Dhe n\u00eb rastin e DCS, kjo b\u00ebhet si pjes\u00eb e infrastruktur\u00ebs standarde. Dhe administratori e menaxhon, dhe ne tashm\u00eb mb\u00ebshtetemi te administrator\u00ebt q\u00eb e menaxhojn\u00eb dhe aft\u00ebsit\u00eb e tij p\u00ebr ta riparuar at\u00eb n\u00eb rast situatash emergjente. N\u00ebse DCS nuk ekziston fare, ne e vendosim at\u00eb, por nuk e ndjekim shum\u00eb, sepse nuk jemi p\u00ebrgjegj\u00ebs p\u00ebr infrastruktur\u00ebn, por japim rekomandime si dhe \u00e7far\u00eb t\u00eb monitorohet. <\/p>\n<p><\/p>\n<p><em>Kjo do t\u00eb thot\u00eb, a e kuptova sakt\u00eb q\u00eb duhet t\u00eb fikim Patroni, t\u00eb fikim failoverin, t\u00eb fikim gjith\u00e7ka para se t\u00eb b\u00ebjm\u00eb di\u00e7ka me gazurat?<\/em><\/p>\n<p><\/p>\n<p>Kjo varet nga sa node ka n\u00eb klasterin DCS. N\u00ebse ka shum\u00eb node dhe ne e dalim jasht\u00eb funksioni vet\u00ebm nj\u00eb nga node-t (replik\u00ebn), at\u00ebher\u00eb klasteri e ruan kuorumin. Dhe Patroni mbetet n\u00eb funksion. Asgj\u00eb nuk aktivizohet. N\u00ebse kemi ndonj\u00eb operacion m\u00eb t\u00eb komplikuar q\u00eb prek m\u00eb shum\u00eb node, mungesa e t\u00eb cil\u00ebve mund t\u00eb shkat\u00ebrroj\u00eb kuorumin, at\u00ebher\u00eb - po, ndoshta ka kuptim ta vendosim Patronin n\u00eb pauz\u00eb. Ka nj\u00eb komand\u00eb p\u00ebrkat\u00ebse - patronictl pause, patronictl resume. Ne thjesht e vendosim n\u00eb pauz\u00eb, dhe failover-i automatik nuk aktivizohet n\u00eb k\u00ebt\u00eb koh\u00eb. Ne b\u00ebjm\u00eb mir\u00ebmbajtje n\u00eb klasterin DCS, pastaj e heqim pauz\u00ebn dhe kemi vazhduar si zakonisht.<\/p>\n<p><\/p>\n<p><em>Faleminderit shum\u00eb!<\/em><\/p>\n<p><\/p>\n<p><em>Faleminderit shum\u00eb p\u00ebr raportin! Si e sheh ekipi i produktit faktin q\u00eb t\u00eb dh\u00ebnat mund t\u00eb humbasin?<\/em> <\/p>\n<p><\/p>\n<p>Ekipet e produktit nuk e b\u00ebjn\u00eb shum\u00eb p\u00ebr k\u00ebt\u00eb, por lider\u00ebt e ekipeve jan\u00eb t\u00eb shqet\u00ebsuar. <\/p>\n<p><\/p>\n<p><em>\u00c7far\u00eb garancish ka atje?<\/em><\/p>\n<p><\/p>\n<p>Garancit\u00eb jan\u00eb shum\u00eb t\u00eb komplikuara. Ka nj\u00eb raport nga Aleksand\u00ebr Kukushkin titulluar \"Si t\u00eb llogarisim RPO dhe RTO\", q\u00eb do t\u00eb thot\u00eb koha e rikuperimit dhe sa t\u00eb dh\u00ebna mund t\u00eb humbasim. Mendoj se duhet t\u00eb gjejm\u00eb k\u00ebto prezantime dhe t'i studiojm\u00eb ato. Sa e mbaj mend, aty ka hapa t\u00eb ve\u00e7ant\u00eb se si t\u00eb llogaritni k\u00ebto gj\u00ebra. Sa transaksione mund t\u00eb humbasim, sa t\u00eb dh\u00ebna mund t\u00eb humbasim. Si mund\u00ebsi mund t\u00eb p\u00ebrdorim replikimin sinkron n\u00eb nivelin e Patroni, por kjo \u00ebsht\u00eb nj\u00eb thik\u00eb me dy presa: ose kemi besueshm\u00ebrin\u00eb e t\u00eb dh\u00ebnave, ose humbasim n\u00eb shpejt\u00ebsi. Ka replikim sinkron, por edhe ai nuk garanton mbrojtje 100% nga humbja e t\u00eb dh\u00ebnave.<\/p>\n<p><\/p>\n<p><em>Alex, faleminderit p\u00ebr raportin e shk\u00eblqyer! Ka ndonj\u00eb eksperienc\u00eb n\u00eb p\u00ebrdorimin e Patroni p\u00ebr mbrojtje n\u00eb nivel zero? Dometh\u00ebn\u00eb, n\u00eb kombinim me standby sinkron? Ky \u00ebsht\u00eb nj\u00eb pyetje e par\u00eb. Dhe pyetje e dyt\u00eb. Keni p\u00ebrdorur zgjidhje t\u00eb ndryshme. Ne kemi p\u00ebrdorur Repmgr, por pa auto-failover dhe tani planifikojm\u00eb t\u00eb lidhim auto-failover. Po shqyrtojm\u00eb Patroni si nj\u00eb zgjidhje alternative. \u00c7far\u00eb mund t\u00eb thoni p\u00ebr avantazhet n\u00eb krahasim me Repmgr?<\/em><\/p>\n<p><\/p>\n<p>Pyety i par\u00eb ishte p\u00ebr replikat sinherike. Askush te ne nuk p\u00ebrdor replikimin sinhronik, sepse t\u00eb gjith\u00eb kan\u00eb frik\u00eb (Disa klient\u00eb tashm\u00eb po e p\u00ebrdorin, nuk kan\u00eb v\u00ebn\u00eb re probleme me performanc\u00ebn n\u00eb parim \u2014 <em>Sh\u00ebnimi i foli<\/em>). Por ne kemi krijuar nj\u00eb rregull p\u00ebr veten ton\u00eb, q\u00eb n\u00eb nj\u00eb klaster replikimi sinhronik duhet t\u00eb ket\u00eb t\u00eb pakt\u00ebn tre nyje, sepse, n\u00ebse kemi dy nyje dhe n\u00ebse masteri ose replikimi d\u00ebshtojn\u00eb, at\u00ebher\u00eb Patroni e kalon k\u00ebt\u00eb nyje n\u00eb modin Standalone, p\u00ebr t\u00eb vazhduar funksionimin e aplikacionit. N\u00eb k\u00ebt\u00eb rast, ka rreziqe p\u00ebr humbje t\u00eb t\u00eb dh\u00ebnave.<\/p>\n<p><\/p>\n<p>Sa i p\u00ebrket pyetjes s\u00eb dyt\u00eb, ne kemi p\u00ebrdorur Repmgr dhe vazhdojm\u00eb ta p\u00ebrdorim me disa klient\u00eb p\u00ebr arsye historike. \u00c7far\u00eb mund t\u00eb themi? N\u00eb Patroni auto-failoveri \u00ebsht\u00eb i integruar, nd\u00ebrsa n\u00eb Repmgr auto-failoveri \u00ebsht\u00eb nj\u00eb tipar shtes\u00eb q\u00eb duhet aktivizuar. Duhet t\u00eb fillojm\u00eb daemon-in e Repmgr n\u00eb \u00e7do nyje dhe at\u00ebher\u00eb mund t\u00eb konfiguroni auto-failoverin. <\/p>\n<p><\/p>\n<p>Repmgr kontrollon n\u00ebse node-t e Postgres jan\u00eb aktive. Proceset e Repmgr kontrollojn\u00eb nj\u00ebri-tjetrin, q\u00eb nuk \u00ebsht\u00eb nj\u00eb qasje shum\u00eb efikase pasi mund t\u00eb ket\u00eb raste komplekse t\u00eb izolimit rrjetit ku nj\u00eb kluster i madh Repmgr mund t\u00eb ndahet n\u00eb disa t\u00eb vogla dhe t\u00eb vazhdoj\u00eb t\u00eb funksionoj\u00eb. Nuk e kam ndjekur prej koh\u00ebsh Repmgr, ndoshta e kan\u00eb rregulluar k\u00ebt\u00eb... ndoshta jo. Por, nxjerrja e informacionit mbi gjendjen e klustrit n\u00eb DCS, si\u00e7 b\u00ebn Stolon, Patroni, \u00ebsht\u00eb varianti m\u00eb i jetuesh\u00ebm. <\/p>\n<p><\/p>\n<p><em>Alexei, kam nj\u00eb pyetje, ndoshta t\u00eb thjesht\u00eb. N\u00eb nj\u00eb nga shembujt e par\u00eb, ju nxorr\u00ebt DCS-n\u00eb nga makina lokale n\u00eb nj\u00eb node t\u00eb larg\u00ebt. E kuptojm\u00eb q\u00eb rrjeti \u00ebsht\u00eb nj\u00eb gj\u00eb q\u00eb ka karakteristikat e veta, ai vet\u00eb jeton. \u00c7far\u00eb do t\u00eb ndodhte n\u00ebse p\u00ebr ndonj\u00eb arsye klustri DCS do t\u00eb b\u00ebhej i paaksesuesh\u00ebm? Nuk do t\u00eb flas p\u00ebr arsyet, mund t\u00eb ket\u00eb shum\u00eb: nga duar t\u00eb k\u00ebqija t\u00eb rrjetik\u00ebve deri te probleme reale.<\/em> <\/p>\n<p><\/p>\n<p>Nuk e thash\u00eb k\u00ebt\u00eb me z\u00eb t\u00eb lart\u00eb, por klasteri DCS duhet t\u00eb jet\u00eb gjithashtu i q\u00ebndruesh\u00ebm ndaj d\u00ebshtimeve, dmth. duhet t\u00eb ket\u00eb nj\u00eb num\u00ebr t\u00eb \u00e7 oddit t\u00eb nyjeve, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mund t\u00eb formohet nj\u00eb kuorum. \u00c7far\u00eb ndodh n\u00ebse klasteri DCS b\u00ebhet i paqart\u00eb, ose nuk mund t\u00eb formohet kuorumi, dmth. ndonj\u00eb ndarje rrjetore ose d\u00ebshtim nyjesh? N\u00eb k\u00ebt\u00eb rast, klasteri Patroni kalon n\u00eb modin read only. Klasteri Patroni nuk mund t\u00eb p\u00ebrcaktoj\u00eb gjendjen e klasterit dhe \u00e7far\u00eb duhet t\u00eb b\u00ebj\u00eb. Ai nuk mund t\u00eb lidhet me DCS dhe t\u00eb ruaj\u00eb atje gjendjen e re t\u00eb klasterit, prandaj i gjith\u00eb klasteri kalon n\u00eb read only. Dhe pret ose nd\u00ebrhyrje manuale nga operatori ose rikthimin e DCS.<\/p>\n<p><\/p>\n<p><em>N\u00eb terma t\u00eb thjesht\u00eb, DCS p\u00ebr ne b\u00ebhet nj\u00eb sh\u00ebrbim po aq i r\u00ebnd\u00ebsish\u00ebm sa vet\u00eb baza?<\/em><\/p>\n<p><\/p>\n<p>Po, n\u00eb shum\u00eb kompani moderne, Zbulimi i Sh\u00ebrbimeve \u00ebsht\u00eb nj\u00eb pjes\u00eb e pandashme e infrastruktur\u00ebs. Ai implementohet madje para se t\u00eb ket\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash n\u00eb infrastruktur\u00eb. Si\u00e7 thuhet, ne kemi nisur infrastruktur\u00ebn, kemi vendosur n\u00eb Qendr\u00ebn e t\u00eb Dh\u00ebnave, dhe menj\u00ebher\u00eb kemi Zbulimin e Sh\u00ebrbimeve. N\u00ebse \u00ebsht\u00eb Consul, at\u00ebher\u00eb edhe DNS mund t\u00eb nd\u00ebrtohet mbi t\u00eb. N\u00ebse \u00ebsht\u00eb Etcd, mund t\u00eb jet\u00eb nj\u00eb pjes\u00eb nga klasteri Kubernetes, n\u00eb t\u00eb cilin gjith\u00e7ka tjet\u00ebr do t\u00eb vendoset. M\u00eb duket se Zbulimi i Sh\u00ebrbimeve \u00ebsht\u00eb tashm\u00eb nj\u00eb pjes\u00eb e pandashme e infrastrukturave moderne. Dhe p\u00ebr t\u00eb mendohet shum\u00eb m\u00eb her\u00ebt sesa p\u00ebr bazat e t\u00eb dh\u00ebnave. <\/p>\n<p><\/p>\n<p><em>Faleminderit!<\/em><\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/512768\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c Patroni \u2014 \u044d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 High Availability \u0434\u043b\u044f PostgreSQL. \u041d\u043e Patroni \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u044c template, \u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u0447\u0442\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438). \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 Patroni \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043b\u0430\u0431\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":90104,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-90103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c Patroni \u2014 \u044d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 High Availability \u0434\u043b\u044f PostgreSQL. \u041d\u043e Patroni \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u044c template, \u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u0447\u0442\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438). \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 Patroni \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043b\u0430\u0431\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Patroni Failure Stories or How to crash your PostgreSQL cluster. \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c Patroni \u2014 \u044d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 High Availability \u0434\u043b\u044f PostgreSQL. \u041d\u043e Patroni \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u044c template, \u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u0447\u0442\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438). \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 Patroni \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043b\u0430\u0431\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-29T11:42:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-29T11:42:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Histori d\u00ebshtimi t\u00eb Patroni ose si t\u00eb rr\u00ebzoni klasterin tuaj PostgreSQL. Alexey Lesovski | ProHoster","description":"Q\u00ebllimi kryesor i Patroni \u00ebsht\u00eb t\u00eb siguroj\u00eb Disponueshm\u00ebri t\u00eb Lart\u00eb p\u00ebr PostgreSQL. Por Patroni \u00ebsht\u00eb vet\u00ebm nj\u00eb model, jo nj\u00eb mjet i gatsh\u00ebm (si\u00e7 thuhet edhe n\u00eb dokumentacion). Me sa duket, duke e konfiguruar Patroni n\u00eb nj\u00eb laborator testimi, mund t\u00eb shohim sa i shk\u00eblqyer \u00ebsht\u00eb ky mjet dhe si e p\u00ebrballon leht\u00ebsisht p\u00ebrpjekjet tona p\u00ebr t\u00eb rr\u00ebzuar klasterin. Megjithat\u00eb, n\u00eb praktik\u00eb, n\u00eb prodhim","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Patroni Failure Stories or How to crash your PostgreSQL cluster. \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041b\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0439 | ProHoster","og:description":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c Patroni \u2014 \u044d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 High Availability \u0434\u043b\u044f PostgreSQL. \u041d\u043e Patroni \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u044c template, \u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u0447\u0442\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438). \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 Patroni \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043b\u0430\u0431\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patroni-failure-stories-or-how-to-crash-your-postgresql-cluster-aleksej-lesovskij","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-29T11:42:32+00:00","article:modified_time":"2020-07-29T11:42:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90103","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:58:48","updated":"2026-02-09 16:50:35"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/90103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=90103"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/90103\/revisions"}],"predecessor-version":[{"id":158759,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/90103\/revisions\/158759"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/90104"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=90103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=90103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=90103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}