Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

የ Patroni ዋና ግብ ለPostgreSQL ከፍተኛ አቅርቦትን ማቅረብ ነው። ነገር ግን Patroni አብነት ብቻ ነው, ዝግጁ የሆነ መሳሪያ አይደለም (ይህም በአጠቃላይ, በሰነዶቹ ውስጥ ይነገራል). በመጀመሪያ እይታ Patroniን በሙከራ ላብራቶሪ ውስጥ በማዘጋጀት ምን አይነት ጥሩ መሳሪያ እንደሆነ እና ክላስተርን ለመስበር የምናደርገውን ጥረት በቀላሉ እንዴት እንደሚይዝ ማየት ይችላሉ። ነገር ግን, በተግባር, በምርት አካባቢ, ሁሉም ነገር ሁልጊዜ እንደ የሙከራ ላብራቶሪ በሚያምር እና በሚያምር ሁኔታ አይከሰትም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ስለራሴ ትንሽ እነግርዎታለሁ። የጀመርኩት እንደ ሲስተም አስተዳዳሪ ነው። በድር ልማት ውስጥ ሰርቷል። ከ2014 ጀምሮ በዳታ ኢግሬት እየሰራሁ ነው። ኩባንያው በ Postgres መስክ በማማከር ላይ ተሰማርቷል. እና በትክክል Postgresን እናገለግላለን፣ እና ከፖስትግሬስ ጋር በየቀኑ እንሰራለን፣ ስለዚህ ከቀዶ ጥገናው ጋር የተገናኘ ልዩ ልዩ እውቀት አለን።

እና በ 2018 መጨረሻ ላይ Patroni ቀስ በቀስ መጠቀም ጀመርን. እና አንዳንድ ልምዶች ተከማችተዋል. እንደምንም መርምረነዋል፣ አስተካክለነዋል፣ ወደ ምርጥ ተግባራችን ደርሰናል። እናም በዚህ ዘገባ ውስጥ ስለእነሱ እናገራለሁ.

ከፖስትግሬስ በተጨማሪ ሊኑክስን እወዳለሁ። በውስጡ ዙሪያውን መንጠቅ እና ማሰስ እወዳለሁ፣ ኮሮችን መሰብሰብ እወዳለሁ። ቨርቹዋልሽን፣ ኮንቴይነሮች፣ ዶከር፣ ኩበርኔትስ እወዳለሁ። ይህ ሁሉ እኔን ያስደስተኛል, ምክንያቱም የድሮው የአስተዳዳሪ ልማዶች ተጽዕኖ እያሳደሩ ነው. ክትትልን መቋቋም እወዳለሁ። እና ከአስተዳደሩ ጋር የተያያዙ ማለትም ማባዛት ፣ ምትኬን የፖስትግሬስ ነገሮችን እወዳለሁ። እና በትርፍ ጊዜዬ በ Go ውስጥ እጽፋለሁ. እኔ የሶፍትዌር መሐንዲስ አይደለሁም፣ በ Go ውስጥ ለራሴ ነው የምጽፈው። እና ደስታን ይሰጠኛል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

  • ብዙዎቻችሁ ፖስትግሬስ ከሳጥኑ ውጭ HA (ከፍተኛ ተደራሽነት) እንደሌለው የምታውቁ ይመስለኛል። HA ለማግኘት, የሆነ ነገር መጫን, ማዋቀር, ጥረት ማድረግ እና ማግኘት ያስፈልግዎታል.
  • ብዙ መሳሪያዎች አሉ እና Patroni HA በጣም ጥሩ እና በጣም ጥሩ ከሚፈታው ውስጥ አንዱ ነው። ነገር ግን ሁሉንም በሙከራ ላብራቶሪ ውስጥ በማስቀመጥ እና በማስኬድ, ሁሉም እንደሚሰራ እናያለን, አንዳንድ ችግሮችን እንደገና ማባዛት እንችላለን, Patroni እንዴት እንደሚያገለግል ይመልከቱ. እና ሁሉም ነገር በጥሩ ሁኔታ እንደሚሰራ እናያለን።
  • በተግባር ግን የተለያዩ ችግሮች አጋጥመውናል። እና ስለነዚህ ችግሮች እናገራለሁ.
  • እንዴት እንደመረመርን እነግርዎታለሁ ፣ ያስተካከልነውን - ረድቶናል ወይም አልረዳም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

  • Patroni ን እንዴት እንደሚጭኑ አልነግርዎትም, ምክንያቱም በይነመረብ ላይ google ማድረግ ይችላሉ, ሁሉም እንዴት እንደሚጀመር, እንዴት እንደሚዋቀር ለመረዳት የማዋቀሪያ ፋይሎችን መመልከት ይችላሉ. በበይነመረብ ላይ ሾለ እሱ መረጃ ማግኘት, ንድፎችን, አርክቴክቸርን መረዳት ይችላሉ.
  • ስለሌላ ሰው ልምድ አልናገርም። ስላጋጠሙን ችግሮች ብቻ እናገራለሁ.
  • እና ከ Patroni እና PostgreSQL ውጭ ስላሉ ችግሮች አልናገርም። ለምሳሌ፣ ከማመጣጠን ጋር የተያያዙ ችግሮች ካሉ፣ የእኛ ክላስተር ሲፈርስ፣ ሾለሹ አላወራም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና የእኛን ዘገባ ከመጀመራችን በፊት ትንሽ የኃላፊነት ስሜት.

ያጋጠሙን እነዚህ ሁሉ ችግሮች በመጀመሪያዎቹ 6-7-8 ወራት ውስጥ ነበሩን ። በጊዜ ሂደት ወደ ውስጣዊ ምርጥ ተግባራችን ደርሰናል። ችግሮቻችንም ጠፉ። ስለዚህ፣ ሪፖርቱ የተነገረው ከስድስት ወር በፊት ነው፣ ሁሉም በጭንቅላቴ ውስጥ ትኩስ ሆኖ ሳለ እና ሁሉንም ነገር በትክክል አስታወስኩት።

ሪፖርቱን በማዘጋጀት ሂደት ውስጥ, የድሮ ድህረ-ሞትን አስቀድሜ አስነሳሁ, መዝገቦችን ተመለከትኩ. እና አንዳንድ ዝርዝሮች ሊረሱ ይችላሉ, ወይም አንዳንድ ዝርዝሮች ለችግሮች በሚተነተኑበት ጊዜ ሙሉ በሙሉ ሊመረመሩ አይችሉም, ስለዚህ አንዳንድ ጊዜ ችግሮቹ ሙሉ በሙሉ ያልተገመቱ ሊመስሉ ይችላሉ, ወይም አንዳንድ የመረጃ እጥረት አለ. እናም ለዚህ ጊዜ ይቅርታ እንድትሰጡኝ እጠይቃችኋለሁ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

Patroni ምንድን ነው?

  • ይህ HAን ለመገንባት አብነት ነው። በሰነዱ ውስጥ ያለውም ይህንኑ ነው። እና በእኔ እይታ ይህ በጣም ትክክለኛ ማብራሪያ ነው። Patroni ሁሉንም ችግሮችዎን የሚፈታ የብር ጥይት አይደለም, ማለትም, እንዲሰራ እና ጥቅሞችን ለማምጣት ጥረት ማድረግ ያስፈልግዎታል.
  • ይህ በእያንዳንዱ የውሂብ ጎታ አገልግሎት ላይ የተጫነ የወኪል አገልግሎት ሲሆን ለፖስትግሬስዎ የመግቢያ ስርዓት አይነት ነው። Postgresን ይጀምራል፣ ያቆማል፣ እንደገና ይጀምራል፣ ያዋቅራል እና የክላስተርዎን ቶፖሎጂ ይለውጣል።
  • በዚህ መሠረት የክላስተር ሁኔታን ለማከማቸት, አሁን ያለው ውክልና, እንደሚታየው, አንድ ዓይነት ማከማቻ ያስፈልጋል. እናም ከዚህ አመለካከት ፓትሮኒ በውጫዊ ስርዓት ውስጥ ግዛትን የማከማቸት መንገድን ወሰደ. የተከፋፈለ የውቅር ማከማቻ ስርዓት ነው። Etcd, Consul, ZooKeeper, ወይም kubernetes ወዘተ ሊሆን ይችላል, ማለትም ከእነዚህ አማራጮች ውስጥ አንዱ.
  • እና የ Patroni ባህሪያት አንዱ በማዘጋጀት ብቻ አውቶማቲክን ከሳጥኑ ውስጥ ማውጣት ነው. ለማነፃፀር Repmgr ን ከወሰድን ፣ ከዚያ ፋይሉ እዚያ ውስጥ ተካቷል ። በ Repmgr, ማብሪያ / ማጥፊያ እናገኛለን, ነገር ግን ልሾ-ሰር ፋይልን ከፈለግን, ከዚያም በተጨማሪ ማዋቀር ያስፈልገናል. Patroni አስቀድሞ ከሳጥኑ ውስጥ አውቶፋይለር አለው።
  • እና ሌሎች ብዙ ነገሮች አሉ. ለምሳሌ, የውቅረቶችን ጥገና, አዲስ ቅጂዎችን ማፍሰስ, ምትኬ, ወዘተ. ግን ይህ ከሪፖርቱ ወሰን በላይ ነው, ሾለሹ አልናገርም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና ትንሽ ውጤት የ Patroni ዋና ተግባር ክላስተር ስራ ላይ እንዲውል እና አፕሊኬሽኑ በክላስተር ቶፖሎጂ ላይ ለውጦችን እንዳያስተውል አውቶፋይል በደንብ እና በአስተማማኝ ሁኔታ መስራት ነው።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ነገር ግን Patroni መጠቀም ስንጀምር, ስርዓታችን ትንሽ የተወሳሰበ ይሆናል. ቀደም ብሎ Postgres ከነበረን፣ Patroniን ስንጠቀም Patroni ራሳችንን እናገኛለን፣ ግዛት የተከማቸበትን DCS እናገኛለን። እና ሁሉም ነገር በሆነ መንገድ መስራት አለበት. ታዲያ ምን ሊሳሳት ይችላል?

