ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ከ 2019 መጀመሪያ ጀምሮ የሪፖርቱን ግልባጭ እንዲያነቡ ሀሳብ አቀርባለሁ በአንድሬ ቦሮዲን “ምትኬ ከዋል-ጂ ጋር። በ2019 ምን አለ?”

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ሰላም ሁላችሁም! ስሜ አንድሬ ቦሮዲን እባላለሁ። እኔ በ Yandex ውስጥ ገንቢ ነኝ። ከ 2016 ጀምሮ በ PostgreSQL ላይ ፍላጎት ነበረኝ ፣ ከገንቢዎች ጋር ከተነጋገርኩ በኋላ ሁሉም ነገር ቀላል ነው ብለዋል - የምንጭ ኮድ ወስደህ ገንባ ፣ እና ሁሉም ነገር ይከናወናል። እና ከዚያን ጊዜ ጀምሮ ማቆም አልችልም - ሁሉንም አይነት የተለያዩ ነገሮችን እጽፋለሁ.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲንከምሰራባቸው ነገሮች አንዱ የመጠባበቂያ ስርዓት ነው። ዋል-ጂ. በአጠቃላይ በ Yandex ውስጥ በ PostgreSQL ውስጥ በመጠባበቂያ ስርዓቶች ላይ በጣም ለረጅም ጊዜ እየሰራን ነው. እና የመጠባበቂያ ስርዓቶችን እንዴት እንደምናደርግ ተከታታይ ስድስት ሪፖርቶችን በኢንተርኔት ላይ ማግኘት ይችላሉ. እና በየዓመቱ በጥቂቱ ይሻሻላሉ, ትንሽ ያድጋሉ እና የበለጠ አስተማማኝ ይሆናሉ.

ዛሬ ግን ሪፖርቱ ያደረግነውን ብቻ ሳይሆን ቀላል እንደሆነ እና ምን እንደሆነም ጭምር ነው። ስለ ዋል-ጂ ያቀረብኳቸውን ሪፖርቶች ስንቶቻችሁ ተመልክታችኋል? በጣም ጥቂት ሰዎች ባይመለከቷቸው ጥሩ ነው ምክንያቱም እኔ በቀላል ነገር እጀምራለሁ.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በድንገት የ PostgreSQL ክላስተር ካለዎት እና ሁሉም ሰው ከእነሱ ጋር አንድ ጥንድ ያለው ይመስለኛል ፣ እና በድንገት የመጠባበቂያ ስርዓት ገና የለም ፣ ከዚያ ማንኛውንም የ S3 ማከማቻ ወይም ጉግል ክላውድ ተስማሚ ማከማቻ ማግኘት ያስፈልግዎታል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ለምሳሌ፣ ወደ እኛ መቆሚያ መጥተው የማስተዋወቂያ ኮድ ለ Yandex Object Storage መውሰድ ይችላሉ፣ ይህም S3 ተኳሃኝ ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ከዚያም አንድ ባልዲ ይፍጠሩ. ለመረጃ የሚሆን መያዣ ብቻ ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

የአገልግሎት ተጠቃሚ ይፍጠሩ።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ለአገልግሎት ተጠቃሚው የመዳረሻ ቁልፍ ይፍጠሩ፡ aws-s3-key።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

የቅርብ ጊዜውን የተረጋጋ የWAL-G ልቀት ያውርዱ።

የእኛ ቅድመ-ልቀቶች ከተለቀቁት እንዴት ይለያሉ? ብዙ ጊዜ ቶሎ እንድፈታ እጠይቃለሁ። እና በቂ ጊዜ በስሪት ውስጥ ምንም ስህተት ከሌለ ለምሳሌ ለአንድ ወር, ከዚያም እለቅቀዋለሁ. ይህ ከህዳር ወር የተለቀቀው ይኸው ነው። እና ይሄ ማለት በየወሩ አንዳንድ አይነት ስህተቶችን አግኝተናል፣ አብዛኛውን ጊዜ ወሳኝ ባልሆኑ ተግባራት ውስጥ፣ ነገር ግን እስካሁን ልቀት አልለቀንም። የቀደመው እትም ህዳር ብቻ ነው። በውስጡ ምንም የምናውቃቸው ሳንካዎች የሉም፣ ማለትም ፕሮጀክቱ እየገፋ ሲሄድ ሳንካዎች ተጨምረዋል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

WAL-Gን ካወረዱ በኋላ በአካባቢ ተለዋዋጮች ውስጥ በማለፍ ቀላል "የመጠባበቂያ ዝርዝር" ትዕዛዝ ማሄድ ይችላሉ። እና ከነገር ማከማቻ ጋር ይገናኛል እና ምን ምትኬዎች እንዳሉዎት ይነግርዎታል። መጀመሪያ ላይ, በእርግጥ, ምትኬዎች ሊኖሩዎት አይገባም. የዚህ ስላይድ ነጥብ ሁሉም ነገር በጣም ቀላል መሆኑን ለማሳየት ነው. ይህ የአካባቢ ተለዋዋጮችን የሚቀበል እና ንዑስ ትዕዛዞችን የሚያስፈጽም የኮንሶል ትእዛዝ ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ከዚህ በኋላ, የእርስዎን የመጀመሪያ ምትኬ ማድረግ ይችላሉ. በWAL-G ውስጥ “backup-push” ይበሉ እና በWAL-G የክላስተርዎን pgdata አካባቢ ይግለጹ። እና ምናልባት፣ PostgreSQL አስቀድሞ የመጠባበቂያ ስርዓት ከሌለዎት “archive-mode”ን ማንቃት እንዳለቦት ይነግርዎታል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ይህ ማለት ወደ ቅንጅቶች መሄድ እና "archive_mode = on" ን ማብራት እና "archive_command" ማከል ያስፈልግዎታል ይህም በWAL-G ውስጥም ንዑስ ትዕዛዝ ነው። ግን በሆነ ምክንያት ሰዎች ብዙውን ጊዜ በዚህ ርዕስ ላይ የባር ስክሪፕቶችን ይጠቀማሉ እና በWAL-G ዙሪያ ይጠቀለላሉ። እባካችሁ ይህን አታድርጉ። በWAL-G ውስጥ የሚገኘውን ተግባር ተጠቀም። የሆነ ነገር ከጎደለዎት ይፃፉ የፊልሙ. ዋል-ጂ በማህደር_ትእዛዝ የሚሰራ ብቸኛው ፕሮግራም እንደሆነ ያስባል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

