WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

Andrey Borodin විසින් 2019 ආරම්භයේ සිට "WAL-G සමඟ උපස්ථ. 2019 දී ඇත්තේ කුමක්ද?" යන වාර්තාවේ පිටපත කියවීමට මම ඔබට යෝජනා කරමි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ආයුබෝවන් සියල්ලටම! මගේ නම Andrey Borodin. මම Yandex හි සංවර්ධකයෙක්. මම 2016 සිට PostgreSQL ගැන උනන්දු වෙමි, මම සංවර්ධකයින් සමඟ කතා කළ පසු ඔවුන් සියල්ල සරල බව පැවසීමෙන් පසුව - ඔබ මූල කේතය ගෙන එය ගොඩනඟන්න, එවිට සියල්ල සාර්ථක වනු ඇත. එතැන් සිට මට නතර කළ නොහැක - මම විවිධ දේ ලියන්නෙමි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodinමම වැඩ කරන දේවල් වලින් එකක් තමයි උපස්ථ පද්ධතියක්. WAL-G. සාමාන්‍යයෙන්, Yandex හි අපි ඉතා දිගු කාලයක් තිස්සේ PostgreSQL හි උපස්ථ පද්ධති මත වැඩ කරමින් සිටිමු. අපි උපස්ථ පද්ධති සාදන ආකාරය පිළිබඳ වාර්තා හයකින් යුත් මාලාවක් ඔබට අන්තර්ජාලයෙන් සොයාගත හැකිය. සෑම වසරකම ඔවුන් ටිකක් පරිණාමය වී, ටිකක් දියුණු වී, වඩාත් විශ්වාසදායක බවට පත්වේ.

නමුත් අද වාර්තාවේ තියෙන්නේ අපි කරපු දේවල් විතරක් නෙවෙයි, ඒක කොච්චර සරලද, මොකක්ද කියන එකයි. WAL-G පිළිබඳ මගේ වාර්තා ඔබෙන් කී දෙනෙක් දැනටමත් නරඹා තිබේද? කීප දෙනෙක් නොබලපු එක හොඳයි, මොකද මම සරලම දේකින් පටන් ගන්නම්.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

හදිසියේම ඔබට PostgreSQL පොකුරක් තිබේ නම්, සහ සෑම කෙනෙකුටම ඔවුන් සමඟ ඒවා කිහිපයක් තිබේ නම් සහ හදිසියේ තවමත් උපස්ථ පද්ධතියක් නොමැති නම්, ඔබට ඕනෑම S3 ගබඩාවක් හෝ Google Cloud ගැළපෙන ගබඩාවක් ලබා ගත යුතුය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

උදාහරණයක් ලෙස, ඔබට අපගේ ස්ථාවරයට පැමිණ Yandex Object Storage සඳහා ප්‍රවර්ධන කේතයක් ගත හැකිය, එය S3 අනුකූල වේ.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ඉන්පසු බාල්දියක් සාදන්න. එය තොරතුරු සඳහා කන්ටේනරයක් පමණි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

සේවා පරිශීලකයෙකු සාදන්න.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

සේවා පරිශීලකයා සඳහා ප්‍රවේශ යතුරක් සාදන්න: aws-s3-key.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

WAL-G හි නවතම ස්ථාවර නිකුතුව බාගන්න.

අපගේ පූර්ව නිකුතු නිකුතුවලට වඩා වෙනස් වන්නේ කෙසේද? බොහෝ විට මගෙන් ඉල්ලා සිටින්නේ කලින් නිදහස් කරන ලෙසයි. ප්‍රමාණවත් කාලයක් සඳහා අනුවාදයේ දෝෂයක් නොමැති නම්, උදාහරණයක් ලෙස, මාසයක්, මම එය නිකුත් කරමි. මෙන්න මේක නොවැම්බර් මාසේ නිකුත් වෙනවා. තවද මෙයින් අදහස් කරන්නේ සෑම මසකම අපට යම් ආකාරයක දෝෂයක් හමු වූ බවයි, සාමාන්‍යයෙන් විවේචනාත්මක නොවන ක්‍රියාකාරීත්වයකින්, නමුත් අපි තවමත් නිකුතුවක් නිකුත් කර නැත. පෙර අනුවාදය නොවැම්බර් පමණි. ඒකේ අපි දන්න බග් නෑ, ඒ කියන්නේ ප්‍රොජෙක්ට් එක ඉදිරියට යනකොට බග් එකතු උනා.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ඔබ WAL-G බාගත කළ පසු, ඔබට පරිසර විචල්‍යයන් හරහා සරල “බැකප් ලැයිස්තුව” විධානයක් ක්‍රියාත්මක කළ හැකිය. තවද එය Object Storage වෙත සම්බන්ධ වී ඔබ සතුව ඇති උපස්ථ මොනවාදැයි පවසනු ඇත. මුලදී, ඇත්ත වශයෙන්ම, ඔබට උපස්ථ නොතිබිය යුතුය. මෙම විනිවිදකයේ කාරණය වන්නේ සෑම දෙයක්ම ඉතා සරල බව පෙන්වීමයි. මෙය පරිසර විචල්‍යයන් පිළිගෙන උප විධාන ක්‍රියාත්මක කරන කොන්සෝල විධානයකි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මෙයින් පසු, ඔබට ඔබේ පළමු උපස්ථය සෑදිය හැකිය. WAL-G හි "backup-push" පවසන්න සහ WAL-G හි ඔබේ පොකුරේ pgdata ස්ථානය සඳහන් කරන්න. සහ බොහෝ දුරට, PostgreSQL ඔබට පවසනු ඇත, ඔබට දැනටමත් උපස්ථ පද්ධතියක් නොමැති නම්, ඔබට "සංරක්ෂිත මාදිලිය" සක්‍රීය කළ යුතු බව.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මෙයින් අදහස් කරන්නේ ඔබ සැකසීම් වෙත ගොස් “archive_mode = on” සක්‍රිය කර “archive_command” එක් කළ යුතු බවයි, එය WAL-G හි උප විධානයක් ද වේ. නමුත් කිසියම් හේතුවක් නිසා මිනිසුන් බොහෝ විට මෙම මාතෘකාව මත තීරු ස්ක්‍රිප්ට් භාවිතා කර එය WAL-G වටා එති. කරුණාකර මෙය නොකරන්න. WAL-G හි ඇති ක්‍රියාකාරීත්වය භාවිතා කරන්න. ඔබට යමක් මග හැරී ඇත්නම්, ලියන්න GitHub. WAL-G උපකල්පනය කරන්නේ archive_command හි ක්‍රියාත්මක වන එකම වැඩසටහන එය බවයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

අපි ප්‍රධාන වශයෙන් WAL-G භාවිතා කරන්නේ Yandex දත්ත සමුදා කළමනාකරණයේ ඉහළ පවතින පොකුරක් නිර්මාණය කිරීමටයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

තවද එය සාමාන්‍යයෙන් එක් ගුරුවරයෙකුගේ ස්ථාන විද්‍යාවක සහ අනුරූ කිහිපයක භාවිතා වේ. ඒ සමගම, එය Yandex Object Storage හි උපස්ථ පිටපතක් සාදයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

වඩාත් පොදු අවස්ථා වන්නේ Point in time recovery භාවිතයෙන් පොකුරක පිටපත් නිර්මාණය කිරීමයි. නමුත් මෙම අවස්ථාවේදී, උපස්ථ පද්ධතියේ ක්රියාකාරිත්වය අපට එතරම් වැදගත් නොවේ. අපට අවශ්‍ය වන්නේ උපස්ථයෙන් නව පොකුරක් උඩුගත කිරීමයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

සාමාන්‍යයෙන්, නව නෝඩයක් එකතු කිරීමේදී අපට උපස්ථ පද්ධති ක්‍රියාකාරිත්වය අවශ්‍ය වේ. එය වැදගත් වන්නේ ඇයි? සාමාන්‍යයෙන් පුද්ගලයන් පොකුරකට නව නෝඩයක් එක් කරන්නේ පවතින පොකුරට කියවීමේ භාරය හැසිරවිය නොහැකි බැවිනි. ඔවුන් නව අනුරුවක් එකතු කළ යුතුය. අපි pg_basebackup සිට Master වෙත පැටවීම එකතු කළහොත්, එවිට Master බිඳවැටීමට ඉඩ ඇත. එමනිසා, අපට ඉක්මනින් ලේඛනාගාරයෙන් නව නෝඩයක් උඩුගත කළ හැකි බව අපට ඉතා වැදගත් විය, එය මාස්ටර් මත අවම බරක් නිර්මාණය කරයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