ሊሰበር ይችላል፡

  • ፖስትግሬስ ሊሰበር ይችላል። ዋና ወይም ቅጂ ሊሆን ይችላል, ከመካከላቸው አንዱ ሊወድቅ ይችላል.
  • ፓትሮኒ እራሱ ሊሰበር ይችላል.
  • ግዛት የተከማቸበት DCS ሊሰበር ይችላል።
  • እና አውታረ መረቡ ሊሰበር ይችላል።

እነዚህን ሁሉ ነጥቦች በሪፖርቱ ውስጥ እመለከታለሁ.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ጉዳዮችን እያወሳሰብኩ ሲሄዱ እመለከታለሁ እንጂ ጉዳዩ ብዙ አካላትን ያካትታል ከሚል እይታ አንጻር አይደለም። እና ከስሜታዊ ስሜቶች አንፃር ይህ ጉዳይ ለእኔ ከባድ ነበር ፣ እሱን ለመበተን አስቸጋሪ ነበር ... እና በተቃራኒው ፣ አንዳንድ ጉዳዮች ቀላል እና እሱን መበታተን ቀላል ነበር።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና የመጀመሪያው ጉዳይ በጣም ቀላሉ ነው. የውሂብ ጎታ ክላስተር ወስደን የDCS ማከማቻችንን በተመሳሳዩ ዘለላ ላይ ስናሰማራ ነው። ይህ በጣም የተለመደው ስህተት ነው. ይህ በህንፃ ግንባታ ውስጥ ስህተት ነው, ማለትም, የተለያዩ ክፍሎችን በአንድ ቦታ ላይ በማጣመር.

ስለዚህ፣ አንድ ፋይል አድራጊ ነበር፣ የሆነውን ነገር ለመቋቋም እንሂድ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና እዚህ ፋይሉ መቼ እንደተከሰተ ለማወቅ ፍላጎት አለን. ይህ ማለት፣ የክላስተር ሁኔታ በተለወጠበት በዚህ ወቅት ላይ ፍላጎት አለን ማለት ነው።

ነገር ግን ፋይሉ ሁልጊዜ ፈጣን አይደለም, ማለትም ምንም ጊዜ አይፈጅም, ሊዘገይ ይችላል. ለረጅም ጊዜ ሊቆይ ይችላል.

ስለዚህ, እሱ መጀመሪያ እና የመጨረሻ ጊዜ አለው, ማለትም ቀጣይነት ያለው ክስተት ነው. እና ሁሉንም ክስተቶች በሦስት ክፍተቶች እንከፍላለን: ከፋይሉ በፊት, በፋይሉ ጊዜ እና ከፋይሉ በኋላ ጊዜ አለን. ያም ማለት በዚህ የጊዜ መስመር ውስጥ ያሉትን ሁሉንም ክስተቶች እንመለከታለን.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና የመጀመሪያው ነገር, አንድ ፋይል ሰሪ ሲከሰት, ለተከሰተው ምክንያት, ወደ ፋይሉ ያደረሰው ምክንያት ምን እንደሆነ እንፈልጋለን.

ምዝግብ ማስታወሻዎቹን ከተመለከትን, እነሱ ክላሲክ ፓትሮኒ ሎግዎች ይሆናሉ. በእነሱ ውስጥ አገልጋዩ ዋና እንደሆነ ይነግረናል, እና የጌታው ሚና ወደዚህ መስቀለኛ መንገድ አልፏል. እዚህ ጎልቶ ይታያል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በመቀጠል, ፋይሉ ለምን እንደተከሰተ, ማለትም ዋና ሚና ከአንድ መስቀለኛ መንገድ ወደ ሌላ እንዲንቀሳቀስ ያደረጋቸው ክስተቶች ምን እንደሆኑ መረዳት አለብን. እና በዚህ ሁኔታ, ሁሉም ነገር ቀላል ነው. ከማከማቻ ስርዓቱ ጋር በመግባባት ላይ ስህተት አለን። ጌታው ከዲሲኤስ ጋር መስራት እንደማይችል ተገነዘበ, ማለትም, በመስተጋብር ላይ አንድ ዓይነት ችግር አለ. እናም ከአሁን በኋላ መምህር መሆን አልችልም በማለት ስራቸውን ለቀቁ። ይህ መስመር "ራስን ዝቅ አድርጎ" በትክክል ይናገራል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ከፋይሉ በፊት የነበሩትን ክስተቶች ከተመለከትን, ችግሩ ጠንቋዩን እንዲቀጥል ያደረጉትን ምክንያቶች እዚያ ማየት እንችላለን.

የ Patroni ምዝግብ ማስታወሻዎችን ከተመለከትን, ብዙ ስህተቶች እንዳሉን እናያለን, ጊዜው ያበቃል, ማለትም የ Patroni ወኪል ከዲሲኤስ ጋር መስራት አይችልም. በዚህ አጋጣሚ ይህ በፖርት 8500 ላይ እየተገናኘ ያለው የቆንስል ወኪል ነው።

እና እዚህ ያለው ችግር Patroni እና የውሂብ ጎታ በተመሳሳይ አስተናጋጅ ላይ እየሰሩ ነው. እና የቆንስል አገልጋዮች በተመሳሳይ መስቀለኛ መንገድ ተጀመሩ። በአገልጋዩ ላይ ሸክም በመፍጠር ለቆንስል አገልጋዮችም ችግር ፈጠርን። በትክክል መግባባት አልቻሉም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ከተወሰነ ጊዜ በኋላ, ጭነቱ ሲቀንስ, የእኛ ፓትሮኒ እንደገና ከወኪሎች ጋር መገናኘት ችሏል. መደበኛ ስራ ቀጠለ። እና ያው Pgdb-2 አገልጋይ እንደገና ጌታ ሆነ። ማለትም ፣ ትንሽ መገልበጥ ነበር ፣ በዚህ ምክንያት መስቀለኛ መንገድ የጌታውን ስልጣን ለቀቀ ፣ እና ከዚያ እንደገና ወሰዳቸው ፣ ማለትም ፣ ሁሉም ነገር እንደነበረው ተመለሰ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና ይሄ እንደ የውሸት ማንቂያ ተደርጎ ሊወሰድ ይችላል, ወይም ፓትሮኒ ሁሉንም ነገር በትክክል እንዳደረገ ሊቆጠር ይችላል. ማለትም የክላስተርን ሁኔታ ማስቀጠል እንደማይችል ተረድቶ ሥልጣኑን አስወገደ።

እና እዚህ ችግሩ የተፈጠረው የቆንስል አገልጋዮች እንደ ቤዝ አንድ ሃርድዌር ላይ በመሆናቸው ነው። በዚህ መሠረት ማንኛውም ጭነት: በዲስኮች ወይም በአቀነባባሪዎች ላይ ያለው ጭነት, ከቆንስላ ክላስተር ጋር ያለውን ግንኙነትም ይጎዳል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና አብሮ መኖር እንደሌለበት ወስነን ለቆንስል የተለየ ክላስተር መድበናል። እና ፓትሮኒ አስቀድሞ ከተለየ ቆንስላ ጋር ይሠራ ነበር፣ ማለትም፣ የተለየ የፖስትግሬስ ክላስተር፣ የተለየ የቆንስል ክላስተር ነበር። ይህ አብሮ እንዳይኖር እነዚህን ሁሉ ነገሮች እንዴት መሸከም እና ማቆየት እንደሚቻል መሰረታዊ መመሪያ ነው።

እንደ አማራጭ መለኪያዎቹን ttl, loop_wait, retry_timeout, ማለትም እነዚህን መለኪያዎች በመጨመር እነዚህን የአጭር ጊዜ ጭነት ጫፎች ለመትረፍ መሞከር ይችላሉ. ግን ይህ በጣም ተስማሚ አማራጭ አይደለም, ምክንያቱም ይህ ጭነት በጊዜ ውስጥ ረጅም ሊሆን ይችላል. እና ከእነዚህ መመዘኛዎች በቀላሉ እንሄዳለን. እና ያ በእውነቱ ላይረዳ ይችላል።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

የመጀመሪያው ችግር, እርስዎ እንደተረዱት, ቀላል ነው. እኛ ወስደን DCS ከመሠረቱ ጋር አንድ ላይ አደረግን, ችግር አጋጥሞናል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ሁለተኛው ችግር ከመጀመሪያው ጋር ተመሳሳይ ነው. ከDCS ስርዓት ጋር እንደገና የመተሳሰር ችግሮች ሲያጋጥሙን ተመሳሳይ ነው።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

መዝገቦቹን ከተመለከትን, እንደገና የግንኙነት ስህተት እንዳለብን እናያለን. እና Patroni እኔ ከዲሲኤስ ጋር መስተጋብር ስለማልችል አሁን ያለው ጌታ ወደ ቅጂ ሁነታ ይሄዳል ይላል።

የድሮው ጌታ ቅጂ ይሆናል, እዚህ Patroni እንደሚሰራ, መሆን እንዳለበት. የግብይት ምዝግብ ማስታወሻውን ወደነበረበት ለመመለስ pg_rewind እና ከዚያ ከአዲሱ ጌታ ጋር ለመገናኘት ከአዲሱ ጌታ ጋር ይሰራል። እዚህ Patroni እንደሚሰራ, እሱ እንዳለበት.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እዚህ ከፋይለር በፊት የነበረውን ቦታ ማግኘት አለብን, ማለትም እነዚያን ስህተቶች ፋይል ያደረጉን. እና በዚህ ረገድ የ Patroni ምዝግብ ማስታወሻዎች አብሮ ለመስራት በጣም ምቹ ናቸው። በተወሰነ የጊዜ ልዩነት ውስጥ ተመሳሳይ መልዕክቶችን ይጽፋል. እናም እነዚህን ምዝግብ ማስታወሻዎች በፍጥነት ማሸብለል ከጀመርን, ከዛም መዝገቦች እንደተቀየሩ እናያለን, ይህም ማለት አንዳንድ ችግሮች ተጀምረዋል. በፍጥነት ወደዚህ ቦታ እንመለሳለን, ምን እንደሚሆን ይመልከቱ.