WAL-Gን የምንጠቀመው በዋናነት በ Yandex ዳታቤዝ አስተዳደር ውስጥ ከፍተኛ ተደራሽነት ክላስተር ለመፍጠር ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እና አብዛኛው ጊዜ በአንድ ማስተር ቶፖሎጂ እና በርካታ ማባዛቶች ውስጥ ጥቅም ላይ ይውላል። በተመሳሳይ ጊዜ, በ Yandex Object Storage ውስጥ የመጠባበቂያ ቅጂ ይሠራል.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በጣም የተለመዱት ሁኔታዎች በጊዜ ማገገሚያ ነጥብ በመጠቀም የክላስተር ቅጂዎችን መፍጠር ናቸው። ነገር ግን በዚህ ሁኔታ, የመጠባበቂያ ስርዓቱ አፈፃፀም ለእኛ በጣም አስፈላጊ አይደለም. ከመጠባበቂያው ላይ አዲስ ክላስተር መስቀል ብቻ ያስፈልገናል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በተለምዶ፣ አዲስ መስቀለኛ መንገድ ስንጨምር የመጠባበቂያ ስርዓት አፈጻጸም እንፈልጋለን። ለምን አስፈላጊ ነው? በተለምዶ ሰዎች አዲስ መስቀለኛ መንገድ ወደ ክላስተር ያክላሉ ምክንያቱም ነባሩ ዘለላ የተነበበ ሸክሙን መቋቋም አይችልም። አዲስ ቅጂ ማከል አለባቸው። ጭነቱን ከpg_basebackup ወደ ማስተር ካከልነው፣ ማስተር ሊፈርስ ይችላል። ስለዚህ፣ በመምህሩ ላይ አነስተኛ ጭነት በመፍጠር አዲስ መስቀለኛ መንገድን በፍጥነት ከማህደሩ መስቀል መቻላችን በጣም አስፈላጊ ነበር።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እና ሌላ ተመሳሳይ ሁኔታ. ክላስተር ማስተርን ከውሂብ ማእከል ከቀየሩ በኋላ ግንኙነቱ ከጠፋ በኋላ የድሮውን ማስተር ማስጀመር ያስፈልጋል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

  • በውጤቱም፣ ለቅጂ ስርዓቱ የሚያስፈልጉትን መስፈርቶች ስንቀርፅ፣ pg_basebackup በደመና ውስጥ ስንሰራ ለእኛ ተስማሚ እንዳልሆነ ተረድተናል።
  • የእኛን ውሂብ መጭመቅ መቻል እንፈልጋለን። ነገር ግን በሳጥኑ ውስጥ ካለው በስተቀር ማንኛውም የመጠባበቂያ ስርዓት የውሂብ መጨናነቅን ያቀርባል.
  • በደመና ውስጥ ያለ ተጠቃሚ ብዙ ቁጥር ያላቸውን ፕሮሰሰር ኮሮች ስለሚገዛ ሁሉንም ነገር ማመሳሰል እንፈልጋለን። ግን በአንዳንድ ክዋኔዎች ውስጥ ትይዩነት ከሌለን ብዙ ቁጥር ያላቸው ኮሮች ከንቱ ይሆናሉ።
  • ምስጠራ ያስፈልገናል ምክንያቱም ብዙ ጊዜ ውሂቡ የእኛ ስላልሆነ ግልጽ በሆነ ጽሑፍ ውስጥ ሊቀመጥ ስለማይችል። በነገራችን ላይ፣ ለዋል-ጂ ያደረግነው አስተዋፅዖ የጀመረው በማመስጠር ነው። ኢንክሪፕሽኑን በWAL-G ጨርሰናል፣ከዚያ በኋላ “ምናልባት ከመካከላችን አንዱ ፕሮጀክቱን እናዘጋጅ ይሆናል?” ተጠየቅን። እና ከዚያን ጊዜ ጀምሮ ከዋል-ጂ ጋር ከአንድ አመት በላይ እየሰራሁ ነው።
  • እንዲሁም የሀብት ስሮትሊንግ ያስፈልገን ነበር፣ ምክንያቱም ከጊዜ በኋላ ደመናን በመጠቀም አንዳንድ ጊዜ ሰዎች በምሽት ጠቃሚ የግሮሰሪ ጭነት እንዳላቸው እና ይህ ጭነት ጣልቃ ሊገባ እንደማይችል ደርሰንበታል። ለዚያም ነው የመርጃ ቁጠባን የጨመርነው።
  • እንዲሁም ዝርዝር እና አስተዳደር.
  • እና ማረጋገጫ።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ብዙ የተለያዩ መሳሪያዎችን ተመልክተናል. እንደ እድል ሆኖ፣ በ PostgreSQL ውስጥ ትልቅ ምርጫ አለን። እና በየቦታው አንድ ነገር ጎድሎብን ነበር፣ አንዳንድ አንድ ትንሽ ተግባር፣ ሌላም ትንሽ ባህሪ።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እና ያሉትን ስርዓቶች ከመረመርን በኋላ፣ ዋል-ጂ እናዳብራለን ወደሚል መደምደሚያ ደርሰናል። ያኔ አዲስ ፕሮጀክት ነበር። የመጠባበቂያ ስርዓቱን ወደ ደመና መሠረተ ልማት ላይ ተጽዕኖ ማሳደር በጣም ቀላል ነበር።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

የምንይዘው ዋናው ርዕዮተ ዓለም WAL-G እንደ ባላላይካ ቀላል መሆን አለበት የሚለው ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ዋል-ጂ 4 ትዕዛዞች አሉት። ይህ፡-

WAL-PUSH - ዘንጎውን በማህደር ያስቀምጡ.

WAL-FETCH - ዘንግ ያግኙ.

ምትኬ-ግፋ - ምትኬ ይስሩ።

BACKUP-FETCH - ከመጠባበቂያ ስርዓቱ ምትኬን ያግኙ።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እንደ እውነቱ ከሆነ፣ WAL-G የእነዚህን ምትኬዎች ማለትም በአሁኑ ጊዜ የማያስፈልጉትን መዝገቦችን እና መጠባበቂያዎችን መዘርዘር እና ማጥፋት ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ለእኛ አስፈላጊ ከሆኑት ተግባራት አንዱ የዴልታ ቅጂዎችን የመፍጠር ተግባር ነው.

የዴልታ ቅጂዎች ማለት የአጠቃላይ ክላስተር ሙሉ ምትኬን አንፈጥርም ነገር ግን በክላስተር ውስጥ የተቀየሩትን የተቀየሩ ፋይሎች ገጾች ብቻ ነው። በተግባራዊነት ይህ WALን በመጠቀም ከማገገም ችሎታ ጋር በጣም ተመሳሳይ ይመስላል። ነገር ግን የWAL ባለአንድ ክር የዴልታ ምትኬን በትይዩ ማንከባለል እንችላለን። በዚህ መሰረት በቅዳሜ የተሰራ መሰረታዊ መጠባበቂያ ሲኖረን ዴልታ ባክቴጅ በየቀኑ እና ሀሙስ ስንወድቅ 4 ዴልታ ባክአፕ እና የ10 ሰአታት ዋልታ መጠቅለል አለብን። የዴልታ መጠባበቂያዎች በትይዩ ስለሚሽከረከሩ ተመሳሳይ ጊዜ ይወስዳል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