සහ තවත් සමාන තත්වයක්. සම්බන්ධතාවය නැති වූ දත්ත මධ්‍යස්ථානයෙන් ක්ලස්ටර් මාස්ටර් මාරු කිරීමෙන් පසු පැරණි මාස්ටර් නැවත ආරම්භ කිරීමේ අවශ්‍යතාවය මෙයයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

  • ප්රතිඵලයක් වශයෙන්, පිටපත් පද්ධතිය සඳහා අවශ්යතාවයන් සකස් කිරීමේදී, වලාකුළෙහි ක්රියාත්මක වන විට pg_basebackup අපට සුදුසු නොවන බව අපට වැටහුණි.
  • අපගේ දත්ත සම්පීඩනය කිරීමට අපට අවශ්‍ය විය. නමුත් කොටුවේ ඇති දේ හැර වෙනත් ඕනෑම උපස්ථ පද්ධතියක් පාහේ දත්ත සම්පීඩනය සපයයි.
  • ක්ලවුඩ් හි පරිශීලකයෙකු ප්‍රොසෙසර් කෝර් විශාල ප්‍රමාණයක් මිලදී ගන්නා නිසා අපට සියල්ල සමාන්තර කිරීමට අවශ්‍ය විය. නමුත් යම් මෙහෙයුමකදී අපට සමාන්තරකරණයක් නොමැති නම්, විශාල හරයන් ප්‍රමාණයක් නිෂ්ඵල වේ.
  • බොහෝ විට දත්ත අපගේ නොවන නිසා සහ පැහැදිලි පාඨයක ගබඩා කළ නොහැකි නිසා අපට සංකේතනය අවශ්‍ය වේ. මාර්ගය වන විට, WAL-G සඳහා අපගේ දායකත්වය සංකේතනය කිරීම සමඟ ආරම්භ විය. අපි WAL-G හි සංකේතනය සම්පූර්ණ කළෙමු, ඉන් පසුව අපෙන් අසන ලදී: "සමහර විට අපෙන් කෙනෙක් ව්‍යාපෘතිය සංවර්ධනය කරයිද?" එතැන් සිට මම වසරකට වැඩි කාලයක් WAL-G සමඟ වැඩ කරමින් සිටිමි.
  • අපට සම්පත් තෙරපීමද අවශ්‍ය විය, මන්ද කාලයත් සමඟ වලාකුළ භාවිතයෙන්, සමහර විට මිනිසුන්ට රාත්‍රියේ වැදගත් සිල්ලර බඩු තොගයක් ඇති බවත් මෙම බරට බාධා කළ නොහැකි බවත් අපි සොයා ගත්තෙමු. ඒකයි අපි සම්පත් තෙරපුම එකතු කළේ.
  • ලැයිස්තුගත කිරීම සහ කළමනාකරණය මෙන්ම.
  • සහ සත්යාපනය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

අපි විවිධ මෙවලම් ගොඩක් බැලුවා. වාසනාවකට මෙන්, අපට PostgreSQL හි විශාල තේරීමක් තිබේ. සෑම තැනකම අපට යමක් මග හැරී ඇත, සමහරක් කුඩා කාර්යයක්, සමහරක් කුඩා අංගයක්.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

පවතින පද්ධති පරීක්ෂා කිරීමෙන් පසුව, අපි WAL-G සංවර්ධනය කරන බවට නිගමනයකට පැමිණියෙමු. එදා ඒක අලුත් ව්‍යාපෘතියක්. උපස්ථ පද්ධතියේ ක්ලවුඩ් යටිතල ව්‍යුහය දෙසට සංවර්ධනයට බලපෑම් කිරීම ඉතා පහසු විය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

අපි පිළිපදින ප්‍රධාන මතවාදය නම් WAL-G යනු බලලයිකා මෙන් සරල විය යුතු බවයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

WAL-G සතුව විධාන 4ක් ඇත. මෙය:

WAL-PUSH - පතුවළ සංරක්ෂණය කරන්න.

WAL-FETCH - පතුවළක් ලබා ගන්න.

BACKUP-PUSH - උපස්ථයක් සාදන්න.

BACKUP-FETCH - උපස්ථ පද්ධතියෙන් උපස්ථයක් ලබා ගන්න.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ඇත්ත වශයෙන්ම, WAL-G සතුව මෙම උපස්ථ කළමනාකරණය ද ඇත, එනම් මේ මොහොතේ තවදුරටත් අවශ්‍ය නොවන ඉතිහාසයේ වාර්තා සහ උපස්ථ ලැයිස්තුගත කිරීම සහ මකා දැමීම.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

අපට වැදගත් කාර්යයක් වන්නේ ඩෙල්ටා පිටපත් නිර්මාණය කිරීමේ කාර්යයයි.

ඩෙල්ටා පිටපත් වලින් අදහස් කරන්නේ අපි සම්පූර්ණ පොකුරේ සම්පූර්ණ උපස්ථයක් සාදන්නේ නැත, නමුත් පොකුරේ වෙනස් වූ ගොනු වල වෙනස් වූ පිටු පමණි. ක්‍රියාකාරීව මෙය WAL භාවිතයෙන් ප්‍රකෘතිමත් වීමේ හැකියාවට බෙහෙවින් සමාන බව පෙනේ. නමුත් අපට සමාන්තරව WAL තනි නූල් සහිත ඩෙල්ටා උපස්ථයක් පෙරළීමට හැකිය. ඒ අනුව, අපි සෙනසුරාදා මූලික උපස්ථයක් සාදා ඇති විට, ඩෙල්ටා උපස්ථ දිනපතා, සහ බ්‍රහස්පතින්දා අපි අසාර්ථක වූ විට, අපි ඩෙල්ටා උපස්ථ 4 ක් සහ WAL පැය 10 ක් පෙරළා ගත යුතුය. ඩෙල්ටා උපස්ථ සමාන්තරව පෙරළෙන නිසා එය එකම වේලාවක් ගතවනු ඇත.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

LSN-පාදක ඩෙල්ටා - මෙයින් අදහස් කරන්නේ උපස්ථයක් නිර්මාණය කිරීමේදී, එය වෙනස් වී ඇති බව තේරුම් ගැනීම සඳහා අපි එක් එක් පිටුව ඒකාබද්ධ කර එහි LSN පෙර උපස්ථයේ LSN සමඟ පරීක්ෂා කළ යුතු බවයි. වෙනස් කළ දත්ත අඩංගු විය හැකි ඕනෑම පිටුවක් ඩෙල්ටා උපස්ථයෙහි තිබිය යුතුය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මම කී පරිදි, සමාන්තරකරණය කෙරෙහි විශාල අවධානයක් යොමු විය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

නමුත් PostgreSQL හි සංරක්ෂිත API අනුකූල වේ. PostgreSQL එක WAL ගොනුවක් සංරක්ෂණය කරන අතර එය ප්‍රතිසාධනය කිරීමේදී එක් WAL ගොනුවක් ඉල්ලයි. නමුත් දත්ත සමුදාය "WAL-FETCH" විධානය භාවිතයෙන් එක් WAL ගොනුවක් ඉල්ලා සිටින විට, අපි "WAL-PREFETCH" විධානය ලෙස හඳුන්වමු, එය වස්තුව ගබඩාවෙන් සමාන්තරව දත්ත ලබා ගැනීම සඳහා ඊළඟ ගොනු 8 සූදානම් කරයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodinතවද දත්ත සමුදාය අපෙන් එක් ගොනුවක් සංරක්ෂණය කිරීමට ඉල්ලා සිටින විට, අපි archive_status දෙස බලා වෙනත් WAL ගොනු තිබේදැයි බලන්නෙමු. ඒ වගේම අපි WAL එකත් සමාන්තරව බාගත කරන්න උත්සාහ කරනවා. මෙය සැලකිය යුතු කාර්ය සාධනයක් ලබා දෙන අතර සංරක්ෂණය නොකළ WAL ගණනේ දුර සැලකිය යුතු ලෙස අඩු කරයි. බොහෝ උපස්ථ පද්ධති සංවර්ධකයින් විශ්වාස කරන්නේ මෙය එතරම් අවදානම් සහිත පද්ධතියක් බව අපි විශ්වාස කරන්නේ PostgreSQL API නොවන කේත අභ්‍යන්තරය පිළිබඳ අපගේ දැනුම මත ය. PostgreSQL අප සඳහා archive_status ෆෝල්ඩරය තිබීම සහතික නොකරන අතර එහි WAL ගොනු සඳහා වන සුදානම සංඥා, අර්ථකථනය සහතික නොකරයි. එසේ වුවද, අපි මූල කේතය අධ්‍යයනය කරමින් සිටිමු, මෙය එසේ බව අපට පෙනෙන අතර අපි එය ගසාකෑමට උත්සාහ කරමු. තවද අපි PostgreSQL සංවර්ධනය වන දිශාව පාලනය කරමු; හදිසියේම මෙම යාන්ත්‍රණය කැඩී ගියහොත්, අපි එය භාවිතා කිරීම නවත්වන්නෙමු.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