እና በተለመደው ሁኔታ, ምዝግቦቹ እንደዚህ ያለ ነገር ይመስላል. የመቆለፊያው ባለቤት ተረጋግጧል. እና ባለቤቱ ለምሳሌ ከተለወጠ ፓትሮኒ ምላሽ መስጠት ያለባቸው አንዳንድ ክስተቶች ሊከሰቱ ይችላሉ። በዚህ ጉዳይ ላይ ግን ደህና ነን። ስህተቶቹ የተጀመሩበትን ቦታ እየፈለግን ነው።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እናም ስህተቶቹ መታየት ወደጀመሩበት ደረጃ ከተሸብልልን፣ ራስ-ፋይል እንዳደረግን እናያለን። እናም ስህተቶቻችን ከDCS ጋር ግንኙነት ስለነበራቸው እና በእኛ ሁኔታ ቆንስልን ስለተጠቀምን የቆንስላ ምዝግብ ማስታወሻዎችንም እንመለከታለን፣ እዚያ ምን እንደተፈጠረ እንመለከታለን።

የፋይሉን ጊዜ እና በቆንስል ምዝግብ ማስታወሻዎች ውስጥ ያለውን ጊዜ በማነፃፀር፣ በቆንስላ ክላስተር ውስጥ ያሉ ጎረቤቶቻችን የሌሎች የቆንስላ ክላስተር አባላትን መኖር መጠራጠር እንደጀመሩ እናያለን።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና የሌሎች የቆንስል ወኪሎችን መዝገብ ከተመለከቱ ፣ እዚያም የሆነ የአውታረ መረብ ውድቀት እንዳለ ማየት ይችላሉ። እናም ሁሉም የቆንስል ክላስተር አባላት አንዱ የሌላውን መኖር ይጠራጠራሉ። እና ይህ ለፋይለር ተነሳሽነት ነበር.

ከእነዚህ ስህተቶች በፊት የተከሰተውን ነገር ከተመለከቱ, ሁሉም አይነት ስህተቶች እንዳሉ ማየት ይችላሉ, ለምሳሌ, ቀነ-ገደብ, RPC ወድቋል, ማለትም, የቆንስላ ክላስተር አባላት እርስ በርስ በሚያደርጉት ግንኙነት ውስጥ አንድ ዓይነት ችግር እንዳለ ግልጽ ነው. .

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በጣም ቀላሉ መልስ ኔትወርክን ለመጠገን ነው. ለኔ ግን መድረክ ላይ ቆሜ ይህን ለማለት ቀላል ነው። ነገር ግን ሁኔታዎች ሁልጊዜ ደንበኛው አውታረ መረቡን ለመጠገን አቅም የለውም. እሱ በዲሲ ውስጥ ሊኖር ይችላል እና ኔትወርክን መጠገን አይችልም, በመሳሪያው ላይ ተጽዕኖ ያሳድራል. እና ስለዚህ አንዳንድ ሌሎች አማራጮች ያስፈልጋሉ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

አማራጮች አሉ፡-

  • በጣም ቀላሉ አማራጭ ፣ በእኔ አስተያየት ፣ በሰነዶቹ ውስጥ እንኳን የተጻፈው ፣ የቆንስላ ቼኮችን ማሰናከል ነው ፣ ማለትም ፣ በቀላሉ ባዶ ድርድር ማለፍ። እናም የቆንስላ ወኪል ምንም አይነት ቼክ እንዳይጠቀም እንነግረዋለን። በእነዚህ ቼኮች፣ እነዚህን የአውታረ መረብ አውሎ ነፋሶች ችላ ልንል እና ፋይለርን ማስጀመር አንችልም።
  • ሌላው አማራጭ raft_multiplierን እንደገና ማረጋገጥ ነው። ይህ የቆንስል አገልጋይ ልሹ መለኪያ ነው። በነባሪነት ወደ 5 ተቀናብሯል. ይህ ዋጋ ለአካባቢዎች ዝግጅት በሰነድ ይመከራል. በእርግጥ ይህ በቆንስላ አውታረመረብ አባላት መካከል ያለውን የመልእክት ድግግሞሽ ይነካል። በእርግጥ ይህ ግቤት በቆንስላ ክላስተር አባላት መካከል ያለውን የአገልግሎት ግንኙነት ፍጥነት ይጎዳል። እና ለማምረት, አንጓዎች ብዙ ጊዜ መልዕክቶችን እንዲለዋወጡ ለማድረግ ቀድሞውኑ እንዲቀንስ ይመከራል.
  • ሌላው ያቀረብነው አማራጭ ለስርዓተ ክወናው ሂደት መርሐግብር ከሌሎች ሂደቶች መካከል የቆንስላ ሂደቶችን ቅድሚያ ማሳደግ ነው። እንደዚህ አይነት "ቆንጆ" መለኪያ አለ, መርሃግብሩ በሚዘጋጅበት ጊዜ በስርዓተ ክወናው የጊዜ ሰሌዳ ግምት ውስጥ የሚገቡትን የሂደቶችን ቅድሚያ ብቻ ይወስናል. እንዲሁም ለቆንስል ወኪሎች ጥሩ ዋጋን ቀንሰናል፣ ማለትም. ኦፕሬቲንግ ሲስተሙ የቆንስላ ሂደቶችን ለመስራት እና ኮዳቸውን ለማስፈጸም ተጨማሪ ጊዜ እንዲሰጥ ቅድሚያውን ጨምሯል። በእኛ ሁኔታ, ይህ የእኛን ችግር ፈታ.
  • ሌላው አማራጭ ቆንስል አለመጠቀም ነው። ወዘተ ትልቅ ደጋፊ የሆነ ጓደኛ አለኝ። እና ከሱ ጋር አዘውትረን እንጨቃጨቃለን። ነገር ግን ከየትኛው የተሻለ ነው, እኛ ብዙውን ጊዜ ከእሱ ጋር እንስማማለን, ኮንሱል በእያንዳንዱ መስቀለኛ መንገድ የውሂብ ጎታ ጋር መሮጥ ያለበት ወኪል አለው. ያም ማለት የፔትሮኒ ከቆንስል ክላስተር ጋር ያለው ግንኙነት በዚህ ወኪል በኩል ይሄዳል። እና ይህ ወኪል ማነቆ ይሆናል. በወኪሉ ላይ የሆነ ነገር ከተፈጠረ Patroni ከቆንስላ ክላስተር ጋር መስራት አይችልም። ችግሩም ይህ ነው። በ ወዘተ ዕቅድ ውስጥ ምንም ወኪል የለም። Patroni በቀጥታ ከ Etcd አገልጋዮች ዝርዝር ጋር መስራት እና አስቀድሞ ከእነሱ ጋር መገናኘት ይችላል። በዚህ ረገድ፣ በድርጅትዎ ውስጥ Etcd ከተጠቀሙ፣ Etcd ምናልባት ከኮንሰል የተሻለ ምርጫ ሊሆን ይችላል። እኛ ደንበኞቻችን ግን ሁል ጊዜ ደንበኛው በመረጠው እና በሚጠቀመው ነገር የተገደበ ነው። እና ለሁሉም ደንበኞች በአብዛኛው ቆንስል አለን።
  • እና የመጨረሻው ነጥብ የመለኪያ እሴቶችን መከለስ ነው. የአጭር ጊዜ የአውታረ መረብ ችግሮቻችን አጭር ሊሆኑ እና ከነዚህ መለኪያዎች ክልል ውጭ እንዳይወድቁ በማሰብ እነዚህን መለኪያዎች ማሳደግ እንችላለን። አንዳንድ የአውታረ መረብ ችግሮች ከተከሰቱ በዚህ መንገድ የ Patroniን በራስ-ፋይል ላይ ያለውን ግትርነት መቀነስ እንችላለን።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እኔ እንደማስበው Patroni የሚጠቀሙ ብዙዎች ይህንን ትእዛዝ ያውቃሉ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ይህ ትእዛዝ የክላስተርን ወቅታዊ ሁኔታ ያሳያል። እና በአንደኛው እይታ, ይህ ስዕል የተለመደ ሊመስል ይችላል. መምህር አለን ፣ ቅጂ አለን ፣ ምንም የማባዛት መዘግየት የለም። ነገር ግን ይህ ክላስተር ሁለት ሳይሆን ሦስት አንጓዎች ሊኖረው እንደሚገባ እስክናውቅ ድረስ ይህ ሥዕል የተለመደ ነው።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በዚህ መሠረት አውቶማቲክ ፋይል ነበር። እና ከዚህ ራስ-ፋይል በኋላ የእኛ ቅጂ ጠፋ። ለምን እንደጠፋች ፈልገን መልሰን መልሰን እናስመልሳት። እና እንደገና ወደ ምዝግብ ማስታወሻዎች እንሄዳለን እና ለምን ራስ-ፋይል እንዳደረግን እንመለከታለን።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በዚህ ሁኔታ, ሁለተኛው ቅጂ ጌታ ሆነ. እዚህ ምንም ነገር የለም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እናም የወደቀውን እና በክላስተር ውስጥ ያልሆነውን ቅጂ ማየት አለብን። የ Patroni ምዝግብ ማስታወሻዎችን እንከፍተዋለን እና በpg_rewind ደረጃ ወደ ክላስተር በማገናኘት ሂደት ላይ ችግር እንዳለብን አይተናል። ከክላስተር ጋር ለመገናኘት የግብይት ምዝግብ ማስታወሻውን ወደ ኋላ መመለስ፣ አስፈላጊውን የግብይት መዝገብ ከመምህሩ መጠየቅ እና ጌታውን ለማግኘት መጠቀም ያስፈልግዎታል።