LSN-based deltas - ይህ ማለት ምትኬን ስንፈጥር እያንዳንዱን ገጽ በማጣመር LSN ን ከቀድሞው መጠባበቂያ LSN ጋር በማጣራት መቀየሩን እንድንረዳ ያስፈልጋል። የተቀየረ ውሂብ ሊይዝ የሚችል ማንኛውም ገጽ በዴልታ ምትኬ ውስጥ መገኘት አለበት።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እንዳልኩት፣ ለትይዩነት ብዙ ትኩረት ተሰጥቷል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ነገር ግን በ PostgreSQL ውስጥ ያለው ማህደር ኤፒአይ ወጥነት ያለው ነው። PostgreSQL አንድ የWAL ፋይል ያከማቻል እና ወደነበረበት ሲመለስ አንድ የWAL ፋይል ይጠይቃል። ነገር ግን የመረጃ ቋቱ አንድ የWAL ፋይል ሲጠይቅ "WAL-FETCH" የሚለውን ትዕዛዝ በመጠቀም "WAL-PREFETCH" ብለን እንጠራዋለን፣ ይህም ቀጣዮቹን 8 ፋይሎች ከዕቃ ማከማቻው ላይ መረጃ ለማምጣት በትይዩ ያዘጋጃል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲንእና የውሂብ ጎታው አንድ ፋይል እንድናስይዝ ሲጠይቀን, archive_statusን እንመለከታለን እና ሌሎች የWAL ፋይሎች ካሉ እናያለን. እና WAL ን በትይዩ ለማውረድ እየሞከርን ነው። ይህ ጉልህ የሆነ የአፈፃፀም ትርፍ ያስገኛል እና በማህደር ያልተቀመጡ ዋልታዎች ውስጥ ያለውን ርቀት በእጅጉ ይቀንሳል። ብዙ የመጠባበቂያ ስርዓት ገንቢዎች ይህ በጣም አደገኛ ስርዓት ነው ብለው ያምናሉ ምክንያቱም እኛ የ PostgreSQL API ባልሆነው የኮድ ውስጣዊ እውቀት ላይ ነው። PostgreSQL ለእኛ የArchive_status አቃፊ መገኘቱን ዋስትና አይሰጥም እና የትርጉም ጽሑፍ ፣ እዚያ ለ WAL ፋይሎች ዝግጁነት ምልክቶች መኖራቸውን ዋስትና አይሰጥም። ቢሆንም፣ የምንጭ ኮድን እያጠናን ነው፣ ይህ እንዳለ እናያለን እና እሱን ለመጠቀም እየሞከርን ነው። እና PostgreSQL የሚሠራበትን አቅጣጫ እንቆጣጠራለን ፣ በድንገት ይህ ዘዴ ከተሰበረ እሱን መጠቀሙን እናቆማለን።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በንጹህ መልክ፣ LSN ላይ የተመሰረተ ዋል ዴልታ በፋይል ስርዓቱ ውስጥ ያለው ሞድ ጊዜ ካለፈው ምትኬ ጀምሮ የተቀየረ ማንኛውንም የክላስተር ፋይል ማንበብ ይፈልጋል። ከዚህ ጋር ለረጅም ጊዜ ኖረናል፣ አንድ አመት ሊጠጋ። እና በመጨረሻ ዋል ዴልታዎች አሉን ወደሚል መደምደሚያ ደርሰናል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲንይህ ማለት ዋልን በማስተር ላይ ባደረግን ቁጥር ጨምቀን፣ ኢንክሪፕት አድርገን ወደ ኔትወርክ መላክ ብቻ ሳይሆን በተመሳሳይ ጊዜ እናነባለን። በውስጡ ያሉትን መዝገቦች እንመረምራለን እና እናነባለን. የትኞቹ ብሎኮች እንደተቀየሩ እና የዴልታ ፋይሎችን እንሰበስባለን.

የዴልታ ፋይል የተወሰኑ የWAL ፋይሎችን ይገልፃል፣ በዚህ የWAL ክልል ውስጥ የትኞቹ ብሎኮች እንደተቀየሩ መረጃን ይገልጻል። እና ከዚያ እነዚህ የዴልታ ፋይሎች እንዲሁ በማህደር ተቀምጠዋል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እዚህ ሁሉንም ነገር በፍጥነት ማዛመዳችንን እውነታ አጋጥሞናል, ነገር ግን በትይዩ ቅደም ተከተል ያለው ታሪክ ማንበብ አንችልም, ምክንያቱም በተወሰነ ክፍል ውስጥ የቀደመው የ WAL መዝገብ መጨረሻ ሊያጋጥመን ይችላል, ምክንያቱም እስካሁን ምንም ግንኙነት የሌለን, ምክንያቱም ትይዩ ንባብ ወደ መጀመሪያው ጊዜ ያለፈውን የወደፊቱን እንመረምራለን ፣ ይህም ገና ያለፈ ታሪክ የለውም።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በውጤቱም፣ ለመረዳት የማይችሉ ክፍሎችን ወደ_ዴልታ_ከፊል ፋይሎች ማስገባት ነበረብን። በውጤቱም, ወደ ያለፈው ስንመለስ, የ WAL መዝገብ ክፍሎችን አንድ ላይ በማጣበቅ, ከዚያ በኋላ እንተነተን እና በውስጡ ምን እንደተለወጠ እንረዳለን.