එහි පිරිසිදු ස්වරූපයෙන්, LSN මත පදනම් වූ WAL ඩෙල්ටා පෙර උපස්ථයෙන් පසු ගොනු පද්ධතියේ මාදිලියේ කාලය වෙනස් වී ඇති ඕනෑම පොකුරු ගොනුවක් කියවීම අවශ්‍ය වේ. අපි මේ සමඟ බොහෝ කාලයක් ජීවත් වුණා, අවුරුද්දකට ආසන්න කාලයක්. අවසානයේදී අපි නිගමනය කළේ අපට WAL ඩෙල්ටා ඇති බවයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodinඒ කියන්නේ අපි WAL Master එකේ archive කරන හැම වෙලාවකම අපි ඒක Compress කරලා encrypt කරලා Network එකට යවනවා විතරක් නෙවෙයි අපි ඒක කියවනවා. අපි එහි ඇති වාර්තා විශ්ලේෂණය කර කියවමු. කුමන කොටස් වෙනස් වී ඇත්දැයි අපි තේරුම් ගෙන ඩෙල්ටා ගොනු එකතු කරමු.

ඩෙල්ටා ගොනුවක් යම් WAL ගොනු පරාසයක් විස්තර කරයි, මෙම WAL පරාසයේ කුමන කොටස් වෙනස් කර ඇත්ද යන්න පිළිබඳ තොරතුරු විස්තර කරයි. ඉන්පසු මෙම ඩෙල්ටා ගොනු ද සංරක්ෂණය කර ඇත.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මෙන්න අපි සෑම දෙයක්ම ඉතා ඉක්මනින් සමාන්තරකරණය කළ නමුත් අපට අනුක්‍රමික ඉතිහාසයක් සමාන්තරව කියවිය නොහැක, මන්ද යම් කොටසක අපට තවමත් සම්බන්ධ වීමට කිසිවක් නොමැති පෙර WAL වාර්තාවේ අවසානය හමු විය හැකි බැවිනි. සමාන්තර කියවීම නිසා අපි මුලින්ම අනාගතය විග්‍රහ කිරීමට හේතු විය, එය තවමත් අතීතයක් නොමැත.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

එහි ප්‍රතිඵලයක් ලෙස, අපට නොතේරෙන කෑලි _delta_partial ගොනුවලට දැමීමට සිදු විය. එහි ප්රතිඵලයක් වශයෙන්, අපි අතීතයට ආපසු පැමිණෙන විට, අපි WAL වාර්තාවේ කෑලි එකකට අලවන්නෙමු, ඉන්පසු අපි එය විග්රහ කර එහි වෙනස් වූ දේ තේරුම් ගනිමු.

අපගේ පතුවළ විග්‍රහ කිරීමේ ඉතිහාසයේ අවම වශයෙන් සිදුවන්නේ කුමක්ද යන්න අපට නොතේරෙන එක් කරුණක්වත් තිබේ නම්, ඒ අනුව, ඊළඟ උපස්ථයේදී අපි සාමාන්‍ය LSN සමඟ කළාක් මෙන්, සම්පූර්ණ පොකුර නැවත කියවීමට අපට බල කෙරෙනු ඇත. - පදනම් වූ ඩෙල්ටා.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