በዚህ አጋጣሚ የግብይት መዝገብ የለንም እና ቅጂው መጀመር አይችልም። በዚህ መሠረት, Postgresን በስህተት እናቆማለን. እና ስለዚህ በክላስተር ውስጥ አይደለም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ለምን በክላስተር ውስጥ እንደሌለ እና ለምን ምንም ምዝግቦች እንዳልነበሩ መረዳት አለብን. ወደ አዲሱ ጌታ ሄደን በምዝግብ ማስታወሻዎች ውስጥ ያለውን እንመለከታለን. pg_rewind ሲሰራ የፍተሻ ነጥብ ተከስቷል። እና አንዳንድ የድሮ የግብይት ምዝግብ ማስታወሻዎች በቀላሉ ተሰይመዋል። አሮጌው ጌታ ከአዲሱ ጌታ ጋር ለመገናኘት ሲሞክር እና እነዚህን ምዝግብ ማስታወሻዎች ለመጠየቅ ሲሞክር, እነሱ ቀድሞውኑ ተቀይረዋል, ልክ አልነበሩም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እነዚህ ክስተቶች የተከሰቱበትን የጊዜ ማህተሞችን አነጻጽሬአለሁ። እና እዚያ ልዩነቱ በጥሬው 150 ሚሊሰከንዶች ነው ፣ ማለትም ፣ የፍተሻ ነጥብ በ 369 ሚሊሰከንዶች ውስጥ የተጠናቀቀ ፣ የWAL ክፍሎች ተሰይመዋል። እና በትክክል በ 517 ፣ ከ 150 ሚሊሰከንዶች በኋላ ፣ በአሮጌው ቅጂ ላይ መመለስ ተጀመረ። ማለትም ቅጂው መገናኘት እና ማግኘት እንዳይችል በጥሬው 150 ሚሊሰከንድ በቂ ነበር።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ምን አማራጮች አሉ?

መጀመሪያ ላይ የማባዛት ቦታዎችን እንጠቀም ነበር። ጥሩ መስሎን ነበር። ምንም እንኳን በመጀመሪያው የሥራ ደረጃ ላይ ክፍተቶችን አጥፍተናል. ክፍሎቹ ብዙ የWAL ክፍሎችን ካከማቻሉ ጌታውን መጣል የምንችል መስሎን ነበር። ይወድቃል። ያለ ክፍተቶች ለተወሰነ ጊዜ ተሠቃየን። እና ክፍተቶች እንደሚያስፈልጉን ተገነዘብን, ክፍተቶችን መልሰናል.

ነገር ግን እዚህ ላይ አንድ ችግር አለ, ጌታው ወደ ቅጂው ሲሄድ, ክፍተቶቹን ይሰርዛል እና የ WAL ክፍሎችን ከቦታዎች ጋር ይሰርዛል. እና ይህን ችግር ለማስወገድ፣ የwal_keep_segments መለኪያውን ከፍ ለማድረግ ወስነናል። በነባሪነት ወደ 8 ክፍሎች ይከፈላል. ወደ 1 ከፍ አድርገን እና ምን ያህል ነፃ ቦታ እንዳለን ተመልክተናል. እና 000 ጊጋባይት ለዋል_ኬፕ_ክፍል ሰጠን። ማለትም፣ ሲቀይሩ ሁል ጊዜ በሁሉም ኖዶች ላይ 16 ጊጋባይት የግብይት ምዝግብ ማስታወሻዎች አለን።

እና በተጨማሪ - አሁንም ለረጅም ጊዜ የጥገና ሥራዎች ጠቃሚ ነው. ከተባዙት ውስጥ አንዱን ማዘመን አለብን እንበል። እና ማጥፋት እንፈልጋለን። ሶፍትዌሩን ማዘመን አለብን, ምናልባት ኦፕሬቲንግ ሲስተም, ሌላ ነገር. እና አንድ ቅጂ ስናጠፋ፣ የዚያ ቅጂ ማስገቢያ እንዲሁ ይወገዳል። እና ትንሽ የዋል_ኬፕ_ክፍሎችን ከተጠቀምን ፣ ከዚያ ረጅም ቅጂ ከሌለ ፣ የግብይት ምዝግብ ማስታወሻዎች ይጠፋሉ። አንድ ቅጂ እናነሳለን፣ እነዚያን የግብይት ምዝግብ ማስታወሻዎች በቆመበት ቦታ ይጠይቃል፣ ነገር ግን በጌታው ላይ ላይሆኑ ይችላሉ። እና ቅጂው ሁለቱንም መገናኘት አይችልም። ስለዚህ, ብዙ መጽሔቶችን እናስቀምጣለን.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

የምርት መሰረት አለን። በሂደት ላይ ያሉ ፕሮጀክቶች አሉ።

አንድ ፋይል አድራጊ ነበር። ገብተን ተመለከትን - ሁሉም ነገር በሥርዓት ነው፣ ቅጂዎቹ በቦታቸው ላይ ናቸው፣ ምንም የማባዛት መዘግየት የለም። በምዝግብ ማስታወሻዎች ውስጥ ምንም ስህተቶች የሉም, ሁሉም ነገር በሥርዓት ነው.

የምርት ቡድኑ አንዳንድ መረጃዎች ሊኖሩ ይገባል ይላሉ, ነገር ግን ከአንድ ምንጭ እናየዋለን, ነገር ግን በመረጃ ቋቱ ውስጥ አናየውም. እና ምን እንደደረሰባቸው መረዳት አለብን.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

pg_rewind እንዳመለጣቸው ግልጽ ነው። ወዲያውኑ ይህንን ተረድተናል, ነገር ግን እየሆነ ያለውን ለማየት ሄድን.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በምዝግብ ማስታወሻዎች ውስጥ ፣ ፋይል አስማሚው መቼ እንደተከሰተ ፣ ማን ዋና እንደሆነ ፣ እና ማን አሮጌው ጌታ እንደነበረ እና መቼ ቅጂ መሆን እንደፈለገ መወሰን እንችላለን ፣ ማለትም የግብይት ምዝግብ ማስታወሻዎችን መጠን ለማወቅ እነዚህን ምዝግብ ማስታወሻዎች እንፈልጋለን። ጠፋ።

አሮጌው መምህራችን ዳግም ተነሳ። እና Patroni በአውቶሩ ውስጥ ተመዝግቧል። Patroni ተጀመረ። ከዚያም ፖስትግሬስን ጀመረ. ይበልጥ በትክክል፣ Postgresን ከመጀመርዎ በፊት እና ቅጂውን ከማዘጋጀቱ በፊት፣ Patroni የpg_rewind ሂደቱን ጀምሯል። በዚህ መሠረት የግብይት ምዝግብ ማስታወሻዎችን በከፊል ሰርዞ አዳዲሶችን አውርዶ ተገናኘ። እዚህ Patroni በጥበብ ሠርቷል፣ ማለትም እንደተጠበቀው። ክላስተር ወደነበረበት ተመልሷል። 3 አንጓዎች ነበሩን, ከፋይለር በኋላ 3 አንጓዎች - ሁሉም ነገር አሪፍ ነው.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

የተወሰነ መረጃ አጥተናል። እና ምን ያህል እንደጠፋን መረዳት አለብን. ወደ ኋላ መመለስ ያለብንን ቅጽበት እየፈለግን ነው። እንደዚህ ባሉ የመጽሔት ግቤቶች ውስጥ ልናገኘው እንችላለን. መመለስ ተጀመረ፣ እዚያ የሆነ ነገር አደረገ እና ተጠናቀቀ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

አሮጌው ጌታ ያቆመበትን የግብይት መዝገብ ውስጥ ያለውን ቦታ ማግኘት አለብን. በዚህ ሁኔታ, ይህ ምልክት ነው. እና ሁለተኛ ምልክት ያስፈልገናል, ማለትም, አሮጌው ጌታ ከአዲሱ የሚለይበት ርቀት.

የተለመደው pg_wal_lsn_diff ወስደን እነዚህን ሁለት ምልክቶች እናነፃፅራለን። እና በዚህ ሁኔታ, 17 ሜጋባይት እናገኛለን. ብዙ ወይም ትንሽ, ሁሉም ሰው ለራሱ ይወስናል. ምክንያቱም ለአንድ ሰው 17 ሜጋባይት ብዙ አይደለም, ለአንድ ሰው ብዙ እና ተቀባይነት የሌለው ነው. እዚህ እያንዳንዱ ግለሰብ በንግዱ ፍላጎት መሰረት ለራሱ ይወስናል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ግን ለራሳችን ምን አግኝተናል?

በመጀመሪያ እኛ ለራሳችን መወሰን አለብን - ከስርዓት ዳግም ማስጀመር በኋላ ሁል ጊዜ Patroni በራስ-ሰር እንዲጀምር እንፈልጋለን? ብዙውን ጊዜ ወደ አሮጌው ጌታ መሄድ አለብን, ምን ያህል ርቀት እንደሄደ ይመልከቱ. ምናልባት የግብይት ምዝግብ ማስታወሻ ክፍሎችን ይመርምሩ፣ እዚያ ያለውን ይመልከቱ። እና ይህን ውሂብ ልናጣው እንደምንችል ወይም ይህን ውሂብ ለማውጣት የድሮውን ጌታ በተናጥል ሁነታ ማስኬድ እንዳለብን ለመረዳት።

እና ከዚያ በኋላ ብቻ ይህን ውሂብ መጣል እንደምንችል ወይም ወደነበረበት መመለስ እንደምንችል መወሰን ያለብን፣ ይህን መስቀለኛ መንገድ ከክላስተር ጋር ያገናኙት።

በተጨማሪም፣ "ከፍተኛው_ላግ_on_failover" መለኪያ አለ። በነባሪ፣ የማስታወስ ችሎታዬ የሚያገለግለኝ ከሆነ፣ ይህ ግቤት 1 ሜጋባይት ዋጋ አለው።

እንዴት ነው የሚሰራው? የእኛ ቅጂ በ1 ሜጋባይት ዳታ በማባዛት መዘግየት ላይ ካለ፣ ይህ ቅጂ በምርጫዎች ውስጥ አይሳተፍም። እና በድንገት የፋይል ወረቀቱ ካለ, Patroni የትኞቹ ቅጂዎች ወደ ኋላ እንደቀሩ ይመለከታል. በብዙ የግብይት ምዝግብ ማስታወሻዎች ከኋላ ካሉ፣ ዋና መሆን አይችሉም። ይህ ብዙ ውሂብ እንዳያጡ የሚከላከል በጣም ጥሩ የደህንነት ባህሪ ነው።

ነገር ግን በፓትሮኒ ክላስተር እና በዲሲሲኤስ ውስጥ ያለው የማባዛት መዘግየት በተወሰነ የጊዜ ልዩነት መዘመን ላይ ችግር አለ። 30 ሰከንድ ነባሪው tl እሴት ይመስለኛል።