በእኛ ዘንግ የመተንተን ታሪክ ውስጥ ምን እየተከሰተ እንዳለ ያልገባንበት ቢያንስ አንድ ነጥብ ካለ ፣በዚህም መሰረት ፣በሚቀጥለው መጠባበቂያ ጊዜ በመደበኛ ኤልኤስኤን እንዳደረግነው አጠቃላይ ክላስተር እንደገና ለማንበብ እንገደዳለን። -የተመሰረተ ዴልታ.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በውጤቱም፣ ስቃያችን ሁሉ የWAL-G መተንተን ቤተ-መጻሕፍትን እንድንከፍት አድርጎናል። እኔ እስከማውቀው ድረስ ማንም እስካሁን እየተጠቀመበት አይደለም ነገር ግን ማንም ቢፈልግ መጻፍና መጠቀም በሕዝብ ዘንድ ነው። (የተዘመነ አገናኝ https://github.com/wal-g/wal-g/tree/master/internal/walparser)

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በዚህ ምክንያት ሁሉም የመረጃ ፍሰቶች በጣም የተወሳሰበ ይመስላሉ. መምህራችን ዘንግ እና የዴልታ ፋይሎችን በማህደር ያስቀምጣል። እና የመጠባበቂያ ቅጂውን የሚሠራው ቅጂ በመጠባበቂያዎች መካከል ባለው ጊዜ ውስጥ የዴልታ ፋይሎችን መቀበል አለበት. በዚህ ሁኔታ የታሪክ ክፍሎችን በጅምላ መጨመር እና መተንተን ያስፈልጋል, ምክንያቱም ሙሉው ታሪክ ከትልቅ ክፍል ጋር አይጣጣምም. እና ከዚህ በኋላ ብቻ ቅጂው ሙሉ የዴልታ ምትኬን በማህደር ማስቀመጥ ይችላል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በግራፎች ላይ ሁሉም ነገር በጣም ቀላል ይመስላል. ይህ ከአንዱ እውነተኛ ዘለላዎቻችን የወረደ ነው። በአንድ ቀን ውስጥ የተሰራ LSN-based አለን። እና በኤልኤስኤን ላይ የተመሰረተ ዴልታ መጠባበቂያ ከጠዋቱ 20 ሰዓት እስከ ጥዋቱ አምስት ሰዓት ድረስ እየሰራ መሆኑን እናያለን። ይህ በአቀነባባሪዎች ብዛት ውስጥ ያለው ጭነት ነው። ዋል-ዴልታ እዚህ XNUMX ደቂቃ ያህል ወስዶብናል፣ ያም ማለት፣ በጣም ፈጣን ሆኗል፣ ግን በተመሳሳይ ጊዜ በአውታረ መረቡ ላይ የበለጠ ኃይለኛ ልውውጥ ነበር።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

የትኞቹ ብሎኮች እንደተቀየሩ እና በመረጃ ቋቱ ታሪክ ውስጥ በየትኛው ጊዜ ላይ መረጃ ስላለን ፣ የበለጠ ሄደን ተግባራዊነትን ለማዋሃድ ወሰንን - የ PostgreSQL ቅጥያ “pg_prefaulter”

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ይህ ማለት ተጠባባቂው የመልሶ ማግኛ ትዕዛዙን ሲፈጽም WAL-G ቀጣዩን የWAL ፋይል እንዲያመጣ ይነግረዋል። የWAL መልሶ ማግኛ ሂደትን በቅርብ ጊዜ ውስጥ የትኛው ውሂብ እንደሚያግድ እና በእነዚህ ብሎኮች ላይ የማንበብ ስራ እንደሚጀምር እንረዳለን። ይህ የተደረገው የኤስኤስዲ መቆጣጠሪያዎችን አፈፃፀም ለመጨመር ነው። ምክንያቱም የWAL ጥቅል መቀየር ወደሚያስፈልገው ገጽ ይደርሳል። ይህ ገጽ በዲስክ ላይ ነው እና በገጹ መሸጎጫ ውስጥ የለም። እና ይህ ገጽ እስኪመጣ ድረስ በተመሳሳይ ጊዜ ይጠብቃል። ነገር ግን በአቅራቢያው WAL-G አለ፣ በሚቀጥሉት ጥቂት መቶ ሜጋባይት ዋልታ ውስጥ የተወሰኑ ገፆችን እንደሚያስፈልገን እና በተመሳሳይ ጊዜ ማሞቅ እንደሚጀምር ያውቃል። በትይዩ እንዲፈጸሙ ብዙ የዲስክ መዳረሻዎችን ያስጀምራል። ይሄ በኤስኤስዲ ድራይቮች ላይ በደንብ ይሰራል፣ ግን በሚያሳዝን ሁኔታ፣ ለሃርድ ድራይቭ በፍፁም ተፈጻሚነት የለውም፣ ምክንያቱም በጥያቄዎቻችን ላይ ብቻ ጣልቃ ስለምንገባ ነው።

አሁን በኮዱ ውስጥ ያለው ይህ ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ማከል የምንፈልጋቸው ባህሪያት አሉ።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ይህ ሥዕል የሚያሳየው WAL-delta በአንጻራዊ ሁኔታ አጭር ጊዜ እንደሚወስድ ነው። እና ይሄ በቀን ውስጥ በመረጃ ቋቱ ውስጥ የተከሰቱ ለውጦችን ማንበብ ነው. ዋል-ዴልታን በምሽት ብቻ ሳይሆን ልንሰራው እንችላለን፣ ምክንያቱም ከአሁን በኋላ ጉልህ የጭነት ምንጭ አይደለም። WAL-delta በየደቂቃው ማንበብ እንችላለን ምክንያቱም ርካሽ ነው። በአንድ ደቂቃ ውስጥ በክላስተር ላይ የተከሰቱትን ለውጦች ሁሉ መቃኘት እንችላለን። እና ይህ "ፈጣን ዋል-ዴልታ" ተብሎ ሊጠራ ይችላል.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ነጥቡ ክላስተርን ስንመልስ በቅደም ተከተል የምንጠቀለልባቸውን ታሪኮች ብዛት እንቀንሳለን። ማለትም፣ PostgreSQL የሚጠቀለልበት የWAL መጠን መቀነስ አለበት፣ ምክንያቱም ብዙ ጊዜ ይወስዳል።

ግን ያ ብቻ አይደለም። አንዳንድ ብሎኮች ወደ ምትኬ ወጥነት ነጥብ እንደሚቀየሩ ካወቅን ከዚህ በፊት ልንለውጠው አንችልም። ማለትም፣ አሁን የWAL-delta ማስተላለፍን በፋይል-በ-ፋይል ማመቻቸት አለን። ይህ ማለት ለምሳሌ ማክሰኞ ሠንጠረዥ ሙሉ በሙሉ ከተሰረዘ ወይም አንዳንድ ፋይሎች ሙሉ በሙሉ ከጠረጴዛው ላይ ከተሰረዙ፣ ሰኞ ላይ ዴልታ ሲገለበጥ እና የቅዳሜው pg_basebackup ከተመለሰ ይህን ውሂብ እንኳን አንፈጥርም።

ይህንን ቴክኖሎጂ ወደ ገጽ ደረጃ ማራዘም እንፈልጋለን። ማለትም ፣ የፋይሉ የተወሰነ ክፍል ሰኞ ቢቀየር ፣ ግን እሮብ ላይ ይፃፋል ፣ ከዚያ ሐሙስ ላይ ወደ አንድ ነጥብ ሲመለስ ፣ የመጀመሪያዎቹን የገጾች ስሪቶች ወደ ዲስክ መጻፍ አያስፈልገንም።

ነገር ግን ይህ አሁንም በውስጣችን በንቃት እየተወያየ ያለ ሀሳብ ነው, ነገር ግን እስካሁን ኮዱ ላይ አልደረሰም.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በWAL-G ውስጥ አንድ ተጨማሪ ባህሪ መፍጠር እንፈልጋለን። የተለያዩ የውሂብ ጎታዎችን መደገፍ ስለሚያስፈልገን እና የመጠባበቂያ አስተዳደርን በተመሳሳይ መንገድ መቅረብ መቻል ስለምንፈልግ ሊሰፋ የሚችል እንዲሆን እንፈልጋለን። ችግሩ ግን MySQL APIs በጣም የተለያዩ ናቸው። በ MySQL ውስጥ፣ PITR የተመሰረተው በአካላዊ ዋል ሎግ ሳይሆን በቢንሎግ ላይ ነው። እና በ MySQL ውስጥ ይህ ቢንሎግ እንደተጠናቀቀ እና መመዝገብ እንዳለበት ለአንዳንድ ውጫዊ ስርዓቶች የሚናገር የመዝገብ ቤት ስርዓት የለንም። ከመረጃ ቋቱ ጋር በአንድ ቦታ መቆም እና የሆነ ዝግጁ ነገር ካለ ማረጋገጥ አለብን?

እና በተመሳሳይ መልኩ በ MySQL እነበረበት መልስ ጊዜ ስርዓቱን እንደዚህ አይነት እና እንደዚህ ያሉ ፋይሎች እንደሚያስፈልጉኝ የሚነግሮት የመልሶ ማግኛ ትእዛዝ የለም። ክላስተርዎን እንደገና መገንባት ከመጀመርዎ በፊት ምን አይነት ፋይሎች እንደሚፈልጉ ማወቅ አለብዎት። ምን አይነት ፋይሎች እንደሚፈልጉ እርስዎ እራስዎ መገመት ያስፈልግዎታል. ነገር ግን እነዚህ ችግሮች በሆነ መንገድ ሊወገዱ ይችላሉ። (ማብራሪያ፡ MySQL አስቀድሞ ይደገፋል)

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በሪፖርቱ ውስጥ፣ ዋል-ጂ ለእርስዎ የማይመች በሚሆንበት ጊዜ ስለነዚያ ጉዳዮች ማውራት ፈልጌ ነበር።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

የተመሳሰለ ቅጂ ከሌለህ፣ WAL-G የመጨረሻው ክፍል እንደሚጠበቅ ዋስትና አይሰጥም። እና በማህደር ማስቀመጥ ከመጨረሻዎቹ የታሪክ ክፍሎች ኋላ የሚቀር ከሆነ ይህ አደጋ ነው። ምንም የተመሳሰለ ቅጂ ከሌለ WAL-G ን መጠቀም አልመክርም። አሁንም፣ በዋናነት ለደመና ጭነት የተነደፈ ነው፣ ይህም ከፍተኛ ተደራሽነት ያለው መፍትሄ ከተመሳሰለ ቅጂ ጋር፣ እሱም ለተፈፀመው የመጨረሻ ባይት ደህንነት ተጠያቂ ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ብዙ ጊዜ ሰዎች ሁለቱንም WAL-G እና WAL-Eን በተመሳሳይ ጊዜ ለማሄድ ሲሞክሩ አያለሁ። የኋሊት ተኳኋኝነትን የምንደግፈው WAL-G ከWAL-E ፋይል ወደነበረበት መመለስ እና በWAL-E ውስጥ የተሰራ ምትኬን ወደነበረበት መመለስ ይችላል። ነገር ግን እነዚህ ሁለቱም ስርዓቶች ትይዩ ዋል-ፑሽ ስለሚጠቀሙ እርስ በርሳቸው ፋይሎችን መስረቅ ይጀምራሉ. በWAL-G ውስጥ ካስተካከልነው፣ አሁንም በWAL-E ውስጥ ይቀራል። በWAL-E፣ ማህደር-ሁኔታን ይመለከታል፣ የተጠናቀቁትን ፋይሎች አይቶ በማህደር ያስቀምጣቸዋል፣ ሌሎች ስርዓቶች ግን ይህ የWAL ፋይል እንዳለ በቀላሉ አያውቁም፣ ምክንያቱም PostgreSQL ለሁለተኛ ጊዜ ለማህደር አይሞክርም።

እዚህ በዋል-ጂ በኩል ምን እናስተካክላለን? ይህ ፋይል በትይዩ መተላለፉን ለPostgreSQL አናሳውቀውም፣ እና PostgreSQL እንድናስይዘው ሲጠይቀን ፣እንዲህ ዓይነቱ ፋይል በዚህ ሞድ-ጊዜ እና በዚህ md5 ቀድሞውኑ በማህደር መቀመጡን እናውቃለን እና በቀላሉ PostgreSQL እንላለን - እሺ፣ ምንም ሳያደርጉት ሁሉም ነገር ዝግጁ ነው።

ነገር ግን ይህ ችግር በWAL-E በኩል ይስተካከላል ተብሎ አይታሰብም፣ ስለዚህ በአሁኑ ጊዜ ፋይሉን በWAL-G እና WAL-E ውስጥ የሚያስቀምጥ የማህደር ትዕዛዝ መፍጠር አይቻልም።

በተጨማሪም፣ WAL-G አሁን ለእርስዎ የማይስማማባቸው አጋጣሚዎች አሉ፣ ግን በእርግጠኝነት እናስተካክለዋለን።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲንበመጀመሪያ፣ በአሁኑ ጊዜ አብሮ የተሰራ የመጠባበቂያ ማረጋገጫ የለንም። በመጠባበቂያ ወይም በማገገሚያ ጊዜ ማረጋገጫ የለንም። በእርግጥ ይህ በደመና ውስጥ ይተገበራል. ነገር ግን ይህ በቀላሉ በቅድመ-መፈተሽ ነው የሚተገበረው፣ በቀላሉ ክላስተርን ወደነበረበት በመመለስ ነው። ይህንን ተግባር ለተጠቃሚዎች መስጠት እፈልጋለሁ። ነገር ግን በማረጋገጥ፣ በWAL-G ውስጥ ክላስተርን ወደነበረበት መመለስ እና እሱን መጀመር እና የጭስ ሙከራዎችን ማካሄድ እንደሚቻል እገምታለሁ-pg_dumpall to /dev/null እና amcheck index ማረጋገጫ።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በአሁኑ ጊዜ በWAL-G አንድ ምትኬን ከWAL ለማዘግየት ምንም መንገድ የለም። ማለትም አንዳንድ መስኮቶችን እንደግፋለን። ለምሳሌ, የመጨረሻዎቹን ሰባት ቀናት ማከማቸት, የመጨረሻዎቹን አስር መጠባበቂያዎች ማከማቸት, የመጨረሻዎቹን ሶስት ሙሉ መጠባበቂያዎች ማከማቸት. ብዙ ጊዜ ሰዎች መጥተው “በአዲስ ዓመት ለተከሰተው ነገር ምትኬ እንፈልጋለን እና ለዘላለም እንዲቆይ እንፈልጋለን” ይላሉ። ዋል-ጂ ይህን ማድረግ አልቻለም። (ማስታወሻ - ይህ አስቀድሞ ተስተካክሏል. ተጨማሪ ያንብቡ - የመጠባበቂያ-ምልክት አማራጭ ውስጥ https://github.com/wal-g/wal-g/blob/master/PostgreSQL.md)

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እና PITR ን ስናረጋግጥ ለሁሉም የዘንግ ክፍሎች የገጽ ማረጋገጫዎች እና የንፅህና ማረጋገጫዎች የለንም።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ከዚህ ሁሉ ለGoogle የበጋ ኮድ ኮድ አንድ ፕሮጀክት አዘጋጅቻለሁ። በGo ውስጥ የሆነ ነገር ለመጻፍ የሚፈልጉ እና ከአንድ ኩባንያ ብዙ ሺህ ዶላሮችን በ "ጂ" ፊደል የሚያገኙ ብልህ ተማሪዎችን ካወቁ ፕሮጀክታችንን ለእነሱ ይስጡ። ለዚህ ፕሮጀክት እንደ አማካሪ እሰራለሁ, እነሱ ሊያደርጉት ይችላሉ. ተማሪዎች ከሌሉ, ከዚያም እኔ ወስጄ በበጋው ውስጥ እራሴ አደርገዋለሁ.

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

እና ቀስ በቀስ እየሠራንባቸው ያሉ ሌሎች ብዙ ትናንሽ ችግሮች አሉብን። እና አንዳንድ ያልተለመዱ ነገሮች ይከሰታሉ።

ለምሳሌ፣ ዋል-ጂ ባዶ ምትኬን ከሰጡ፣ በቀላሉ ይወድቃል። ለምሳሌ ባዶ ማህደርን መጠባበቂያ እንደሚያስፈልገው ከነገርከው። የpg_control ፋይል እዚያ አይሆንም። እና አንድ ነገር እንዳልተረዳ ያስባል. በንድፈ ሀሳብ, በዚህ አጋጣሚ መሳሪያውን እንዴት እንደሚጠቀሙበት ለማስረዳት ለተጠቃሚው የተለመደ መልእክት መጻፍ ያስፈልግዎታል. ግን ይህ የፕሮግራም አወጣጥ ባህሪ እንኳን አይደለም ፣ ግን የጥሩ ፣ ለመረዳት የሚያስቸግር ቋንቋ ባህሪ ነው።

ከመስመር ውጭ ምትኬ እንዴት እንደሚሰራ አናውቅም። የመረጃ ቋቱ የሚዋሽ ከሆነ ምትኬ ልንይዘው አንችልም። ግን እዚህ ሁሉም ነገር በጣም ቀላል ነው. ሲጀመር ምትኬን በ LSN እንጠራዋለን። የስር መሰረቱ LSN ከቁጥጥር ፋይሉ መነበብ አለበት። እና ይሄ እንደዚህ ያለ የማይታወቅ ባህሪ ነው. ብዙ የመጠባበቂያ ሲስተሞች ከስር ያለው የውሂብ ጎታ ምትኬ ማስቀመጥ ይችላሉ። እና ምቹ ነው.

በአሁኑ ጊዜ የመጠባበቂያ ቦታ እጥረትን በአግባቡ መያዝ አንችልም። ምክንያቱም እኛ ብዙውን ጊዜ በቤት ውስጥ ትልቅ ምትኬዎችን እንሰራለን. እና በዙሪያው አልደረሱም. ነገር ግን አንድ ሰው በ Go ውስጥ ፕሮግራም ማድረግ ከፈለገ፣ ከቦታ ውጪ ለሚፈጠሩ ስህተቶች አያያዝን ወደ ባልዲው ይጨምሩ። በእርግጠኝነት የመሳብ ጥያቄውን እመለከታለሁ።

እና የሚያስጨንቀን ዋናው ነገር በተቻለ መጠን የተለያዩ ሁኔታዎችን የሚፈትሹ የዶክተር ውህደት ሙከራዎችን እንፈልጋለን። አሁን የምንሞክረው መሰረታዊ ሁኔታዎችን ብቻ ነው። በእያንዳንዱ ቃል ላይ፣ ነገር ግን የምንደግፋቸውን ሁሉንም ተግባራት ቁርጠኝነትን ማረጋገጥ እንፈልጋለን። በተለይ ለምሳሌ ለ PostgreSQL 9.4-9.5 በቂ ድጋፍ ይኖረናል። እኛ እንደግፋቸዋለን ምክንያቱም ማህበረሰቡ PostgreSQLን ስለሚደግፍ ነገር ግን ሁሉም ነገር እንዳልተበላሸ ለማረጋገጥ ቁርጠኝነትን አንፈትሽም። እና ለእኔ ይህ በጣም ከባድ አደጋ እንደሆነ ይሰማኛል።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

በYandex ዳታቤዝ አስተዳደር ውስጥ ከአንድ ሺህ በላይ ዘለላዎች ላይ የሚሰራ WAL-G አለን። እና በየቀኑ ብዙ መቶ ቴራባይት ውሂብን ይደግፋል።

በእኛ ኮድ ውስጥ ብዙ TODO አለን። ፕሮግራም ማድረግ ከፈለጋችሁ ይምጡ፣ የመሳብ ጥያቄዎችን እየጠበቅን ነው፣ ጥያቄዎችን እየጠበቅን ነው።

ምትኬዎች ከዋል-ጂ በ2019 ምን አለ? አንድሬ ቦሮዲን

ጥያቄዎች

አንደምን አመሸህ! አመሰግናለሁ! የእኔ ግምት WAL-delta እየተጠቀሙ ከሆነ ምናልባት ሙሉ ገጽ በሚጽፉ ጽሑፎች ላይ ሊተማመኑ ይችላሉ። እና ከሆነ፣ ሙከራዎችን አከናውነዋል? የሚያምር ግራፍ አሳይተሃል። FPW ከጠፋ ምን ያህል ቆንጆ ይሆናል?

ባለ ሙሉ ገጽ መፃፍ ለኛ ነቅቷል፣ እሱን ለማሰናከል አልሞከርንም። ማለትም እኔ፣ እንደ ገንቢ፣ ለማጥፋት አልሞከርኩም። ጥናት ያደረጉ የስርዓት አስተዳዳሪዎች ስለዚህ ጉዳይ መርምረዋል. ግን FPW እንፈልጋለን። ማንም ሰው አያሰናክለውም, ምክንያቱም አለበለዚያ ቅጂውን ቅጂ ለመውሰድ የማይቻል ነው.

ለሪፖርቱ እናመሰግናለን! ሁለት ጥያቄዎች አሉኝ። የመጀመሪያው ጥያቄ በጠረጴዛዎች ላይ ምን ይሆናል?

የመሳብ ጥያቄ እየጠበቅን ነው። የእኛ የውሂብ ጎታዎች በኤስኤስዲ እና NMVE ዲስኮች ላይ ይኖራሉ እና ይህን ባህሪ በትክክል አያስፈልገንም. በጥሩ ሁኔታ ለመስራት አሁን ከባድ ጊዜ ለማሳለፍ ዝግጁ አይደለሁም። ይህንን እንደምንደግፍ በሙሉ ልብ እመክራለሁ። የደገፉት ግን በሚመቻቸው መንገድ የደገፉ ሰዎች አሉ። ሹካ አደረጉ፣ ነገር ግን የመጎተት ጥያቄዎችን አያደርጉም። (በስሪት 0.2.13 ላይ ተጨምሯል)

እና ሁለተኛው ጥያቄ. መጀመሪያ ላይ ዋል-ጂ ብቻውን እንደሚሰራ እና ምንም መጠቅለያ አያስፈልግም ብሎ እንደሚያስብ ተናግረሃል። እኔ እራሴ መጠቅለያዎችን እጠቀማለሁ. ለምን ጥቅም ላይ መዋል የለባቸውም?

እንደ ባላላይካ ቀላል እንዲሆን እንፈልጋለን. ይህ ማለት ከባላላይካ በስተቀር ምንም ነገር አያስፈልገዎትም ማለት ነው. ስርዓቱ ቀላል እንዲሆን እንፈልጋለን. በስክሪፕት ውስጥ ማድረግ ያለብዎት ተግባር ካለ፣ ከዚያ ይምጡና ይንገሩን - በ Go ውስጥ እናደርገዋለን።

አንደምን አመሸህ! ለሪፖርቱ እናመሰግናለን! WAL-G ከጂፒጂ ዲክሪፕት ጋር እንዲሰራ ማድረግ አልቻልንም። በመደበኛነት ያመሰጥራል፣ ግን ዲክሪፕት ማድረግ አይፈልግም። ለእኛ ያልሰራን ነገር ነው? ሁኔታው ተስፋ አስቆራጭ ነው።

በ GitHub ላይ ችግር ፍጠር እና እንረዳው።

ማለትም ፣ ይህንን አላጋጠመዎትም?

የስህተት ሪፖርቱ ገፅታ አለ WAL-G ምን አይነት ፋይል እንደሆነ ሳይረዳ ሲቀር "ምናልባት ኢንክሪፕት የተደረገ ሊሆን ይችላል?" ምናልባት ችግሩ በፍፁም ምስጠራ ላይሆን ይችላል። በዚህ ርዕስ ላይ መዝገቡን ማሻሻል እፈልጋለሁ. መፍታት አለበት። በአሁኑ ጊዜ በዚህ ርዕስ ላይ እየሰራን ያለነው የህዝብ እና የግል ቁልፎችን የማግኘት ስርዓት እንዴት እንደተደራጀ በትክክል ስላልወደድን ነው። ምክንያቱም ውጫዊ ጂፒጂ የምንለው ቁልፉን እንዲሰጠን ነው። እና ከዚያ እነዚህን ቁልፎች ወስደን ወደ ውስጠኛው ጂፒጂ እናስተላልፋለን ፣ እሱም PGP ክፍት ነው ፣ እሱም በዋል-ጂ ውስጥ ለእኛ ተጠናቅሮ ፣ እዚያም ምስጠራ እንጠራለን። በዚህ ረገድ ስርዓቱን ማሻሻል እንፈልጋለን እና የሊብሶዲየም ምስጠራን መደገፍ እንፈልጋለን (በስሪት 0.2.15 ውስጥ ተጨምሯል)። በእርግጥ ዲኮዲንግ መስራት አለበት፣ እናውቀው - ከብዙ ቃላት የበለጠ ምልክት ያስፈልግዎታል። አንዳንድ ጊዜ በተናጋሪው ክፍል ውስጥ መሰብሰብ እና ስርዓቱን መመልከት ይችላሉ። (የ PGP ምስጠራ ያለ ውጫዊ ጂፒጂ - v0.2.9)

ሀሎ! ለሪፖርቱ እናመሰግናለን! ሁለት ጥያቄዎች አሉኝ። pg_basebackup እና WAL ወደ ሁለት አቅራቢዎች ለመግባት እንግዳ ፍላጎት አለኝ፣ ማለትም አንድ ደመና እና ሌላ መስራት እፈልጋለሁ። ይህንን ለማድረግ አንዳንድ መንገዶች አሉ?

ይህ አሁን የለም, ግን አስደሳች ሀሳብ ነው.

አንዱን አቅራቢ ብቻ አላምንም፣ በሌላው ላይ ተመሳሳይ ነገር እንዲኖረኝ እፈልጋለሁ፣ እንደ አጋጣሚ።

ሀሳቡ አስደሳች ነው። በቴክኒካዊ ሁኔታ, ይህ ለመተግበር በጭራሽ አስቸጋሪ አይደለም. ሀሳቡ እንዳይጠፋ ለመከላከል በ GitHub ላይ ችግር እንዲፈጥሩ ልጠይቅዎት እችላለሁ?

አዎን በእርግጥ.

እና ከዛ፣ ተማሪዎች ወደ ጎግል ሰመር ኦፍ ኮድ ሲመጡ፣ ከነሱ የበለጠ ለማግኘት ብዙ ስራ እንዲኖር ወደ ፕሮጀክቱ እንጨምራቸዋለን።

እና ሁለተኛው ጥያቄ. GitHub ላይ ችግር አለ። አስቀድሞ የተዘጋ ይመስለኛል። በመልሶ ማቋቋም ጊዜ ድንጋጤ አለ። እሱን ለማሸነፍ ደግሞ የተለየ ጉባኤ አዘጋጅተሃል። ጉዳዮች ላይ ትክክል ነው። እና በአንድ ክር ውስጥ ተለዋዋጭ አካባቢን ለመስራት አማራጭ አለ. እና በጣም በዝግታ የሚሰራው ለዚህ ነው። እና ይህ ችግር አጋጥሞናል, እና እስካሁን አልተስተካከለም.

ችግሩ በሆነ ምክንያት ማከማቻው (CEPH) በከፍተኛ ኮንፈረንስ ወደ እሱ ስንመጣ ግንኙነቱን እንደገና ያስጀምራል። በዚህ ላይ ምን ሊደረግ ይችላል? የድጋሚ ሙከራ አመክንዮ ይህን ይመስላል። ፋይሉን እንደገና ለማውረድ እየሞከርን ነው። በአንድ ማለፊያ ውስጥ, ብዙ ያልተወረዱ ፋይሎች ነበሩን, ላልገቡት ሁሉ ሁለተኛውን እናደርጋለን. እና ቢያንስ አንድ ፋይል በእያንዳንዱ ድግግሞሽ እስከተጫነ ድረስ, ደጋግመን እና ደጋግመን እንሰራለን. የድጋሚ ሙከራን አመክንዮ አሻሽለናል - ገላጭ ጀርባ። ግንኙነቱ በቀላሉ በማጠራቀሚያ ስርዓቱ በኩል ስለሚሰበር ምን ማድረግ እንዳለበት ሙሉ በሙሉ ግልፅ አይደለም ። ማለትም ወደ አንድ ዥረት ስንሰቅል እነዚህን ግንኙነቶች አያፈርስም። እዚህ ምን ማሻሻል እንችላለን? የኔትወርክ ስሮትሊንግ አለን እያንዳንዱን ግንኙነት በላከው ባይት ቁጥር መገደብ እንችላለን። ያለበለዚያ ፣ የነገሮች ማከማቻ በትይዩ እንዲያወርዱ ወይም እንዲያወርዱ የማይፈቅድልንን እውነታ እንዴት እንደምናስተናግድ አላውቅም።

SLA የለም? ራሳቸውን እንዲሰቃዩ እንዴት እንደሚፈቅዱ አልተጻፈላቸውም?

ነጥቡ ይህንን ጥያቄ የሚያነሱ ሰዎች ብዙውን ጊዜ የራሳቸው ካዝና አላቸው። ማለትም ማንም ከአማዞን ወይም ከጎግል ክላውድ ወይም ከ Yandex Object Storage የመጣ የለም።

ምናልባት ጥያቄው ለእርስዎ አይሆንም?

በዚህ ጉዳይ ላይ ያለው ጥያቄ ለማን ምንም አይደለም. ይህንን እንዴት መቋቋም እንደሚቻል ላይ ማንኛቸውም ሀሳቦች ካሉ ፣ በ WAL-G ውስጥ እናድርገው ። ግን ይህን እንዴት መቋቋም እንዳለብኝ እስካሁን ጥሩ ሀሳብ የለኝም። የመጠባበቂያ ቅጂዎችን በተለየ መንገድ የሚደግፉ አንዳንድ የነገር ማከማቻ አሉ። ነገሮችን እንዲዘረዝሩ ትጠይቃቸዋለህ፣ እና እዚያ ማህደር ይጨምራሉ። WAL-G በዚህ ፈርቷል - እዚህ አንድ ፋይል ያልሆነ ነገር አለ ፣ ወደነበረበት መመለስ አልችልም ፣ ይህ ማለት መጠባበቂያው አልተመለሰም ማለት ነው። ያም ማለት፣ በእውነቱ፣ ሙሉ በሙሉ ወደነበረበት የተመለሰ ዘለላ አለህ፣ ነገር ግን የነገር ማከማቻ ሙሉ በሙሉ ያልተረዳውን አንዳንድ እንግዳ መረጃዎችን ስለመለሰ የተሳሳተ ሁኔታን ይመልሳል።

ይህ በደብዳቤ ደመና ውስጥ የሚከሰት ነገር ነው።

ማባዛት መገንባት ከቻሉ ...

ያለማቋረጥ ይባዛል...

መባዛት ካለ፣ እንደገና በመሞከር ስልቶችን የምንሞክር እና እንዴት ድጋሚ እንደምንሞክር እና ደመና ከእኛ የሚፈልገውን እንረዳለን ብዬ አስባለሁ። ምናልባት በሶስት ግንኙነቶች ላይ ለእኛ የተረጋጋ ይሆናል እና ግንኙነቱን አያቋርጥም, ከዚያም በጥንቃቄ ወደ ሶስት እንደርሳለን. ምክንያቱም አሁን ግንኙነቱን በፍጥነት እንጥላለን, ማለትም በ 16 ክሮች መልሶ ማግኘት ከጀመርን, ከዚያም ከመጀመሪያው ሙከራ በኋላ 8 ክሮች, 4 ክሮች, 2 ክሮች እና አንድ ይሆናሉ. እና ከዚያ ፋይሉን ወደ አንድ ዥረት ይጎትታል. እንደ 7,5 ክሮች ያሉ አንዳንድ አስማታዊ እሴቶች ካሉ ለፓምፕ በጣም የተሻሉ ናቸው ፣ ከዚያ በእነሱ ላይ እንኖራለን እና ሌላ 7,5 ክሮች ለመስራት እንሞክራለን። አንድ ሀሳብ እዚህ አለ።

ለሪፖርቱ እናመሰግናለን! ከWAL-G ጋር ለመስራት የተሟላ የስራ ሂደት ምን ይመስላል? ለምሳሌ፣ በገጾች ላይ ዴልታ በማይኖርበት ጊዜ በሞኝ ሁኔታ። እና የመጀመሪያውን ምትኬን እንወስዳለን እና እናስወግዳለን, ከዚያም ፊቱ ላይ ሰማያዊ እስክንሆን ድረስ ዘንጎውን በማህደር ያስቀምጡ. እዚህ, እኔ እንደተረዳሁት, ብልሽት አለ. አንዳንድ ጊዜ የዴልታ የገጾችን ምትኬ መፍጠር ያስፈልግዎታል ፣ ማለትም አንዳንድ ውጫዊ ሂደቶች ይህንን እየነዱ ነው ወይንስ ይህ እንዴት ይከሰታል?

የዴልታ ምትኬ ኤፒአይ በጣም ቀላል ነው። እዚያ ቁጥር አለ - ከፍተኛ የዴልታ ደረጃዎች ፣ እሱ የሚጠራው ነው። ወደ ዜሮ የሚሄድ ነው። ይህ ማለት ምትኬ-ፑሽ ባደረጉ ቁጥር ሙሉ ምትኬን ያወርዳል ማለት ነው። ወደ ማንኛውም አዎንታዊ ቁጥር ከቀየሩት ለምሳሌ 3, ከዚያ በሚቀጥለው ጊዜ ምትኬ-ግፋ ሲያደርጉ, የቀደሙት የመጠባበቂያ ቅጂዎችን ታሪክ ይመለከታል. እሱ ከ 3 ዴልታዎች ሰንሰለት እንዳትበልጡ አይቶ ዴልታ ይሠራል።

ማለትም WAL-Gን በጀመርን ቁጥር ሙሉ ምትኬ ለመስራት ይሞክራል?

አይ፣ እኛ WAL-Gን እናስኬዳለን፣ እና ፖሊሲዎችዎ የሚፈቅዱ ከሆነ ዴልታ ለመስራት ይሞክራል።

በግምት፣ በየጊዜዉ በዜሮ የምታስኬዱት ከሆነ እንደ pg_basebackup ይሆናል?

አይ፣ መጭመቂያ እና ትይዩነትን ስለሚጠቀም አሁንም በፍጥነት ይሰራል። Pg_basebackup ዘንጉን ከጎንዎ ያደርገዋል። WAL-G በማህደር ማዋቀር እንዳለህ ያስባል። እና ካልተዋቀረ ማስጠንቀቂያ ይሰጣል።

Pg_basebackup ያለ ዘንጎች ማሄድ ይችላል።

አዎ፣ ከዚያ እነሱ ከሞላ ጎደል ተመሳሳይ ባህሪ ይኖራቸዋል። Pg_basebackup ወደ የፋይል ስርዓቱ ቅጂዎች። በነገራችን ላይ ለመጥቀስ የረሳሁት አዲስ ባህሪ አለን. አሁን ከpg_basebackup ወደ የፋይል ስርዓት ምትኬ ማስቀመጥ እንችላለን። ይህ ለምን እንደሚያስፈልግ አላውቅም፣ ግን እዚያ አለ።

ለምሳሌ, በ CephFS ላይ. ሁሉም ሰው የነገር ማከማቻን ማዋቀር አይፈልግም።

አዎ፣ ለዛም ነው እኛ ልናደርገው እንድንችል ስለዚህ ባህሪ ጥያቄ የጠየቁት። እና አደረግነው።

ለሪፖርቱ እናመሰግናለን! ወደ የፋይል ስርዓቱ መቅዳት በተመለከተ አንድ ጥያቄ ብቻ አለ. ከሳጥኑ ውስጥ፣ አሁን ወደ የርቀት ማከማቻ መገልበጥን ይደግፋሉ፣ ለምሳሌ፣ በመረጃ ማእከል ውስጥ የተወሰነ መደርደሪያ ካለ ወይም ሌላ ነገር ካለ?

በዚህ አጻጻፍ ውስጥ, ይህ አስቸጋሪ ጥያቄ ነው. አዎን፣ እንደግፋለን፣ ግን ይህ ተግባር እስካሁን በማንኛውም ልቀት ውስጥ አልተካተተም። ያም ማለት ሁሉም ቅድመ-መልቀቂያዎች ይህንን ይደግፋሉ, ነገር ግን የተለቀቁት ስሪቶች አያደርጉትም. ይህ ተግባር በስሪት 0.2 ውስጥ ተጨምሯል። ሁሉንም የታወቁ ሳንካዎች እንደምናስተካክል በእርግጠኝነት በቅርቡ ይለቀቃል። አሁን ግን ይህ በቅድመ-መለቀቅ ላይ ብቻ ሊከናወን ይችላል. በቅድመ-መለቀቅ ውስጥ ሁለት ሳንካዎች አሉ። በWAL-E መልሶ ማግኛ ላይ ችግር፣ አላስተካከልነውም። እና በመጨረሻው ቅድመ-ልቀት ስለ ዴልታ-ምትኬ ስህተት ታክሏል። ስለዚህ, ሁሉም ሰው የመልቀቂያ ስሪቶችን እንዲጠቀሙ እንመክራለን. በቅድመ-ልቀቱ ውስጥ ምንም ተጨማሪ ሳንካዎች እንደሌሉ፣ Google Cloudን፣ S3-ተኳሃኝ ነገሮችን እና የፋይል ማከማቻን እንደግፋለን ማለት እንችላለን።

ሰላም ለሪፖርቱ አመሰግናለሁ። እኔ እንደተረዳሁት፣ ዋል-ጂ እንደ ባርማን አይነት የተማከለ ስርዓት አይደለም? ወደዚህ አቅጣጫ ለመንቀሳቀስ አስበዋል?

ችግሩ ከዚህ አቅጣጫ መሄዳችን ነው። WAL-G የሚኖረው በመሠረታዊ አስተናጋጅ፣ በክላስተር አስተናጋጅ እና በክላስተር ውስጥ ባሉ ሁሉም አስተናጋጆች ላይ ነው። ወደ ብዙ ሺህ ክላስተር ስንሸጋገር ብዙ የቡና ቤት አሳሾች ነበሩን። እና አንድ ነገር በእነሱ ውስጥ በተበላሸ ቁጥር ትልቅ ችግር ነው። መጠገን ስላለባቸው አሁን የትኞቹ ስብስቦች መጠባበቂያ እንደሌላቸው መረዳት አለቦት። ዋል-ጂን በአካላዊ ሃርድዌር ለመጠባበቂያ ሲስተሞች አቅጣጫ የማሳደግ እቅድ የለኝም። ማህበረሰቡ እዚህ አንዳንድ ተግባራትን የሚፈልግ ከሆነ ምንም አያሳስበኝም።

የማከማቻ ኃላፊነት ያለባቸው ቡድኖች አሉን። እና እኛ ሳንሆን በጣም ጥሩ ስሜት ይሰማናል፣ ፋይሎቻችንን ደህንነታቸው በተጠበቀበት ቦታ የሚያስቀምጡ ልዩ ሰዎች አሉ። የተወሰኑ የፋይሎች ብዛት መጥፋትን ለመቋቋም ሁሉንም ዓይነት ብልህ ኮድ ማድረግ ይችላሉ። ለኔትወርክ የመተላለፊያ ይዘት ተጠያቂ ናቸው. የቡና ቤት አሳላፊ ሲኖርዎት፣ ብዙ ትራፊክ ያላቸው ትናንሽ የውሂብ ጎታዎች በተመሳሳይ አገልጋይ ላይ እንደተሰበሰቡ በድንገት ሊያውቁ ይችላሉ። በእሱ ላይ ብዙ ቦታ ያለዎት ይመስላሉ, ነገር ግን በሆነ ምክንያት ሁሉም ነገር በአውታረ መረቡ ውስጥ አይጣጣምም. በተቃራኒው ሊሆን ይችላል. እዚያ ብዙ አውታረ መረቦች አሉ, ፕሮሰሰር ኮሮች አሉ, ግን እዚህ ምንም ዲስኮች የሉም. እናም አንድን ነገር ማዛወር ሰለቸን ፣ እና የውሂብ ማከማቻ የተለየ አገልግሎት ነው ወደሚለው እውነታ ተዛወርን ፣ ለዚህም ልዩ ሰዎች ተጠያቂ ናቸው።

PS አዲስ ስሪት ተለቋል 0.2.15በነባሪ በፖስታ ቤት ማውጫ ውስጥ የሚገኘውን የ.walg.json ውቅር ፋይል መጠቀም የምትችልበት። የባሽ ስክሪፕቶችን መተው ይችላሉ። ምሳሌ .walg.json በዚህ እትም ውስጥ አለ። https://github.com/wal-g/wal-g/issues/545

ቪዲዮ



ምንጭ: hab.com

አስተያየት ያክሉ