එහි ප්‍රතිඵලයක් වශයෙන්, අපගේ සියලු දුක් වේදනාවලට හේතු වූයේ අපි WAL-G විග්‍රහ කිරීමේ පුස්තකාලය විවෘත කර තිබීමයි. මම දන්න තරමින් නම් තාම කවුරුත් පාවිච්චි කරන්නේ නැහැ, නමුත් කාට හරි ඕන නම් ලියන්න, පාවිච්චි කරන්න, ඒක public domain එකේ තියෙනවා. (යාවත්කාලීන කළ සබැඳිය https://github.com/wal-g/wal-g/tree/master/internal/walparser)

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

එහි ප්රතිඵලයක් වශයෙන්, සියලු තොරතුරු ප්රවාහයන් තරමක් සංකීර්ණ බව පෙනේ. අපගේ මාස්ටර් පතුවළ ලේඛනාගාරය සහ ඩෙල්ටා ගොනු ලේඛනගත කරයි. උපස්ථ පිටපත සාදන අනුරුවට උපස්ථ අතර ගත වූ කාලය තුළ ඩෙල්ටා ගොනු ලැබිය යුතුය. මෙම අවස්ථාවේදී, සමස්ත ඉතිහාසයම විශාල කොටස් වලට නොගැලපෙන බැවින්, ඉතිහාසයේ කොටස් තොග වශයෙන් එකතු කර විග්‍රහ කිරීමට අවශ්‍ය වනු ඇත. මෙයින් පසුව පමණක් අනුරුවට සම්පූර්ණ ඩෙල්ටා උපස්ථයක් සංරක්ෂණය කළ හැකිය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ප්‍රස්ථාරවල සෑම දෙයක්ම වඩා සරල බව පෙනේ. මෙය අපගේ සැබෑ පොකුරු වලින් බාගත කිරීමකි. අප සතුව LSN මත පදනම් වූ, එක් දිනකින් සාදන ලදී. LSN මත පදනම් වූ ඩෙල්ටා උපස්ථය උදේ තුනේ සිට පාන්දර පහ දක්වා ක්‍රියාත්මක වූ බව අපට පෙනේ. ප්‍රොසෙසර් කෝර් ගණනේ බර මෙයයි. WAL-delta අපට මෙහි විනාඩි 20 ක් පමණ ගත විය.එනම්, එය සැලකිය යුතු ලෙස වේගවත් විය, නමුත් ඒ සමඟම ජාලය හරහා වඩාත් තීව්‍ර හුවමාරුවක් සිදු විය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

දත්ත සමුදායේ ඉතිහාසයේ කුමන වාරණ වෙනස් වූයේද සහ කුමන වේලාවකද යන්න පිළිබඳ තොරතුරු අප සතුව ඇති බැවින්, අපි තවදුරටත් ගොස් ක්‍රියාකාරීත්වය ඒකාබද්ධ කිරීමට තීරණය කළෙමු - "pg_prefaulter" නම් වූ PostgreSQL දිගුවකි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මෙයින් අදහස් කරන්නේ ස්ථාවර විධානය ප්‍රතිසාධන විධානය ක්‍රියාත්මක කරන විට, එය WAL-G හට ඊළඟ WAL ගොනුව ලබා ගන්නා ලෙස පවසන බවයි. නුදුරු අනාගතයේ දී WAL ප්‍රතිසාධන ක්‍රියාවලිය අවහිර කරන්නේ කුමන දත්තද යන්න අපි දළ වශයෙන් තේරුම් ගෙන මෙම කොටස්වල කියවීමේ මෙහෙයුමක් ආරම්භ කරමු. SSD පාලකයන්ගේ කාර්ය සාධනය වැඩි කිරීම සඳහා මෙය සිදු කරන ලදී. වෙනස් කළ යුතු පිටුවට WAL රෝල් එක ළඟා වන බැවිනි. මෙම පිටුව තැටියේ ඇති අතර පිටු හැඹිලියේ නොමැත. තවද මෙම පිටුව පැමිණෙන තෙක් ඔහු සමමුහුර්තව බලා සිටිනු ඇත. නමුත් ආසන්නයේ WAL-G වේ, එය දන්නා WAL හි මීළඟ මෙගාබයිට් සිය කිහිපය තුළ අපට යම් පිටු අවශ්‍ය වන අතර ඒ සමඟම ඒවා උණුසුම් කිරීමට පටන් ගනී. බහු තැටි ප්‍රවේශයන් සමාන්තරව ක්‍රියාත්මක වන පරිදි ආරම්භ කරයි. මෙය SSD ධාවකයන් මත හොඳින් ක්‍රියා කරයි, නමුත්, අවාසනාවකට මෙන්, එය දෘඪ තැටියක් සඳහා කිසිසේත්ම අදාළ නොවේ, මන්ද අපි එයට බාධා කරන්නේ අපගේ විමසීම් සමඟ පමණි.

මේක තමයි දැන් code එකේ තියෙන්නේ.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

අපි එකතු කිරීමට කැමති විශේෂාංග තිබේ.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මෙම පින්තූරය පෙන්නුම් කරන්නේ WAL-delta සාපේක්ෂව කෙටි කාලයක් ගත වන බවයි. ඒවගේම මේ කියවන්නේ දවස තුළ දත්ත ගබඩාවේ සිදු වූ වෙනස්කම්. අපට WAL-ඩෙල්ටා කළ හැක්කේ රාත්‍රියේදී පමණක් නොව, එය තවදුරටත් සැලකිය යුතු බර පැටවීමක් නොවන බැවිනි. සෑම විනාඩියකටම WAL-delta කියවීමට අපට හැකි වන්නේ එය ලාභදායී බැවිනි. එක් මිනිත්තුවකින් අපට පොකුරට සිදු වූ සියලුම වෙනස්කම් ස්කෑන් කළ හැකිය. තවද මෙය "ක්ෂණික WAL-ඩෙල්ටා" ලෙස හැඳින්විය හැක.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

කාරණය වන්නේ අපි පොකුර ප්‍රතිසාධනය කරන විට, අපට අනුපිළිවෙලින් රෝල් කළ යුතු කථා ගණන අඩු කිරීමයි. එනම්, සැලකිය යුතු කාලයක් ගත වන බැවින්, PostgreSQL රෝල් කරන WAL ප්‍රමාණය අඩු කළ යුතුය.

නමුත් එය පමණක් නොවේ. සමහර බ්ලොක් එකක් උපස්ථ අනුකූලතා මට්ටමට වෙනස් කරන බව අපි දන්නවා නම්, අපට එය අතීතයේදී වෙනස් කළ නොහැක. එනම්, දැන් අපට WAL-delta Forwarding ගොනුව-ගොනුව ප්‍රශස්තිකරණය කර ඇත. මෙයින් අදහස් කරන්නේ, උදාහරණයක් ලෙස, අඟහරුවාදා වගුවක් සම්පූර්ණයෙන්ම මකා දැමුවහොත් හෝ සමහර ලිපිගොනු සම්පූර්ණයෙන්ම මේසයෙන් මකා දැමුවහොත්, සඳුදා ඩෙල්ටා පෙරළෙන විට සහ සෙනසුරාදා pg_basebackup ප්‍රතිසාධනය කළ විට, අපි මෙම දත්ත පවා සාදන්නේ නැත.

මෙම තාක්ෂණය පිටු මට්ටම දක්වා ව්යාප්ත කිරීමට අපට අවශ්යය. එනම්, ගොනුවේ යම් කොටසක් සඳුදා වෙනස් වුවහොත්, නමුත් බදාදා උඩින් ලියනු ලැබේ නම්, බ්‍රහස්පතින්දා ලක්ෂ්‍යයකට ප්‍රතිසාධනය කරන විට, අපට පිටු වල මුල් අනුවාද කිහිපය තැටියට ලිවීමට අවශ්‍ය නොවේ.

නමුත් මෙය තවමත් අප තුළ සක්‍රීයව සාකච්ඡා කෙරෙන අදහසක් වන නමුත් එය තවමත් කේතයට පැමිණ නැත.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

අපට WAL-G හි තවත් එක් විශේෂාංගයක් කිරීමට අවශ්‍යයි. අපට විවිධ දත්ත සමුදායන් සඳහා සහය දැක්වීමට අවශ්‍ය නිසා සහ උපස්ථ කළමනාකාරිත්වයට ඒ ආකාරයෙන්ම ප්‍රවේශ වීමට අවශ්‍ය නිසා අපට එය විස්තීරණ කිරීමට අවශ්‍යයි. නමුත් ගැටලුව වන්නේ MySQL API රැඩිකල් ලෙස වෙනස් වීමයි. MySQL හි, PITR පදනම් වන්නේ භෞතික WAL ලොගය මත නොව, බින්ලොග් මත ය. තවද මෙම බින්ලොග් එක අවසන් වී ඇති බවත් සංරක්ෂණය කළ යුතු බවත් සමහර බාහිර පද්ධතියකට පවසන සංරක්ෂිත පද්ධතියක් MySQL තුළ අපට නොමැත. අපි දත්ත සමුදාය සමඟ ක්‍රෝන් හි කොහේ හෝ සිටගෙන යමක් සූදානම් දැයි පරීක්ෂා කළ යුතුද?

ඒ හා සමානව, MySQL ප්‍රතිසාධනයකදී, මට එවැනි සහ එවැනි ගොනු අවශ්‍ය බව පද්ධතියට පැවසිය හැකි ප්‍රතිසාධන විධානයක් නොමැත. ඔබ ඔබේ පොකුර නැවත ගොඩනැගීම ආරම්භ කිරීමට පෙර, ඔබට අවශ්‍ය ගොනු මොනවාදැයි දැන ගැනීමට අවශ්‍ය වේ. ඔබට අවශ්‍ය ලිපිගොනු මොනවාදැයි ඔබම අනුමාන කළ යුතුය. නමුත් මෙම ගැටළු කෙසේ හෝ මග හැරිය හැක. (පැහැදිලි කිරීම: MySQL දැනටමත් සහය දක්වයි)

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

වාර්තාවේ, මටත් WAL-G ඔබට නොගැලපෙන අවස්ථා ගැන කතා කිරීමට අවශ්‍ය විය.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ඔබට සමමුහුර්ත අනුරුවක් නොමැති නම්, අවසාන කොටස සංරක්ෂණය වන බවට WAL-G සහතික නොවේ. තවද ලේඛනාගාරය ඉතිහාසයේ අවසාන කොටස් කිහිපයට වඩා පසුගාමී නම්, එය අවදානමකි. සමමුහුර්ත අනුරුවක් නොමැති නම්, මම WAL-G භාවිතා කිරීම නිර්දේශ නොකරමි. තවමත්, එය ප්‍රධාන වශයෙන් වලාකුළු ස්ථාපනයක් සඳහා නිර්මාණය කර ඇති අතර, එය අවසන් වරට සිදු කරන ලද බයිට් වල ආරක්ෂාව සඳහා වගකිව යුතු සමමුහුර්ත අනුරුවක් සහිත ඉහළ ලබා ගත හැකි විසඳුමක් අදහස් කරයි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

WAL-G සහ WAL-E යන දෙකම එකවර ධාවනය කිරීමට උත්සාහ කරන අය මම බොහෝ විට දකිමි. WAL-G හට WAL-E වෙතින් ගොනුවක් ප්‍රතිසාධනය කළ හැකි අතර WAL-E හි සාදන ලද උපස්ථයක් ප්‍රතිසාධනය කළ හැක යන අර්ථයෙන් අපි පසුගාමී ගැළපුම සඳහා සහාය දෙමු. නමුත් මෙම පද්ධති දෙකම සමාන්තර wal-push භාවිතා කරන බැවින්, ඔවුන් එකිනෙකාගෙන් ගොනු සොරකම් කිරීමට පටන් ගනී. අපි එය WAL-G හි සවි කළහොත්, එය තවමත් WAL-E හි පවතිනු ඇත. WAL-E හි, එය සංරක්ෂිත තත්ත්‍වය දෙස බලයි, නිමි ලිපිගොනු දකින අතර ඒවා සංරක්ෂිත කරයි, අනෙක් පද්ධති මෙම WAL ගොනුව තිබූ බව නොදනී, මන්ද PostgreSQL එය දෙවන වරටත් සංරක්ෂණය කිරීමට උත්සාහ නොකරනු ඇත.

WAL-G පැත්තෙන් අපි මෙහි නිවැරදි කිරීමට යන්නේ කුමක්ද? මෙම ගොනුව සමාන්තරව මාරු කර ඇති බව අපි PostgreSQL වෙත දැනුම් නොදෙන අතර, එය සංරක්ෂණය කරන ලෙස PostgreSQL අපෙන් ඉල්ලා සිටින විට, මෙම මාදිලියේ වේලාව සහ මෙම md5 සමඟ එවැනි ගොනුවක් දැනටමත් සංරක්ෂණය කර ඇති බව අපි දැනටමත් දැනගෙන ඇති අතර අපි සරලව පවසන්නේ PostgreSQL - හරි, මූලික වශයෙන් කිසිවක් නොකර සියල්ල සූදානම්.

නමුත් මෙම ගැටළුව WAL-E පැත්තෙන් විසඳිය නොහැක, එබැවින් ගොනුව WAL-G සහ WAL-E යන දෙකෙහිම සංරක්ෂණය කරන සංරක්ෂිත විධානයක් නිර්මාණය කිරීම දැනට කළ නොහැක.

මීට අමතරව, WAL-G ඔබට දැන් සුදුසු නොවන අවස්ථා තිබේ, නමුත් අපි එය අනිවාර්යයෙන්ම නිවැරදි කරන්නෙමු.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodinපළමුව, අපට දැනට ගොඩනඟන ලද උපස්ථ සත්‍යාපනයක් නොමැත. උපස්ථ කිරීමේදී හෝ ප්‍රතිසාධනයේදී අපට සත්‍යාපනයක් නොමැත. ඇත්ත වශයෙන්ම, මෙය වලාකුළු තුළ ක්රියාත්මක වේ. නමුත් මෙය සරලව ක්‍රියාත්මක වන්නේ පූර්ව පරීක්ෂාවකින්, හුදෙක් පොකුර ප්‍රතිස්ථාපනය කිරීමෙනි. මම මෙම ක්‍රියාකාරීත්වය පරිශීලකයින්ට ලබා දීමට කැමැත්තෙමි. නමුත් සත්‍යාපනය කිරීමෙන්, මම උපකල්පනය කරන්නේ WAL-G හි පොකුර ප්‍රතිසාධනය කර එය ආරම්භ කිරීමට සහ දුම් පරීක්ෂණ ක්‍රියාත්මක කිරීමට හැකි වනු ඇති බවයි: pg_dumpall සිට /dev/null සහ amcheck index verification.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

දැනට WAL-G හි WAL වෙතින් එක් උපස්ථයක් කල් දැමීමට ක්‍රමයක් නොමැත. එනම්, අපි යම් කවුළුවකට සහාය දෙමු. උදාහරණයක් ලෙස, පසුගිය දින හත ගබඩා කිරීම, අවසාන උපස්ථ දහය ගබඩා කිරීම, අවසන් සම්පූර්ණ උපස්ථ තුන ගබඩා කිරීම. බොහෝ විට මිනිසුන් පැමිණ මෙසේ කියයි: "අපට අලුත් අවුරුද්දේ සිදු වූ දේ පිළිබඳ උපස්ථයක් අවශ්ය වන අතර එය සදහටම තබා ගැනීමට අපට අවශ්යය." WAL-G තවමත් මෙය කළ නොහැක. (සටහන - මෙය දැනටමත් සවි කර ඇත. වැඩිදුර කියවන්න - Backup-mark option in https://github.com/wal-g/wal-g/blob/master/PostgreSQL.md)

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

තවද PITR වලංගු කිරීමේදී සියලුම පතුවළ කොටස් සඳහා පිටු පිරික්සුම් සහ අඛණ්ඩතා චෙක්පත් අප සතුව නොමැත.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

මේ සියල්ලෙන් මම Google Summer of Code සඳහා ව්‍යාපෘතියක් සකස් කළෙමි. Go හි යමක් ලිවීමට සහ "G" අකුරින් එක් සමාගමකින් ඩොලර් දහස් ගණනක් ලබා ගැනීමට කැමති දක්ෂ සිසුන් ඔබ දන්නේ නම්, අපගේ ව්‍යාපෘතිය ඔවුන්ට නිර්දේශ කරන්න. මම මෙම ව්‍යාපෘතිය සඳහා උපදේශකයෙකු ලෙස ක්‍රියා කරමි, ඔවුන්ට එය කළ හැකිය. සිසුන් නොමැති නම්, මම එය රැගෙන ගිම්හානයේදී එය තනිවම කරමි.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ඒ වගේම අපි ක්‍රමක්‍රමයෙන් වැඩ කරමින් සිටින තවත් කුඩා ගැටලු රාශියක් තිබෙනවා. ඒ වගේම හරිම අමුතු දේවල් ටිකක් සිද්ධ වෙනවා.

උදාහරණයක් ලෙස, ඔබ WAL-G හිස් උපස්ථයක් ලබා දෙන්නේ නම්, එය සරලව වැටෙනු ඇත. උදාහරණයක් ලෙස, ඔබ ඔහුට හිස් ෆෝල්ඩරයක් උපස්ථ කළ යුතු බව පැවසුවහොත්. pg_control ගොනුව එහි නොතිබෙනු ඇත. තවද ඔහුට යමක් නොතේරෙන බව ඔහු සිතනු ඇත. න්‍යායාත්මකව, මෙම අවස්ථාවෙහිදී ඔබට මෙවලම භාවිතා කරන්නේ කෙසේදැයි පැහැදිලි කිරීමට පරිශීලකයාට සාමාන්‍ය පණිවිඩයක් ලිවිය යුතුය. නමුත් මෙය ක්‍රමලේඛනයේ ලක්ෂණයක්වත් නොවේ, නමුත් හොඳ, තේරුම්ගත හැකි භාෂාවක ලක්ෂණයකි.

නොබැඳි උපස්ථ කරන්නේ කෙසේදැයි අපි නොදනිමු. දත්ත සමුදාය බොරු නම්, අපට එය උපස්ථ කළ නොහැක. නමුත් මෙහි සෑම දෙයක්ම ඉතා සරල ය. එය ආරම්භ වූ විට අපි LSN මගින් උපස්ථ ලෙස හඳුන්වමු. යටින් පවතින පාදයේ LSN පාලක ගොනුවෙන් කියවිය යුතුය. තවද මෙය එතරම් යථාර්ථවාදී නොවන ලක්ෂණයකි. බොහෝ උපස්ථ පද්ධති වලට යටින් පවතින දත්ත සමුදායක් උපස්ථ කළ හැක. ඒ වගේම පහසුයි.

අපට දැනට උපස්ථ ඉඩ හිඟය නිසි ලෙස හැසිරවිය නොහැක. මොකද අපි සාමාන්‍යයෙන් ගෙදර වැඩ කරන්නේ ලොකු බැකප් එක්ක. තවද ඔවුන් එය වටා නොපැමිණියේය. නමුත් යමෙකුට දැන් Go හි වැඩසටහන් කිරීමට අවශ්‍ය නම්, බාල්දියට අවකාශයෙන් පිටත දෝෂ සඳහා හැසිරවීම එක් කරන්න. මම අනිවාර්යයෙන්ම ඇදීමේ ඉල්ලීම ගැන බලන්නම්.

තවද අපව කනස්සල්ලට පත් කරන ප්‍රධානතම දෙය නම් අපට විවිධ අවස්ථා පරීක්ෂා කරන හැකි තරම් ඩොකර් ඒකාබද්ධතා පරීක්ෂණ අවශ්‍ය වීමයි. දැනට අපි පරීක්‍ෂා කරන්නේ මූලික අවස්ථා පමණයි. සෑම කැපවීමකදීම, නමුත් අපි සහාය දක්වන සියලුම ක්‍රියාකාරීත්වය කැපවීමෙන් පරීක්ෂා කිරීමට අපට අවශ්‍යයි. විශේෂයෙන්ම, උදාහරණයක් ලෙස, අපට PostgreSQL 9.4-9.5 සඳහා ප්‍රමාණවත් සහයක් ලැබෙනු ඇත. ප්‍රජාව PostgreSQL සඳහා සහය දක්වන නිසා අපි ඔවුන්ට සහය දෙමු, නමුත් සියල්ල කැඩී නැති බව සහතික කර ගැනීමට අපි කැපවීම පරීක්‍ෂා නොකරමු. මෙය තරමක් බරපතල අවදානමක් බව මට පෙනේ.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

Yandex දත්ත සමුදාය කළමනාකරණයේ පොකුරු දහසකට වඩා වැඩි ගණනක WAL-G ක්‍රියාත්මක වේ. තවද එය සෑම දිනකම ටෙරාබයිට් සිය ගණනක් දත්ත උපස්ථ කරයි.

අපේ කේතයේ TODO ගොඩක් තියෙනවා. ඔබට වැඩසටහන් කිරීමට අවශ්‍ය නම්, එන්න, අපි පුල් ඉල්ලීම් සඳහා බලා සිටිමු, අපි ප්‍රශ්න එනතුරු බලා සිටිමු.

WAL-G වෙතින් උපස්ථ. 2019 දී ඇත්තේ කුමක්ද? Andrey Borodin

ඔබගේ ප්රශ්න

සුභ සන්ද්යාවක්! ඔයාට ස්තූතියි! මගේ අනුමානය නම් ඔබ WAL-delta භාවිතා කරන්නේ නම්, ඔබ බොහෝ විට සම්පූර්ණ පිටු ලිවීම් මත දැඩි ලෙස රඳා සිටින බවයි. එසේ නම්, ඔබ පරීක්ෂණ පවත්වා තිබේද? ඔයා ලස්සන ප්‍රස්ථාරයක් පෙන්නුවා. FPW off කලොත් කොච්චර ලස්සන වෙනවද?

සම්පූර්ණ පිටු ලිවීම් අප සඳහා සක්‍රීය කර ඇත, අපි එය අක්‍රිය කිරීමට උත්සාහ කර නැත. එනම්, මම, සංවර්ධකයෙකු ලෙස, එය අක්රිය කිරීමට උත්සාහ කර නැත. පර්යේෂණ කර ඇති පද්ධති පරිපාලකයින් බොහෝ විට මෙම ගැටළුව පිළිබඳව පර්යේෂණ කර ඇත. නමුත් අපට FPW අවශ්‍යයි. කිසිවෙකු පාහේ එය අක්‍රිය නොකරයි, මන්ද එසේ නොමැතිනම් අනුරුවකින් උපස්ථයක් ගත නොහැක.

වාර්තාවට ස්තූතියි! මට ප්‍රශ්න දෙකක් තියෙනවා. පළමු ප්‍රශ්නය වන්නේ මේස අවකාශයට කුමක් සිදුවේද?

අපි අදින්න ඉල්ලීමක් බලා සිටිමු. අපගේ දත්ත සමුදායන් SSD සහ NMVE තැටි මත ජීවත් වන අතර අපට මෙම විශේෂාංගය ඇත්ත වශයෙන්ම අවශ්‍ය නොවේ. එය හොඳින් කිරීම සඳහා බරපතල කාලයක් ගත කිරීමට මම දැන් සූදානම් නැත. අපි මේ සඳහා සහයෝගය දෙන ලෙස මම මුළු හදවතින්ම ඉල්ලා සිටිමි. ඒකට සපෝට් කරපු, ඒත් තමන්ට ගැලපෙන විදියට සපෝට් කරපු අයත් ඉන්නවා. ගෑරුප්පුවක් හැදුවත් අදින්න ඉල්ලීම් කරන්නේ නැහැ. (0.2.13 අනුවාදයේ එකතු කර ඇත)

සහ දෙවන ප්රශ්නය. WAL-G උපකල්පනය කරන්නේ එය තනිවම ක්‍රියා කරන බවත්, දවටන අවශ්‍ය නොවන බවත් ඔබ ආරම්භයේදීම පැවසුවා. මමම දවටන පාවිච්චි කරනවා. ඒවා භාවිතා නොකළ යුත්තේ ඇයි?

එය බලලිකාවක් මෙන් සරල වීමට අපට අවශ්‍යය. මෙයින් අදහස් කරන්නේ බලලිකාවක් හැර ඔබට කිසිවක් අවශ්‍ය නොවන බවයි. අපිට ඕන සිස්ටම් එක සරල වෙන්න. ඔබට ස්ක්‍රිප්ට් එකකින් කළ යුතු ක්‍රියාකාරීත්වයක් තිබේ නම්, පැමිණ අපට කියන්න - අපි එය Go හි කරන්නෙමු.

සුභ සන්ද්යාවක්! වාර්තාවට ස්තූතියි! GPG විකේතනය සමඟ වැඩ කිරීමට WAL-G ලබා ගැනීමට අපට නොහැකි විය. එය සාමාන්‍යයෙන් සංකේතනය කරයි, නමුත් විකේතනය කිරීමට අවශ්‍ය නොවේ. එය අපට සාර්ථක නොවූ දෙයක්ද? තත්වය මානසික අවපීඩනයකි.

GitHub හි ගැටලුවක් සාදා අපි එය හදුනා ගනිමු.

එනම්, ඔබ මෙය හමු වී නැද්ද?

WAL-G එය කුමන ආකාරයේ ගොනුවක් දැයි නොතේරෙන විට, එය අසන දෝෂ වාර්තාවේ ලක්ෂණයක් තිබේ: "සමහර විට එය සංකේතනය කර තිබේද?" සමහර විට ගැටලුව සංකේතනය කිරීම නොවේ. මට මෙම මාතෘකාවේ ලොග් වීම වැඩිදියුණු කිරීමට අවශ්‍යයි. ඔහු එය විකේතනය කළ යුතුය. අපි දැනට මෙම මාතෘකාව මත වැඩ කරමින් සිටින්නේ පොදු සහ පුද්ගලික යතුරු ලබා ගැනීමේ පද්ධතිය සංවිධානය කර ඇති ආකාරය ගැන අපි ඇත්තටම කැමති නැති බවයි. මක්නිසාද යත් අපි බාහිර GPG ලෙස හඳුන්වන්නේ එහි යතුරු අපට ලබා දෙන බැවිනි. ඉන්පසු අපි මෙම යතුරු ගෙන ඒවා අභ්‍යන්තර GPG වෙත මාරු කරමු, එය විවෘත PGP වන අතර එය WAL-G තුළ අප වෙනුවෙන් සම්පාදනය කර ඇති අතර එහිදී අපි සංකේතනය ලෙස හඳුන්වමු. මේ සම්බන්ධයෙන්, අපට පද්ධතිය වැඩිදියුණු කිරීමට අවශ්‍ය වන අතර ලිබ්සෝඩියම් සංකේතනයට සහය දැක්වීමට අවශ්‍යය (0.2.15 අනුවාදයේ එකතු කර ඇත). ඇත්ත වශයෙන්ම, විකේතනය ක්‍රියාත්මක විය යුතුය, අපි එය හදුනා ගනිමු - ඔබට වචන කිහිපයකට වඩා රෝග ලක්ෂණයක් අවශ්‍ය වේ. ඔබට කවදා හෝ කථානායකවරයාගේ කාමරයට රැස් වී පද්ධතිය දෙස බැලිය හැකිය. (බාහිර GPG නොමැතිව PGP සංකේතනය - v0.2.9)

ආයුබෝවන්! වාර්තාවට ස්තූතියි! මට ප්‍රශ්න දෙකක් තියෙනවා. මට pg_basebackup කිරීමට සහ WAL සපයන්නන් දෙදෙනෙකුට ලොග් වීමට අමුතු ආශාවක් ඇත, එනම් මට එක වලාකුළක් සහ තවත් එකක් කිරීමට අවශ්‍යයි. මෙය කිරීමට යම් ක්රමයක් තිබේද?

මෙය දැන් නොපවතී, නමුත් එය සිත්ගන්නා අදහසකි.

මම එක් සැපයුම්කරුවෙකු විශ්වාස නොකරමි, මට අවශ්‍ය වන්නේ තවත් එකක එයම තිබීමයි.

අදහස සිත්ගන්නා සුළුය. තාක්ෂණික වශයෙන්, මෙය ක්රියාත්මක කිරීම කිසිසේත් අපහසු නැත. අදහස නැතිවීම වැළැක්වීම සඳහා, GitHub හි ගැටලුවක් ඇති කරන ලෙස මට ඔබෙන් ඉල්ලා සිටිය හැකිද?

ඔව් ඇත්ත වශයෙන්ම.

ඉන්පසුව, සිසුන් Google Summer of Code වෙත පැමිණි විට, අපි ඔවුන්ව ව්‍යාපෘතියට එකතු කරන්නෙමු, එවිට ඔවුන්ගෙන් වැඩි ප්‍රයෝජන ලබා ගැනීමට තවත් වැඩ තිබේ.

සහ දෙවන ප්රශ්නය. GitHub හි ගැටලුවක් තිබේ. මම හිතන්නේ එය දැනටමත් වසා ඇත. ප්රතිෂ්ඨාපනය කිරීමේදී භීතියක් ඇති වේ. ඒක පරද්දන්න ඔබතුමා වෙනම සභාවක් හැදුවා. ප්‍රශ්න වලදී ඒක හරි. ඒවගේම එක thread එකක variable environment එකක් කරන්න ඔප්ෂන් එකක් තියෙනවා. ඒ වගේම තමයි එය ඉතා සෙමින් වැඩ කරන්නේ. අපි මෙම ගැටලුවට මුහුණ දී ඇති අතර, එය තවමත් විසඳා නැත.

ගැටලුව වන්නේ යම් හේතුවක් නිසා ගබඩාව (CEPH) අපි ඉහළ සමගාමීව එයට පැමිණෙන විට සම්බන්ධතාවය නැවත සකසයි. මේ ගැන කුමක් කළ හැකිද? නැවත උත්සාහ කිරීමේ තර්කය මේ ආකාරයට පෙනේ. අපි ගොනුව නැවත බාගත කිරීමට උත්සාහ කරමු. එක පාස් එකක අපි ඩවුන්ලෝඩ් නොකරපු ෆයිල් ගණනාවක් තිබුනා, ලොග් නොවුන හැමෝටම අපි දෙවෙනි එක හදමු. තවද එක් එක් පුනරාවර්තනයකට අවම වශයෙන් එක් ගොනුවක් පූරණය වන තාක්, අපි නැවත නැවත නැවත කරන්නෙමු සහ නැවත කරන්නෙමු. අපි නැවත උත්සාහ කිරීමේ තර්කනය වැඩිදියුණු කළෙමු - ඝාතීය පසුබෑම. නමුත් ගබඩා පද්ධතියේ පැත්තෙන් සම්බන්ධතාවය සරලව කැඩී යාමෙන් කුමක් කළ යුතුද යන්න සම්පූර්ණයෙන්ම පැහැදිලි නැත. ඒ කියන්නේ අපි එක ස්ට්‍රීම් එකකට අප්ලෝඩ් කරනකොට ඒකෙන් මේ කනෙක්ෂන් කැඩෙන්නේ නෑ. අපට මෙහි වැඩිදියුණු කළ හැක්කේ කුමක්ද? අපට ජාල තෙරපීම ඇත, අපට එක් එක් සම්බන්ධතාව එය යවන බයිට් ගණනින් සීමා කළ හැක. එසේ නොමැති නම්, වස්තු ගබඩාව අපට සමාන්තරව බාගත කිරීමට හෝ බාගත කිරීමට ඉඩ නොදෙන බව සමඟ කටයුතු කරන්නේ කෙසේදැයි මම නොදනිමි.

SLA නැද්ද? ඔවුන් තමන්ට වධ හිංසා කිරීමට ඉඩ දෙන ආකාරය ඔවුන් වෙනුවෙන් ලියා තිබේ නොවේද?

කාරණය වන්නේ මෙම ප්‍රශ්නය ඉදිරිපත් කරන පුද්ගලයින්ට සාමාන්‍යයෙන් තමන්ගේම සුරක්ෂිතාගාරයක් තිබීමයි. එනම්, කිසිවෙකු Amazon හෝ Google Cloud හෝ Yandex Object Storage වෙතින් පැමිණෙන්නේ නැත.

සමහර විට ප්‍රශ්නය ඔබට තවදුරටත් නොවේද?

මෙම නඩුවේ මෙහි ප්රශ්නය කාටද යන්න වැදගත් නොවේ. මෙය සමඟ කටයුතු කරන්නේ කෙසේද යන්න පිළිබඳ කිසියම් අදහසක් තිබේ නම්, අපි එය WAL-G හි කරමු. නමුත් මේ සම්බන්ධයෙන් කටයුතු කරන්නේ කෙසේද යන්න පිළිබඳව මට මෙතෙක් හොඳ අදහසක් නොමැත. උපස්ථ ලැයිස්තුගත කිරීම වෙනස් ලෙසට සහාය දක්වන සමහර Object Storage ඇත. ඔබ ඔවුන්ගෙන් වස්තු ලැයිස්තුගත කරන ලෙස ඉල්ලා සිටින අතර, ඔවුන් එහි ෆෝල්ඩරය එක් කරයි. WAL-G මෙයට බිය වේ - මෙහි ගොනුවක් නොවන යම් ආකාරයක දෙයක් තිබේ, මට එය ප්‍රතිසාධනය කළ නොහැක, එයින් අදහස් වන්නේ උපස්ථය ප්‍රතිසාධනය කර නොමැති බවයි. එනම්, ඇත්ත වශයෙන්ම, ඔබට සම්පුර්ණයෙන්ම ප්‍රතිසාධනය කරන ලද පොකුරක් ඇත, නමුත් එය ඔබට වැරදි තත්වයක් ලබා දෙන්නේ Object Storage එය සම්පුර්ණයෙන් තේරුම් නොගත් අමුතු තොරතුරු කිහිපයක් ලබා දුන් බැවිනි.

මේක Mail cloud එකේ වෙන දෙයක්.

ඔබට ප්‍රතිනිෂ්පාදනයක් ගොඩනගා ගත හැකි නම්...

එය නිරන්තරයෙන් ප්‍රතිනිෂ්පාදනය වේ ...

ප්‍රතිනිෂ්පාදනයක් තිබේ නම්, මම සිතන්නේ අපි නැවත උත්සාහ කිරීමේ උපාය මාර්ග අත්හදා බලා නැවත උත්සාහ කරන්නේ කෙසේද සහ වලාකුළට අපෙන් අවශ්‍ය දේ තේරුම් ගන්නේ කෙසේද යන්න සොයා බලමු. සමහර විට එය සම්බන්ධතා තුනක් මත අපට ස්ථායී වන අතර සම්බන්ධතාවය බිඳ නොදමනු ඇත, එවිට අපි ප්රවේශමෙන් තුනක් වෙත ළඟා වනු ඇත. මොකද දැන් අපි කනෙක්ෂන් එක ගොඩක් ඉක්මනට ඩ්‍රොප් කලා, ඒ කියන්නේ ත්‍රෙඩ් 16ක් එක්ක රිකවරි එකක් දියත් කළා නම්, පලවෙනි ට්‍රයි එකෙන් පස්සේ ත්‍රෙඩ් 8ක්, ත්‍රෙඩ් 4ක්, ත්‍රෙඩ් 2ක් සහ එකක් එනවා. එවිට එය ගොනුව එක් ප්‍රවාහයකට ඇද දමයි. පොම්ප කිරීම සඳහා හොඳම නූල් 7,5 වැනි මැජික් අගයන් තිබේ නම්, අපි ඒවා මත වාසය කර තවත් නූල් 7,5 ක් සෑදීමට උත්සාහ කරමු. මෙන්න අදහසක්.

වාර්තාවට ස්තූතියි! WAL-G සමඟ වැඩ කිරීම සඳහා සම්පූර්ණ කාර්ය ප්‍රවාහයක් පෙනෙන්නේ කෙසේද? උදාහරණයක් ලෙස, පිටු හරහා ඩෙල්ටා නොමැති විට මෝඩ අවස්ථාවක. අපි මූලික උපස්ථය ගෙන ඉවත් කරන්නෙමු, පසුව අපි මුහුණේ නිල් පැහැයක් ගන්නා තෙක් පතුවළ සංරක්ෂණය කරන්නෙමු. මෙන්න, මම තේරුම් ගත් පරිදි, බිඳවැටීමක් තිබේ. යම් අවස්ථාවක දී ඔබට පිටු වල ඩෙල්ටා උපස්ථයක් සෑදිය යුතුය, එනම් යම් බාහිර ක්‍රියාවලියක් මෙය ධාවනය කරයි හෝ මෙය සිදු වන්නේ කෙසේද?

ඩෙල්ටා උපස්ථ API ඉතා සරලයි. එහි අංකයක් තිබේ - උපරිම ඩෙල්ටා පියවර, එය හඳුන්වන්නේ එයයි. එය බිංදුවට පෙරනිමි වේ. මෙයින් අදහස් කරන්නේ ඔබ උපස්ථ තල්ලුවක් කරන සෑම අවස්ථාවකම එය සම්පූර්ණ උපස්ථයක් බාගත කරන බවයි. ඔබ එය කිසියම් ධන අංකයකට වෙනස් කරන්නේ නම්, උදාහරණයක් ලෙස, 3, ඊළඟ වතාවේ ඔබ උපස්ථ තල්ලුවක් කරන විට, එය පෙර උපස්ථ වල ඉතිහාසය දෙස බලයි. ඔහු ඔබ ඩෙල්ටා 3 දාමය නොඉක්මවන බව දකිමින් ඩෙල්ටාවක් කරයි.

එනම්, අපි WAL-G දියත් කරන සෑම අවස්ථාවකම, එය සම්පූර්ණ උපස්ථයක් කිරීමට උත්සාහ කරයිද?

නැත, අපි WAL-G ක්‍රියාත්මක කරන අතර, ඔබේ ප්‍රතිපත්ති එයට ඉඩ දෙන්නේ නම් එය ඩෙල්ටාවක් සෑදීමට උත්සාහ කරයි.

දළ වශයෙන් කිවහොත්, ඔබ එය සෑම විටම ශුන්‍යයෙන් ධාවනය කරන්නේ නම්, එය pg_basebackup ලෙස හැසිරේවිද?

නැත, එය සම්පීඩනය සහ සමාන්තරකරණය භාවිතා කරන නිසා එය තවමත් වේගයෙන් ධාවනය වනු ඇත. Pg_basebackup පතුවළ ඔබ අසල තබයි. WAL-G උපකල්පනය කරන්නේ ඔබ සංරක්ෂණය වින්‍යාස කර ඇති බවයි. එය වින්‍යාස කර නොමැති නම් එය අනතුරු ඇඟවීමක් නිකුත් කරයි.

Pg_basebackup පතුවළ නොමැතිව ධාවනය කළ හැක.

ඔව්, එවිට ඔවුන් බොහෝ දුරට සමාන වනු ඇත. Pg_basebackup ගොනු පද්ධතියට පිටපත් කරයි. මාර්ගය වන විට, අපට සඳහන් කිරීමට අමතක වූ නව විශේෂාංගයක් තිබේ. අපට දැන් pg_basebackup වෙතින් ගොනු පද්ධතියට උපස්ථ කළ හැක. මෙය අවශ්‍ය වන්නේ මන්දැයි මම නොදනිමි, නමුත් එය තිබේ.

උදාහරණයක් ලෙස, CephFS මත. සෑම කෙනෙකුටම Object Storage වින්‍යාස කිරීමට අවශ්‍ය නොවේ.

ඔව්, අපට එය කළ හැකි වන පරිදි ඔවුන් මෙම විශේෂාංගය ගැන ප්‍රශ්නයක් ඇසුවේ ඒ නිසා විය හැකිය. ඒ වගේම අපි ඒක කළා.

වාර්තාවට ස්තූතියි! ගොනු පද්ධතියට පිටපත් කිරීම පිළිබඳ ප්රශ්නයක් පමණි. කොටුවෙන් පිටත, ඔබ දැන් දුරස්ථ ආචයනය වෙත පිටපත් කිරීමට සහය දක්වයි, උදාහරණයක් ලෙස, දත්ත මධ්‍යස්ථානයේ යම් රාක්කයක් හෝ වෙනත් දෙයක් තිබේ නම්?

මෙම සූත්‍රගත කිරීමේදී මෙය දුෂ්කර ප්‍රශ්නයකි. ඔව්, අපි සහාය දක්වමු, නමුත් මෙම ක්‍රියාකාරීත්වය තවමත් කිසිදු නිකුතුවකට ඇතුළත් කර නොමැත. එනම්, සියලුම පූර්ව නිකුතු මෙයට සහය දක්වයි, නමුත් මුදා හැරීමේ අනුවාද එසේ නොවේ. මෙම ක්‍රියාකාරිත්වය 0.2 අනුවාදයේ එකතු කරන ලදී. අපි දන්නා සියලුම දෝෂ නිවැරදි කළ වහාම එය අනිවාර්යයෙන්ම ඉක්මනින් නිකුත් කරනු ඇත. නමුත් දැනට මෙය කළ හැක්කේ පූර්ව නිකුතුවේදී පමණි. පූර්ව නිකුතුවේ දෝෂ දෙකක් තිබේ. WAL-E ප්‍රතිසාධනයේ ගැටලුවක්, අපි එය විසඳා නැත. නවතම පූර්ව නිකුතුවේදී ඩෙල්ටා උපස්ථය පිළිබඳ දෝෂයක් එක් කරන ලදී. එබැවින්, නිකුතු අනුවාද භාවිතා කිරීමට අපි සැමට නිර්දේශ කරමු. පූර්ව නිකුතුවේ තවත් දෝෂ නොමැති වූ වහාම, අපි Google Cloud, S3-අනුකූල දේවල් සහ ගොනු ගබඩා කිරීමට සහය දක්වන බව පැවසිය හැකිය.

හෙලෝ, වාර්තාවට ස්තූතියි. මම තේරුම් ගත් පරිදි, WAL-G යනු බාර්මන් වැනි මධ්‍යගත පද්ධතියක් නොවේද? ඔබ මෙම දිශාවට ගමන් කිරීමට අදහස් කරන්නේද?

ප්‍රශ්නය තියෙන්නේ අපි මේ පැත්තෙන් ඈත් වෙලා. WAL-G පාදක ධාරකය මත, පොකුරු ධාරකය මත සහ පොකුරේ ඇති සියලුම ධාරක මත ජීවත් වේ. අපි පොකුරු දහස් ගණනකට ගිය විට, අපට බොහෝ බාර්ටෙන්ඩර් ස්ථාපනයන් තිබුණි. තවද ඔවුන් තුළ යමක් කඩා වැටෙන සෑම අවස්ථාවකම එය විශාල ගැටලුවකි. ඒවා අලුත්වැඩියා කළ යුතු නිසා, දැන් උපස්ථ නොමැති පොකුරු මොනවාදැයි ඔබ තේරුම් ගත යුතුය. උපස්ථ පද්ධති සඳහා භෞතික දෘඩාංග දිශාවට WAL-G සංවර්ධනය කිරීමට මම සැලසුම් නොකරමි. ප්‍රජාවට මෙහි යම් ක්‍රියාකාරීත්වයක් අවශ්‍ය නම්, මට කිසිසේත් කමක් නැත.

ගබඩා කිරීම සඳහා වගකිව යුතු කණ්ඩායම් අප සතුව ඇත. ඒවගේම අපිට හොඳක් දැනෙනවා ඒ අපි නෙවෙයි, අපේ ලිපිගොනු සුරක්ෂිතව තිබෙන තැන්වල තැබූ විශේෂ අය ඉන්නවා. ඔවුන් යම්කිසි ලිපිගොනු සංඛ්‍යාවක් නැතිවීම දරාගැනීම සඳහා එහි සෑම ආකාරයකම දක්ෂ කේතීකරණ කටයුතු සිදු කරයි. ජාල කලාප පළල සඳහා ඔවුන් වගකිව යුතුය. ඔබට බාර්ටෙන්ඩර් කෙනෙක් සිටින විට, බොහෝ වාහන තදබදයක් ඇති කුඩා දත්ත සමුදායන් එකම සේවාදායකයේ එක්රැස් වී ඇති බව ඔබට හදිසියේම සොයාගත හැකිය. ඔබට එය මත විශාල ඉඩක් ඇති බව පෙනේ, නමුත් යම් හේතුවක් නිසා සෑම දෙයක්ම ජාලය හරහා නොගැලපේ. එය අනෙක් අතට හැරෙන්නට පුළුවන. එතන නෙට්වර්ක් ගොඩක් තියෙනවා, ප්‍රොසෙසර් කෝර් තියෙනවා, හැබැයි මෙතන ඩිස්ක් නෑ. යමක් හසුරුවා ගැනීමේ මෙම අවශ්‍යතාවයෙන් අපි වෙහෙසට පත් වූ අතර, දත්ත ගබඩා කිරීම වෙනම සේවාවක් වන අතර ඒ සඳහා වෙනම විශේෂ පුද්ගලයින් වගකිව යුතුය.

PS නව අනුවාදයක් නිකුත් කර ඇත 0.2.15, ඔබට .walg.json වින්‍යාස ගොනුව භාවිතා කළ හැකි අතර, එය පෙරනිමියෙන් postgres home නාමාවලියෙහි පිහිටා ඇත. ඔබට බාෂ් ස්ක්‍රිප්ට් අත්හැරිය හැක. උදාහරණය .walg.json මෙම ගැටලුවේ ඇත https://github.com/wal-g/wal-g/issues/545

වීඩියෝ:



මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න