በዚህ መሠረት በዲ.ሲ.ኤስ ውስጥ ለቅጂዎች አንድ የማባዛት መዘግየት ያለበት ሁኔታ ሊኖር ይችላል, ነገር ግን በእውነቱ ሙሉ ለሙሉ የተለየ መዘግየት ሊኖር ይችላል ወይም ምንም መዘግየት ላይኖር ይችላል, ማለትም ይህ ነገር በእውነተኛ ጊዜ አይደለም. እና ሁልጊዜ እውነተኛውን ምስል አያንፀባርቅም። እና በእሱ ላይ የሚያምር ሎጂክ መስራት ዋጋ የለውም።

እና የመጥፋት አደጋ ሁል ጊዜ ይቀራል። እና በጣም በከፋ ሁኔታ, አንድ ቀመር, እና በአማካይ, ሌላ ቀመር. ማለትም የ Patroni ትግበራን ስናቅድ እና ምን ያህል ውሂብ ልናጣ እንደምንችል ስንገመግም በእነዚህ ቀመሮች ላይ መታመን እና ምን ያህል ውሂብ ልናጣ እንደምንችል መገመት አለብን።

የምስራችም አለ። አሮጌው ጌታ ወደ ፊት ሲሄድ, በአንዳንድ የጀርባ ሂደቶች ምክንያት ሊቀጥል ይችላል. ያም ማለት አንድ ዓይነት አውቶቫክዩም ነበር, ውሂቡን ጽፏል, ወደ የግብይት ምዝግብ ማስታወሻ አስቀምጧል. እና ይህን ውሂብ በቀላሉ ችላ ልንል እና ልናጣው እንችላለን። በዚህ ውስጥ ምንም ችግር የለም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ከፍተኛው_lag_on_failover ከተቀናበረ እና ፋይል አስመዝጋቢው ተከስቶ ከሆነ ምዝግብ ማስታወሻዎቹ እንደዚህ ይመስላሉ እና አዲስ ዋና መምረጥ ያስፈልግዎታል። ቅጂው እራሱን በምርጫ ለመሳተፍ እንደማይችል ይገመግማል። እና ለመሪው በሚደረገው ሩጫ ላይ ለመሳተፍ ፈቃደኛ አልሆነችም። እና አዲስ ጌታ እስኪመረጥ ድረስ ትጠብቃለች, ከዚያም ከእሱ ጋር መገናኘት እንድትችል. ይህ በመረጃ መጥፋት ላይ ተጨማሪ መለኪያ ነው።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እዚህ ላይ ምርታቸው በፖስትግሬስ ላይ ችግር እያጋጠመው መሆኑን የጻፈ የምርት ቡድን አለን። በተመሳሳይ ጊዜ, ጌታው ራሱ ሊደረስበት አይችልም, ምክንያቱም በ SSH በኩል አይገኝም. እና ራስ-ፋይሉ እንዲሁ አይከሰትም።

ይህ አስተናጋጅ ዳግም እንዲነሳ ተገድዷል። በዳግም ማስነሳቱ ምክንያት፣ አሁን እንደተረዳሁት፣ ራስ-ፋይል ተከስቷል። እና ከዳግም ማስነሳት በኋላ፣ አሁን ካለው ጌታ ጋር ያለንን ለማየት እንሄዳለን።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በተመሳሳይ ጊዜ, በዲስኮች ላይ ችግሮች እንዳሉብን አስቀድመን አውቀናል, ማለትም, የት መቆፈር እና ምን መፈለግ እንዳለብን ከመከታተል አስቀድመን አውቀናል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ወደ ፖስትግሬስ መዝገብ ውስጥ ገባን, እዚያ ምን እየሆነ እንዳለ ማየት ጀመርን. ለአንድ፣ ለሁለት፣ ለሦስት ሰከንድ የሚቆዩ ድርጊቶችን አይተናል፣ ይህም በፍፁም የተለመደ አይደለም። የእኛ አውቶቫክዩም በጣም በዝግታ እና በሚገርም ሁኔታ መጀመሩን አይተናል። እና በዲስክ ላይ ጊዜያዊ ፋይሎችን አየን. ያም ማለት, እነዚህ ሁሉ በዲስኮች ላይ ያሉ ችግሮች ጠቋሚዎች ናቸው.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ወደ ስርዓቱ dmesg (የከርነል ሎግ) ተመልክተናል. እና በአንዱ ዲስክ ላይ ችግር እንዳለብን አይተናል. የዲስክ ንዑስ ስርዓት ሶፍትዌር Raid ነበር። /proc/mdstat ን ተመልክተናል እና አንድ ድራይቭ እንደጎደለን አየን። ያም ማለት የ 8 ዲስኮች ራይድ አለ, አንድ ይጎድለናል. ተንሸራታቹን በጥንቃቄ ከተመለከቱ, በውጤቱ ውስጥ እዚያ sde እንደሌለን ማየት ይችላሉ. በእኛ ሁኔታ ሁኔታዊ በሆነ መልኩ ዲስኩ ተቋርጧል። ይህ የዲስክ ችግሮችን አስነስቷል፣ እና መተግበሪያዎች ከፖስትግሬስ ክላስተር ጋር ሲሰሩ ችግር አጋጥሟቸዋል።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እናም በዚህ ጉዳይ ላይ ፓትሮኒ በምንም መልኩ አይረዳንም, ምክንያቱም ፓትሮኒ የአገልጋዩን ሁኔታ, የዲስክ ሁኔታን የመከታተል ተግባር ስለሌለው. እና እንደዚህ አይነት ሁኔታዎችን በውጫዊ ክትትል መከታተል አለብን. የዲስክ ክትትልን ወደ ውጫዊ ክትትል በፍጥነት ጨምረናል።

እና እንደዚህ ያለ ሀሳብ ነበር - አጥር ወይም ጠባቂ ሶፍትዌር ሊረዳን ይችላል? በዚህ ጉዳይ ላይ እሱ በጭንቅ ሊረዳን እንደሚችል አስበን ነበር፣ ምክንያቱም በችግሮቹ ጊዜ Patroni ከዲሲ ክላስተር ጋር መገናኘቱን ስለቀጠለ እና ምንም ችግር አላየም። ያም ማለት ከዲሲኤስ እና ፓትሮኒ እይታ አንጻር ሁሉም ነገር በክላስተር ጥሩ ነበር, ምንም እንኳን በእውነቱ በዲስክ ላይ ችግሮች ቢኖሩም የውሂብ ጎታ መገኘት ላይ ችግሮች ነበሩ.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በእኔ አስተያየት ይህ ለረጅም ጊዜ ከመረመርኳቸው በጣም እንግዳ ችግሮች አንዱ ነው ፣ ብዙ ምዝግብ ማስታወሻዎችን አንብቤ ፣ እንደገና መርጫለሁ እና ክላስተር ሲሙሌተር ብዬ ጠራሁት።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ችግሩ የድሮው ጌታ መደበኛ ቅጂ ሊሆን አይችልም, ማለትም ፓትሮኒ ጀምሯል, ፓትሮኒ ይህ መስቀለኛ መንገድ እንደ ቅጂ መኖሩን አሳይቷል, ግን በተመሳሳይ ጊዜ የተለመደ ቅጂ አልነበረም. አሁን ምክንያቱን ያያሉ. ከችግሩ ትንተና የጠበቅኩት ይህንን ነው።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና ሁሉም እንዴት ተጀመረ? እንደ ቀደመው ችግር በዲስክ ብሬክስ ተጀምሯል። ለአንድ ሰከንድ ሁለት ቃል ገብተናል።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በግንኙነቶች ውስጥ እረፍቶች ነበሩ፣ ማለትም፣ ደንበኞች ተቀደደ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

የተለያየ ክብደት ያላቸው እገዳዎች ነበሩ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና, በዚህ መሠረት, የዲስክ ንዑስ ስርዓት በጣም ምላሽ አይሰጥም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና ለእኔ በጣም ሚስጥራዊው ነገር የመጣው ወዲያውኑ የመዝጋት ጥያቄ ነው። Postgres ሶስት የመዝጊያ ሁነታዎች አሉት፡

  • ሁሉም ደንበኞች በራሳቸው ግንኙነት እስኪያቋርጡ ስንጠብቅ ጥሩ ነው።
  • ደንበኞቻችን ግንኙነታቸውን እንዲያቋርጡ ስናደርግ በፍጥነት አለ።
  • እና ወዲያውኑ። በዚህ አጋጣሚ ወዲያውኑ ለደንበኞች እንዲዘጉ አይነግራቸውም, ያለምንም ማስጠንቀቂያ ብቻ ይዘጋል. እና ለሁሉም ደንበኞች, ስርዓተ ክወናው ቀድሞውኑ የ RST መልእክት ይልካል (የ TCP መልዕክት ግንኙነቱ እንደተቋረጠ እና ደንበኛው ምንም የሚይዘው ምንም ነገር የለውም).

ይህን ምልክት የላከው ማነው? የ Postgres የጀርባ ሂደቶች እንደዚህ አይነት ምልክቶችን እርስ በእርሳቸው አይልኩም, ማለትም ይህ ግድያ-9 ነው. እንደነዚህ ዓይነቶቹን ነገሮች አንዳቸው ለሌላው አይልኩም, ለእንደዚህ ዓይነቶቹ ነገሮች ምላሽ ይሰጣሉ, ማለትም ይህ የ Postgres ድንገተኛ ዳግም ማስጀመር ነው. ማን እንደላከው አላውቅም።

"የመጨረሻ" የሚለውን ትዕዛዝ ተመለከትኩኝ እና አንድ ሰው አየሁ ወደዚህ አገልጋይ ከእኛ ጋር የገባ ነገር ግን ጥያቄ ለመጠየቅ በጣም አፍሬ ነበር. ምናልባት ተገድሏል -9. እኔ ግድያ -9 ምዝግብ ማስታወሻዎች ውስጥ ማየት ነበር, ምክንያቱም ፖስትግሬስ ግድያ -9 ወስዷል ይላል፣ ግን በምዝግብ ማስታወሻው ውስጥ አላየሁም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ወደ ፊት ስመለከት ፓትሮኒ ለረጅም ጊዜ ወደ መዝገብ ቤት አልጻፈም - 54 ሰከንድ። እና ሁለት የጊዜ ማህተሞችን ካነፃፅር ለ 54 ሰከንድ ያህል ምንም መልዕክቶች አልነበሩም.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና በዚህ ጊዜ ውስጥ አውቶማቲክ ፋይል ነበር. ፓትሮኒ እዚህ እንደገና ጥሩ ስራ ሰርቷል። አሮጌው ጌታችን አልተገኘም, የሆነ ነገር ገጠመው. እናም የአዲሱ ጌታ ምርጫ ተጀመረ። እዚህ ሁሉም ነገር በደንብ ሠርቷል. የኛ pgsql01 አዲሱ መሪ ሆኗል።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ማስተር የሆነ ቅጂ አለን። እና ሁለተኛ ምላሽ አለ. እና በሁለተኛው ቅጂ ላይ ችግሮች ነበሩ. እንደገና ለማዋቀር ሞከረች። እንደተረዳሁት, recovery.conf ን ለመለወጥ, Postgresን እንደገና ለማስጀመር እና ከአዲሱ ጌታ ጋር ለመገናኘት ሞከረች. እየሞከረች ያለችውን በየ10 ሰከንድ መልእክት ትጽፋለች፣ ግን አልተሳካላትም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና በእነዚህ ሙከራዎች ወቅት, ወዲያውኑ የመዝጋት ምልክት ወደ አሮጌው ጌታ ይደርሳል. ጌታው እንደገና ተጀምሯል። እና ደግሞ ማገገም ይቆማል ምክንያቱም አሮጌው ጌታ ወደ ዳግም ማስነሳት ይሄዳል. ያም ማለት ቅጂው ከእሱ ጋር መገናኘት አይችልም, ምክንያቱም በማጥፋት ሁነታ ላይ ነው.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በአንድ ወቅት, ሠርቷል, ነገር ግን ማባዛት አልጀመረም.

የእኔ ብቸኛ ግምት በ recovery.conf ውስጥ የድሮ ማስተር አድራሻ ነበረ። እና አዲስ ጌታ ሲመጣ, ሁለተኛው ቅጂ አሁንም ከአሮጌው ጌታ ጋር ለመገናኘት ሞክሯል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ፓትሮኒ በሁለተኛው ቅጂ ላይ ሲጀምር መስቀለኛ መንገድ ተጀምሯል ነገር ግን መድገም አልቻለም። እናም የማባዛት መዘግየት ተፈጠረ፣ እሱም እንደዚህ ያለ ነገር ይመስላል። ያም ማለት ሦስቱም አንጓዎች በቦታው ነበሩ, ነገር ግን ሁለተኛው አንጓ ወደ ኋላ ቀርቷል.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

በተመሳሳይ ጊዜ, የተፃፉትን ምዝግብ ማስታወሻዎች ከተመለከቱ, የግብይት ምዝግብ ማስታወሻዎች የተለያዩ ስለሆኑ ማባዛት መጀመር አልቻለም. እና ጌታው የሚያቀርባቸው የግብይት ምዝግብ ማስታወሻዎች በ recovery.conf ውስጥ የተገለጹት በቀላሉ አሁን ካለንበት መስቀለኛ መንገድ ጋር አይጣጣሙም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና እዚህ ስህተት ሰርቻለሁ። ከተሳሳተ ጌታ ጋር እየተገናኘን ነው የሚለውን መላምቴን ለመፈተሽ በ recovery.conf ውስጥ ያለውን ነገር ማየት ነበረብኝ። ግን ከዚያ ይህን ብቻ እያስተናገድኩ ነበር እና በእኔ ላይ አልደረሰብኝም ፣ ወይም ቅጂው ወደ ኋላ እንደቀረ እና እንደገና መሞላት እንዳለበት አየሁ ፣ ማለትም ፣ በሆነ መንገድ በግዴለሽነት ሰራሁ። ይህ የጋራዬ ነበር።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ከ 30 ደቂቃዎች በኋላ አስተዳዳሪው ቀድሞ መጥቷል፣ ማለትም ፓትሮኒን ቅጂውን እንደገና አስጀምሬዋለሁ። አስቀድሜ ጨርሼዋለሁ, እንደገና መሙላት እንዳለበት አስቤ ነበር. እና አሰብኩ - ፓትሮኒን እንደገና አስጀምረዋለሁ ፣ ምናልባት አንድ ጥሩ ነገር ሊመጣ ይችላል። ማገገም ተጀመረ። እና መሰረቱ እንኳን ተከፍቷል, ግንኙነቶችን ለመቀበል ዝግጁ ነበር.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ማባዛት ተጀምሯል። ግን ከአንድ ደቂቃ በኋላ የግብይት ምዝግብ ማስታወሻዎች ለእሷ ተስማሚ አይደሉም በሚል ስህተት ወደቀች።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እንደገና እንደምጀምር አሰብኩ። ፓትሮኒን እንደገና አስጀምሬዋለሁ፣ እና Postgresን እንደገና አልጀመርኩትም፣ ነገር ግን ዳታቤዙን በአስማት ይጀመራል በሚል ተስፋ ፓትሮኒን እንደገና አስጀምሬዋለሁ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ማባዛቱ እንደገና ተጀምሯል, ነገር ግን በግብይት መዝገብ ውስጥ ያሉት ምልክቶች የተለያዩ ናቸው, ከቀዳሚው የመጀመሪያ ሙከራ ጋር ተመሳሳይ አልነበሩም. ማባዛት እንደገና ቆሟል። እና መልእክቱ ቀድሞውኑ ትንሽ የተለየ ነበር። እና ለእኔ በጣም መረጃ ሰጭ አልነበረም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና ከዚያ በእኔ ላይ ይከሰታል - ፖስትግሬስን እንደገና ብጀምር ፣ በዚህ ጊዜ በግብይቱ ምዝግብ ማስታወሻ ውስጥ ነጥቡን ትንሽ ወደፊት ለማንቀሳቀስ አሁን ባለው ጌታ ላይ የፍተሻ ነጥብ አደርጋለሁ እናም ማገገም ከሌላ ጊዜ ይጀምራል? በተጨማሪም፣ አሁንም የWAL አክሲዮኖች ነበሩን።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ፓትሮኒን እንደገና አስጀምሬያለሁ፣ በጌታው ላይ ሁለት የፍተሻ ኬላዎችን አደረግሁ፣ ሲከፈት ቅጂው ላይ ሁለት ድጋሚ ማስጀመሪያ ነጥቦች። እና ረድቷል. ለምን እንደረዳ እና እንዴት እንደሚሰራ ለረጅም ጊዜ አስብ ነበር. እና ቅጂው ተጀመረ። እና ማባዛት ከእንግዲህ አልተቀደደም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ለእኔ እንዲህ ያለው ችግር ይበልጥ ምስጢራዊ ከሆኑት ውስጥ አንዱ ነው ፣ በዚህ ላይ በእውነቱ እዚያ ስለተፈጠረው ነገር አሁንም እንቆቅልሻለሁ።

እዚህ ያለው አንድምታ ምንድን ነው? ፓትሮኒ እንደታሰበው እና ምንም ስህተት ሳይኖር ሊሠራ ይችላል. ግን በተመሳሳይ ጊዜ, ይህ ሁሉም ነገር ከእኛ ጋር ጥሩ መሆኑን 100% ዋስትና አይደለም. ቅጂው ሊጀምር ይችላል, ነገር ግን በከፊል በሚሰራበት ሁኔታ ውስጥ ሊሆን ይችላል, እና አፕሊኬሽኑ ከእንደዚህ አይነት ቅጂ ጋር መስራት አይችልም, ምክንያቱም የድሮ ውሂብ ስለሚኖር.

እና ከፋይሉ በኋላ ሁል ጊዜ ሁሉም ነገር በክላስተር ቅደም ተከተል መሆኑን ማረጋገጥ ያስፈልግዎታል ፣ ማለትም ፣ የሚፈለገው የቅጂዎች ብዛት ፣ የማባዛት መዘግየት የለም።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

እና በእነዚህ ጉዳዮች ውስጥ ስናልፍ, ምክሮችን እሰጣለሁ. እነሱን ወደ ሁለት ስላይዶች ለማጣመር ሞከርኩ። ምናልባት, ሁሉም ታሪኮች ወደ ሁለት ስላይዶች ሊጣመሩ እና ብቻ ሊነገሩ ይችላሉ.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

Patroni ሲጠቀሙ, ክትትል ሊኖርዎት ይገባል. አውቶፋይሌቨር መቼ እንደተከሰተ ሁልጊዜ ማወቅ አለቦት፣ ምክንያቱም ራስ-ሰር ፋይሎቨር እንዳለዎት ካላወቁ በክላስተር ላይ ምንም አይነት ቁጥጥር የለዎትም። ያ ደግሞ መጥፎ ነው።

ከእያንዳንዱ ፋይል ሰጭ በኋላ ሁል ጊዜ ክላስተርን በእጅ ማረጋገጥ አለብን። ሁልጊዜ ወቅታዊ የሆኑ የተባዛዎች ቁጥር እንዳለን ማረጋገጥ አለብን, ምንም የማባዛት መዘግየት የለም, ከዥረት ማባዛት ጋር በተያያዙ ምዝግብ ማስታወሻዎች ውስጥ ምንም ስህተቶች የሉም, ከፓትሮኒ ጋር, ከዲሲኤስ ሲስተም ጋር.

አውቶማቲክ በተሳካ ሁኔታ ሊሠራ ይችላል, Patroni በጣም ጥሩ መሣሪያ ነው. ሊሠራ ይችላል, ነገር ግን ይህ ክላስተር ወደሚፈለገው ሁኔታ አያመጣም. ጉዳዩን ካላወቅን ደግሞ ችግር ውስጥ እንገባለን።

እና ፓትሮኒ የብር ጥይት አይደለም. አሁንም ፖስትግሬስ እንዴት እንደሚሰራ፣ እንዴት ማባዛት እንደሚሰራ እና Patroni ከ Postgres ጋር እንዴት እንደሚሰራ እና በመስቀለኛ መንገድ መካከል ግንኙነት እንዴት እንደሚሰጥ አሁንም መረዳት አለብን። በእጆችዎ ላይ ችግሮችን ለማስተካከል ይህ አስፈላጊ ነው.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

የምርመራውን ጉዳይ እንዴት እቀርባለሁ? ከተለያዩ ደንበኞች ጋር ስንሰራ እና ማንም የ ELK ቁልል ያለው የለም እና 6 ኮንሶሎች እና 2 ታብ በመክፈት ምዝግብ ማስታወሻዎቹን መለየት አለብን። በአንድ ትር ውስጥ እነዚህ ለእያንዳንዱ መስቀለኛ መንገድ የ Patroni ምዝግብ ማስታወሻዎች ናቸው, በሌላኛው ትር ውስጥ እነዚህ የቆንስላ ምዝግብ ማስታወሻዎች ወይም አስፈላጊ ከሆነ ፖስትግሬስ ናቸው. ይህንን ለመመርመር በጣም ከባድ ነው.

ምን ዓይነት አካሄዶችን አዳብሬያለሁ? በመጀመሪያ ፣ ፋይሉ ሲመጣ ሁል ጊዜ እመለከታለሁ። እና ለእኔ ይህ የውሃ ተፋሰስ ነው። ከፋይሉ በፊት፣ በፋይሉ ጊዜ እና ከፋይሉ በኋላ የሆነውን እመለከታለሁ። የፋይል ኦቨር ሁለት ምልክቶች አሉት፡ ይህ የመጀመሪያ እና የመጨረሻ ጊዜ ነው።

በመቀጠል, ከፋይሉ በፊት ለሚከሰቱ ክስተቶች በምዝግብ ማስታወሻዎች ውስጥ እመለከታለሁ, ይህም ከፋይሉ በፊት, ማለትም ፋይሉ የተከሰተበትን ምክንያቶች እፈልጋለሁ.

እናም ይህ ምን እንደተፈጠረ እና ወደፊት ምን ሊደረግ እንደሚችል የመረዳትን ምስል ይሰጣል እንደዚህ አይነት ሁኔታዎች እንዳይከሰቱ (እና በውጤቱም, ምንም ፋይል ሰጭ የለም).

እና አብዛኛውን ጊዜ የት ነው የምንመለከተው? እመለከተዋለሁ፡

  • በመጀመሪያ, ወደ Patroni ምዝግብ ማስታወሻዎች.
  • በመቀጠል, በ Patroni ምዝግብ ማስታወሻዎች ውስጥ በተገኘው ላይ በመመስረት የ Postgres ምዝግብ ማስታወሻዎችን ወይም የዲ.ሲ.ኤስ.
  • እና የስርዓት ምዝግብ ማስታወሻዎች አንዳንድ ጊዜ የፋይሉን መንስኤ ምን እንደሆነ ግንዛቤ ይሰጣሉ.

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ስለ Patroni ምን ይሰማኛል? ከፓትሮኒ ጋር በጣም ጥሩ ግንኙነት አለኝ። በእኔ አስተያየት ይህ ዛሬ ያለው ምርጥ ነው. ሌሎች ብዙ ምርቶችን አውቃለሁ። እነዚህ ስቶሎን፣ Repmgr፣ Pg_auto_failover፣ PAF ናቸው። 4 መሳሪያዎች. ሁሉንም ሞከርኳቸው። ፓትሮኒ የእኔ ተወዳጅ ነው.

እነሱ ከጠየቁኝ: "እኔ Patroni እንመክራለን?". አዎን እላለሁ፣ ምክንያቱም ፓትሮኒ ስለምወደው። እና እንዴት ማብሰል እንዳለብኝ የተማርኩ ይመስለኛል.

ከጠቀስኳቸው ችግሮች በተጨማሪ ከፓትሮኒ ጋር ምን አይነት ችግሮች እንዳሉ ለማየት ከፈለጋችሁ ሁል ጊዜ ገፁን ማየት ትችላላችሁ ጉዳዮች በ GitHub ላይ. ብዙ የተለያዩ ታሪኮች አሉ እና ብዙ አስደሳች ጉዳዮች እዚያ ተብራርተዋል. እና በውጤቱም ፣ አንዳንድ ስህተቶች ቀርበዋል እና ተፈትተዋል ፣ ማለትም ፣ ይህ አስደሳች ንባብ ነው።

ሰዎች በእግራቸው ውስጥ እራሳቸውን ስለተኮሱ አንዳንድ አስደሳች ታሪኮች አሉ። በጣም መረጃ ሰጭ። ይህን ለማድረግ አስፈላጊ እንዳልሆነ አንብበው ተረድተዋል. ራሴን ምልክት አደረግሁ።

እናም ይህን ፕሮጀክት ስላዘጋጀው ዛላንዶን ማለትም ለአሌክሳንደር ኩኩሽኪን እና ለአሌክሲ ክሊዩኪን ትልቅ ምስጋናዬን አቀርባለሁ። አሌክሲ ክሊኩኪን ከተባባሪዎቹ ደራሲዎች አንዱ ነው, ከአሁን በኋላ በዛላንዶ አይሰራም, ነገር ግን እነዚህ ሁለት ሰዎች ከዚህ ምርት ጋር መሥራት የጀመሩ ናቸው.

እና ፓትሮኒ በጣም ጥሩ ነገር ነው ብዬ አስባለሁ። በመኖሯ ደስተኛ ነኝ፣ ከእሷ ጋር አስደሳች ነው። እና ለፓትሮኒ ፕላስተሮችን ለሚጽፉ አስተዋፅዖ አበርካቾች ሁሉ ታላቅ ምስጋና ይገባቸዋል። ፓትሮኒ ከእድሜ ጋር የበለጠ ጎልማሳ፣ አሪፍ እና ቀልጣፋ እንደሚሆን ተስፋ አደርጋለሁ። ቀድሞውንም የሚሰራ ነው፣ ግን የበለጠ የተሻለ እንደሚሆን ተስፋ አደርጋለሁ። ስለዚህ, Patroni ለመጠቀም ካቀዱ, ከዚያ አይፍሩ. ይህ ጥሩ መፍትሄ ነው, ሊተገበር እና ጥቅም ላይ ሊውል ይችላል.

ይኼው ነው. ጥያቄዎች ካሉዎት ይጠይቁ።

Patroni Failure ታሪኮች ወይም የእርስዎን PostgreSQL ዘለላ እንዴት እንደሚበላሽ። አሌክሲ ሌሶቭስኪ

ጥያቄዎች

ለሪፖርቱ እናመሰግናለን! ከፋይለር በኋላ አሁንም እዚያ በጣም በጥንቃቄ መፈለግ ካለብዎት ታዲያ ለምን አውቶማቲክ ፋይል አድራጊ ያስፈልገናል?

ምክንያቱም አዲስ ነገር ነው። ከእሷ ጋር አንድ ዓመት ብቻ ነበርን. ደህና መሆን ይሻላል። ወደ ውስጥ ገብተን ሁሉም ነገር በሚፈለገው መንገድ እንደሰራ ማየት እንፈልጋለን። ይህ የአዋቂዎች አለመተማመን ደረጃ ነው - እንደገና መመርመር እና ማየት የተሻለ ነው።

ለምሳሌ ጠዋት ሄደን አይተናል አይደል?

በማለዳ ላይ አይደለም፣ ስለ አውቶማቲክ ፋይሉ ወዲያውኑ እንማራለን። ማሳወቂያዎችን እንቀበላለን፣ አውቶፋይል መከሰቱን እናያለን። ወዲያው ሄደን እንመለከታለን። ነገር ግን እነዚህ ሁሉ ቼኮች ወደ ክትትል ደረጃ መቅረብ አለባቸው. Patroniን በREST API ከደረስክ ታሪክ አለ። በታሪክ ፋይሉ የተከሰተበትን የጊዜ ማህተም ማየት ይችላሉ። በዚህ መሠረት ክትትል ማድረግ ይቻላል. ምን ያህል ክስተቶች እንደነበሩ, ታሪኩን ማየት ይችላሉ. ተጨማሪ ክስተቶች ካሉን አውቶፋይል ተከስቷል። ሄዳችሁ ማየት ትችላላችሁ። ወይም የእኛ የክትትል አውቶማቲክ ሁሉም ቅጂዎች እንዳሉን አረጋግጧል፣ ምንም መዘግየት የለም እና ሁሉም ነገር ደህና ነው።

እናመሰግናለን!

ለታላቁ ታሪክ በጣም እናመሰግናለን! የDCS ክላስተርን ከፖስትግሬስ ክላስተር ራቅ ወዳለ ቦታ ካንቀሳቅስን፣ ታዲያ ይህ ክላስተር እንዲሁ በየጊዜው አገልግሎት መስጠት አለበት? አንዳንድ የDCS ክላስተር ቁርጥራጮች ማጥፋት የሚያስፈልጋቸው፣ ከነሱ ጋር የሆነ ነገር፣ ወዘተ የሚገባቸው ምርጥ ልምዶች ምንድናቸው? ይህ አጠቃላይ መዋቅር እንዴት ይኖራል? እና እነዚህን ነገሮች እንዴት ታደርጋለህ?

ለአንድ ኩባንያ የችግሮች ማትሪክስ ማዘጋጀት አስፈላጊ ነበር, አንዱ ክፍሎች ወይም ብዙ አካላት ካልተሳኩ ምን ይከሰታል. በዚህ ማትሪክስ መሰረት, ሁሉንም ክፍሎች በቅደም ተከተል እናልፋለን እና የእነዚህ ክፍሎች ብልሽት ሲከሰት ሁኔታዎችን እንገነባለን. በዚህ መሠረት, ለእያንዳንዱ ውድቀት ሁኔታ, ለማገገም የድርጊት መርሃ ግብር ሊኖርዎት ይችላል. እና በዲ.ሲ.ኤስ ሁኔታ, እንደ መደበኛው መሠረተ ልማት አካል ነው የሚመጣው. እና አስተዳዳሪው ያስተዳድራል, እና እኛ ቀድሞውኑ በሚያስተዳድሩት አስተዳዳሪዎች እና በአደጋ ጊዜ ማስተካከል በሚችሉት ላይ እንተማመናለን. ምንም DCS የለም ከሆነ, ከዚያም እኛ እናሰማራለን, ነገር ግን በተመሳሳይ ጊዜ እኛ በተለይ ክትትል አይደለም, ምክንያቱም እኛ መሠረተ ልማት ተጠያቂ አይደሉም, ነገር ግን እኛ እንዴት እና ምን ክትትል ላይ ምክሮችን መስጠት.

ማለትም፣ ከአስተናጋጆች ጋር ማንኛውንም ነገር ከማድረግዎ በፊት Patroniን ማሰናከል፣ ፋይሉን ማሰናከል፣ ሁሉንም ነገር ማሰናከል እንዳለብኝ በትክክል ተረድቻለሁ?

በዲሲ ክላስተር ውስጥ ስንት ኖዶች እንዳለን ይወሰናል። ብዙ አንጓዎች ካሉ እና ከአንጓዎቹ አንዱን ብቻ (ብዜቱን) ካሰናከልን ክላስተር ምልአተ ጉባኤ ይይዛል። እና Patroni አሁንም እየሰራ ነው። እና ምንም ነገር አይቀሰቀስም. ተጨማሪ አንጓዎችን የሚነኩ አንዳንድ ውስብስብ ክንዋኔዎች ካሉን፣ እነዚህ አለመኖራቸው ምልአተ ጉባኤውን ሊያበላሽ ይችላል፣ ከዚያ - አዎ፣ Patroniን ለአፍታ ማቆም ጠቃሚ ሊሆን ይችላል። ተዛማጅ ትዕዛዝ አለው - patronictl pause, patronictl resume. ዝም ብለን እናቆማለን እና አውቶፋይለር በዚያ ጊዜ አይሰራም። በDCS ክላስተር ላይ ጥገና እንሰራለን፣ከዚያም ፋታውን አውጥተን መኖራችንን እንቀጥላለን።

በጣም እናመሰግናለን!

ለሪፖርትህ በጣም አመሰግናለሁ! የምርት ቡድኑ መረጃ ስለጠፋ ምን ይሰማዋል?

የምርት ቡድኖች ግድ የላቸውም፣ እና የቡድን መሪዎች ይጨነቃሉ።

ምን ዋስትናዎች አሉ?

ዋስትናዎች በጣም አስቸጋሪ ናቸው. አሌክሳንደር ኩኩሽኪን "RPO እና RTO እንዴት እንደሚሰላ" ሪፖርት አለው, ማለትም የመልሶ ማግኛ ጊዜ እና ምን ያህል ውሂብ ልናጣ እንችላለን. እነዚህን ስላይዶች ማግኘት እና ማጥናት ያለብን ይመስለኛል። እኔ እስከማስታውስ ድረስ, እነዚህን ነገሮች እንዴት ማስላት እንደሚቻል የተወሰኑ ደረጃዎች አሉ. ምን ያህል ግብይቶችን ልናጣ እንችላለን፣ ምን ያህል ውሂብ ልናጣ እንችላለን። እንደ አማራጭ፣ የተመሳሰለ ማባዛትን በ Patroni ደረጃ መጠቀም እንችላለን፣ ነገር ግን ይህ ባለ ሁለት አፍ ጎራዴ ነው፡ ወይ የውሂብ አስተማማኝነት አለን ወይም ፍጥነት እናጣለን። የተመሳሰለ ማባዛት አለ፣ ነገር ግን ከመረጃ መጥፋት 100% ጥበቃን አያረጋግጥም።

አሌክሲ ፣ ስለ ጥሩ ዘገባ እናመሰግናለን! Patroniን ለዜሮ ደረጃ ጥበቃ የመጠቀም ልምድ አለ? ማለትም ከተመሳሰለ ተጠባባቂ ጋር በማጣመር? ይህ የመጀመሪያው ጥያቄ ነው። እና ሁለተኛው ጥያቄ. የተለያዩ መፍትሄዎችን ተጠቅመዋል። እኛ Repmgr ን ተጠቀምን ፣ ግን ያለ አውቶፋይለር ፣ እና አሁን አውቶፋይለርን ለማካተት አቅደናል። እና Patroni እንደ አማራጭ መፍትሄ እንመለከታለን. ከ Repmgr ጋር ሲወዳደር እንደ ጥቅሞች ምን ማለት ይችላሉ?

የመጀመሪያው ጥያቄ የተመሳሰለ ቅጂዎች ነበር። እዚህ ማንም ሰው የተመሳሰለ ማባዛትን አይጠቀምም ፣ ምክንያቱም ሁሉም ሰው ስለሚፈራ (በርካታ ደንበኞች ቀድሞውኑ እየተጠቀሙበት ነው ፣ በመሠረቱ ፣ የአፈፃፀም ችግሮችን አላስተዋሉም - የተናጋሪ ማስታወሻ). ነገር ግን በተመሳሰለ የማባዛት ክላስተር ውስጥ ቢያንስ ሶስት አንጓዎች ሊኖሩ እንደሚገባ ለራሳችን ህግ አዘጋጅተናል ምክንያቱም ሁለት አንጓዎች ካሉን እና ማስተር ወይም ቅጂው ካልተሳካ ፓትሮኒ አፕሊኬሽኑ እንዲቀጥል ይህን መስቀለኛ መንገድ ወደ Standalone ሁነታ ይቀይረዋል. ሥራ ። በዚህ አጋጣሚ የውሂብ መጥፋት አደጋ አለ.

ሁለተኛውን ጥያቄ በተመለከተ፣ Repmgr ን ተጠቅመናል እና አሁንም ከአንዳንድ ደንበኞች ጋር ለታሪካዊ ምክንያቶች እናደርጋለን። ምን ማለት ይቻላል? Patroni ከሳጥኑ ውስጥ ከአውቶፋይለር ጋር አብሮ ይመጣል፣ Repmgr መንቃት የሚያስፈልገው ተጨማሪ ባህሪ ሆኖ ከአውቶፋይለር ጋር አብሮ ይመጣል። በእያንዳንዱ መስቀለኛ መንገድ ላይ Repmgr daemon ን ማስኬድ አለብን ከዚያም አውቶማቲክን ማዋቀር እንችላለን።

Repmgr የ Postgres nodes በህይወት እንዳሉ ያረጋግጣል። Repmgr ሂደቶች እርስ በእርሳቸው መኖራቸውን ይፈትሹ, ይህ በጣም ቀልጣፋ አቀራረብ አይደለም. አንድ ትልቅ Repgr ክላስተር ወደ ብዙ ትናንሽ ተከፋፍሎ መሥራት የሚቀጥልበት ውስብስብ የአውታረ መረብ ማግለል ጉዳዮች ሊኖሩ ይችላሉ። እኔ Repmgr ለረጅም ጊዜ አልተከታተልኩም, ምናልባት ተስተካክሏል ... ወይም ምናልባት ላይሆን ይችላል. ነገር ግን በዲሲ ውስጥ ስለ ክላስተር ሁኔታ መረጃን ማስወገድ, Stolon, Patroni እንደሚያደርገው, በጣም ውጤታማው አማራጭ ነው.

አሌክሲ, አንድ ጥያቄ አለኝ, ምናልባት አንካሳ. ከመጀመሪያዎቹ ምሳሌዎች ውስጥ፣ DCSን ከአካባቢው ማሽን ወደ የርቀት አስተናጋጅ ወስደዋል። ኔትወርኩ የራሱ ባህሪ ያለው፣ በራሱ የሚኖር ነገር መሆኑን እንረዳለን። እና በሆነ ምክንያት የDCS ክላስተር የማይገኝ ከሆነ ምን ይከሰታል? ምክንያቶቹን አልናገርም, ብዙ ሊሆኑ ይችላሉ: ከአውታረ መረብ ሰሪዎች ጠማማ እጆች እስከ እውነተኛ ችግሮች.

ጮክ ብዬ አልተናገርኩትም፣ ነገር ግን የDCS ክላስተር እንዲሁ መክሸፍ አለበት፣ ማለትም፣ ምልአተ ጉባኤው እንዲሟላ ያልተለመደ የአንጓዎች ቁጥር ነው። የDCS ክላስተር የማይገኝ ከሆነ፣ ወይም ምልአተ ጉባኤው ሊሟላ ካልቻለ፣ ማለትም አንድ ዓይነት የአውታረ መረብ ስንጥቅ ወይም መስቀለኛ መንገድ ካልተሳካ ምን ይከሰታል? በዚህ አጋጣሚ የ Patroni ክላስተር ወደ ማንበብ ብቻ ሁነታ ይሄዳል። የ Patroni ክላስተር የክላስተርን ሁኔታ እና ምን ማድረግ እንዳለበት ሊወስን አይችልም። DCSን አግኝቶ አዲሱን የክላስተር ግዛት እዚያ ሊያከማች አይችልም፣ ስለዚህ ክላስተር ወደ ማንበብ ብቻ ይገባል:: እና ከኦፕሬተሩ የእጅ ጣልቃ ገብነት ወይም DCS እስኪያገግም ይጠብቃል።

በግምት፣ DCS እንደ መሰረቱ ጠቃሚ አገልግሎት ይሆንልናል?

አዎ አዎ. በብዙ ዘመናዊ ኩባንያዎች ውስጥ የአገልግሎት ግኝት የመሠረተ ልማት ዋና አካል ነው። በመሠረተ ልማት አውታሮች ውስጥ እንኳን የመረጃ ቋት ሳይኖር በፊትም ተግባራዊ እየተደረገ ነው። በአንፃራዊነት፣ መሠረተ ልማቱ ተጀምሯል፣ በዲሲ ውስጥ ተሰማርቷል፣ እና ወዲያውኑ የአገልግሎት ግኝት አለን። ቆንስል ከሆነ ዲ ኤን ኤስ በላዩ ላይ ሊገነባ ይችላል። ይህ ወዘተ ከሆነ, ከኩበርኔትስ ክላስተር አንድ ክፍል ሊኖር ይችላል, በውስጡም ሁሉም ነገር የሚሰማራበት. ለእኔ እንደሚመስለኝ ​​የአገልግሎት ግኝት የዘመናዊ መሠረተ ልማት አውታሮች አካል ነው። እና ስለ የውሂብ ጎታዎች በጣም ቀደም ብለው ያስባሉ.

እናመሰግናለን!

ምንጭ: hab.com

አስተያየት ያክሉ