MySQL හි සංකේතනය: ප්රධාන යතුර භාවිතා කිරීම

පාඨමාලාව සඳහා නව බඳවා ගැනීම් ආරම්භය අපේක්ෂාවෙන් "දත්ත සමුදාය" අපි MySQL හි සංකේතනය පිළිබඳ ලිපි මාලාවක් දිගටම ප්‍රකාශයට පත් කරන්නෙමු.

MySQL හි සංකේතනය: ප්රධාන යතුර භාවිතා කිරීම

මෙම ලිපි මාලාවේ පෙර ලිපියේ (MySQL හි සංකේතනය: Keystore) අපි යතුරු ගබඩා ගැන කතා කළා. මෙම ලිපියෙන් අපි ප්‍රධාන යතුර භාවිතා කරන ආකාරය දෙස බලා ලියුම් කවර සංකේතනය කිරීමේ වාසි සහ අවාසි සාකච්ඡා කරමු. 

ලියුම් කවර ගුප්තකේතනය පිටුපස ඇති අදහස නම් සංකේතනය සඳහා භාවිතා කරන යතුරු (tablespace keys) වෙනත් යතුරකින් (ප්‍රධාන යතුර) සංකේතනය කර තිබීමයි. Tablespace යතුරු ඇත්ත වශයෙන්ම දත්ත සංකේතනය කිරීමට භාවිතා කරයි. රූපමය වශයෙන්, මෙය පහත පරිදි නිරූපණය කළ හැකිය:

MySQL හි සංකේතනය: ප්රධාන යතුර භාවිතා කිරීම

ප්‍රධාන යතුර යතුරු ගබඩාවේ ඇති අතර, මේස අවකාශ යතුරු සංකේතනය කළ වගු වල ශීර්ෂවල ඇත (මේස අවකාශයේ 0 පිටුවේ). 

ඉහත පින්තූරයේ:

  • A වගුව යතුර 1 (යතුරු 1) සමඟ සංකේතනය කර ඇත. යතුර 1 ප්‍රධාන යතුර භාවිතයෙන් සංකේතනය කර A වගුවේ ශීර්ෂයේ සංකේතනය කර ගබඩා කර ඇත.

  • B වගුව යතුරු 2 (යතුර 2) සමඟ සංකේතනය කර ඇත. යතුර 2 මාස්කර් යතුර භාවිතයෙන් සංකේතනය කර B වගුවේ ශීර්ෂයේ සංකේතනය කර ගබඩා කර ඇත.

  • ඒ නිසා.

සේවාදායකයට A වගුව විකේතනය කිරීමට අවශ්‍ය වූ විට, එය ගබඩාවෙන් ප්‍රධාන යතුර ලබා ගනී, A වගුවේ ශීර්ෂයෙන් සංකේතනය කළ යතුර 1 කියවයි, සහ යතුර 1 විකේතනය කරයි. විකේතනය කළ යතුර 1 සේවාදායකයේ මතකයේ හැඹිලි කර A වගුව විකේතනය කිරීමට භාවිතා කරයි. .

InnoDB

InnoDB හි, සැබෑ සංකේතනය සහ විකේතනය I/O මට්ටමින් සිදු කෙරේ. එනම්, පිටුව තැටියට ෆ්ලෂ් කිරීමට පෙර සංකේතනය කර තැටියෙන් කියවූ වහාම විකේතනය වේ.

InnoDB හි, සංකේතනය ක්‍රියා කරන්නේ tablespace මට්ටමේ පමණි. පෙරනිමියෙන් සියලුම වගු වෙනම වගු වල නිර්මාණය වේ (ගොනුව-වගුවකට-මේස අවකාශය) වෙනත් වචන වලින් කිවහොත්, එක් වගුවක් පමණක් අඩංගු විය හැකි මේස අවකාශයක් නිර්මාණය වේ. ඔබට ප්‍රධාන මේස අවකාශය තුළද වගු සෑදිය හැකි වුවද (සාමාන්ය මේස අවකාශය) නමුත් ඕනෑම අවස්ථාවක, මේසය සෑම විටම යම් මේස අවකාශයක පවතී. සංකේතාංකනය මේස අවකාශයේ මට්ටමින් සිදු කරන බැවින්, එය සම්පුර්ණයෙන්ම සංකේතනය කර ඇතත් නැත. එනම්, ඔබට ප්‍රධාන වගු අවකාශයේ ඇති වගු වලින් කොටසක් පමණක් සංකේතනය කළ නොහැක. 

කිසියම් හේතුවක් නිසා ඔබ වගුවකට ගොනුවක් අක්‍රිය කර ඇත්නම්, එවිට සියලුම වගු පද්ධති මේස අවකාශය තුළ නිර්මාණය වේ. තුල MySQL සඳහා Percona සේවාදායකය ඔබට innodb විචල්‍යය භාවිතයෙන් පද්ධති වගු අවකාශය සංකේතනය කළ හැකsysමේස අවකාශයසංකේතනය කිරීම හෝ සංකේතාංකන නූල් භාවිතා කිරීම, නමුත් මෙය තවමත් පර්යේෂණාත්මක අංගයකි. MySQL එකේ මේක නෑ.

ඉදිරියට යාමට පෙර, අපි ප්රධාන යතුරු හැඳුනුම්පතේ ව්යුහය සලකා බැලිය යුතුය. එය UUID, KEY වලින් සමන්විත වේID සහ උපසර්ගය "INNODBKey". එය මෙසේ පෙනේ: INNODBKey-UUID-KEYහැඳුනුම්පත.

UUID යනු සංකේතාත්මක වගු අවකාශය සහිත සේවාදායකයේ uuid වේ. යතුරහැඳුනුම්පත යනු දිනෙන් දින වැඩි වන අගයක් පමණි. ඔබ මුලින්ම ප්‍රධාන යතුරක් සාදන විට යතුරID යනු 1. යතුරු භ්‍රමණය අතරතුර, නව ප්‍රධාන යතුරක් සාදන විට, KEYID = 2 සහ එසේ ය. අපි මෙම ලිපි මාලාවේ පසු ලිපි වලින් ප්‍රධාන යතුරු භ්‍රමණය ගැන වැඩි විස්තර කතා කරමු.

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

MySQL හි සංකේතනය: ප්රධාන යතුර භාවිතා කිරීම

KEYID යනු KEY යඅප දැනටමත් සාකච්ඡා කර ඇති ප්‍රධාන යතුරු හැඳුනුම්පතේ හැඳුනුම්පත. UUID යනු සේවාදායකයේ uuid වන අතර එය ප්‍රධාන යතුරු හඳුනාගැනීමේ ද භාවිතා වේ. TABLESPACE KEY - බිටු 256 කින් සමන්විත වගු අවකාශ යතුර, සේවාදායකය විසින් අහඹු ලෙස ජනනය කරයි. ආරම්භක දෛශිකය (IV, ආරම්භක දෛශිකය) ද අහඹු ලෙස ජනනය කරන ලද බිටු 256 කින් සමන්විත වේ (එය බිටු 128 විය යුතු වුවද). IV AES සංකේතනය සහ විකේතනය ආරම්භ කිරීමට භාවිතා කරයි (බිට් 256 න් 128 ක් පමණක් භාවිතා වේ). අවසානයේ TABLESPACE KEY සහ IV සඳහා CRC32 චෙක්සම් එකක් ඇත.

මෙච්චර වෙලා මම හෙඩර් එකේ encrypt කරපු tablespace key එකක් තියෙනවා කියලා ටිකක් සරළ කළා. ඇත්ත වශයෙන්ම, tablespace යතුර සහ ආරම්භක දෛශිකය ප්රධාන යතුර භාවිතයෙන් එකට ගබඩා කර සංකේතනය කර ඇත. tablespace යතුර සහ ආරම්භක දෛශිකය සංකේතනය කිරීමට පෙර, CRC32 ඒවා සඳහා ගණනය කරන බව මතක තබා ගන්න.

CRC32 අවශ්‍ය වන්නේ ඇයි?

කෙටියෙන් කිවහොත්, ප්‍රධාන යතුරේ වලංගුභාවය තහවුරු කිරීම සඳහා. Tablespace යතුර සහ ආරම්භක දෛශිකය විකේතනය කිරීමෙන් පසුව, චෙක්සම් එකක් ගණනය කර ශීර්ෂයේ ගබඩා කර ඇති CRC32 සමඟ සංසන්දනය කරනු ලැබේ. චෙක්සම් ගැළපෙන්නේ නම්, අපට නිවැරදි ප්‍රධාන යතුර සහ මේස ඉඩ යතුර තිබේ. එසේ නොමැති නම්, tablespace එක නැති වූ ලෙස සලකුණු කර ඇත (අපට තවමත් එය විකේතනය කළ නොහැක).

ඔබට ඇසිය හැක: යතුරු සත්‍යාපනය සිදු කරන්නේ කුමන අවස්ථාවේදීද? පිළිතුර සේවාදායකය ආරම්භ වන විට ය. සංකේතාත්මක වගු / වගු සහිත සේවාදායකය ආරම්භයේදී UUID, KEY කියවයිශීර්ෂයෙන් ID සහ ප්‍රධාන යතුරු හැඳුනුම්පතක් ජනනය කරයි. ඉන්පසු එය යතුරුකරණයෙන් අවශ්‍ය ප්‍රධාන යතුර ලබා ගනී, මේස අවකාශයේ යතුර විකේතනය කර චෙක්සම් සත්‍යාපනය කරයි. නැවත වරක්, චෙක්සම් ගැලපේ නම්, සියල්ල පිළිවෙලට තිබේ, නැත - මේස අවකාශය අතුරුදහන් ලෙස සලකුණු කර ඇත.

ඔබ මෙම ලිපි මාලාවේ අවසාන ලිපිය කියෙව්වොත් (MySQL හි සංකේතනය: Keystore), එවිට සමහර විට මතක තබා ගන්න, සේවාදායක යතුරු ගබඩාවක් භාවිතා කරන විට, සේවාදායකයට ලැබෙන්නේ ආරම්භයේදී යතුරු හඳුනාගැනීම් ලැයිස්තුවක් පමණක් බව, වඩාත් නිවැරදිව, යතුරු හැඳුනුම්පත සහ පරිශීලක හැඳුනුම්පත, මෙම යුගලය යතුර අනන්‍ය ලෙස හඳුනා ගන්නා බැවිනි. මම දැන් කියන්නේ, සර්වරය ආරම්භයේදී, tablespace යතුරු විකේතනය කළ හැකිද යන්න පරීක්ෂා කිරීමට අවශ්‍ය සියලුම යතුරු ලබා ගන්නා බවයි. ඉතින් ඇයි, ආරම්භ කිරීමේදී, සේවාදායක ගබඩා කිරීමේදී, යතුර පමණක් පටවනු ලැබේid සහ පරිශීලකid සහ සියලුම යතුරු නොවේද? මන්ද ඔබට සියලුම යතුරු අවශ්‍ය නොවනු ඇත. මෙය ප්රධාන වශයෙන් ප්රධාන යතුරේ භ්රමණය නිසාය. ගබඩාව තුළ ප්‍රධාන යතුරක් කරකවන විට, නව ප්‍රධාන යතුරක් සාදනු ලැබේ, නමුත් පැරණි යතුරු මැකෙන්නේ නැත. මේ අනුව, ඔබට සේවාදායකයට අවශ්‍ය නොවන බොහෝ යතුරු සේවාදායකයේ යතුරු ගබඩාවේ තිබිය හැකි අතර එබැවින් සේවාදායකය ආරම්භ වන විට ලබා නොගනී.

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

කෙසේ වෙතත්, ප්‍රධාන යතුරු සංකේතනයට එක් විශාල අඩුපාඩුවක් ඇත: tablespace_key සමඟ මේස ඉඩක් සංකේතනය කළ පසු, එය සෑම විටම එකම යතුරකින් සංකේතනය වී පවතී. ප්‍රධාන යතුරු භ්‍රමණය මෙතැනට උදව් නොකරයි. මෙය අවාසියක් වන්නේ ඇයි? MySQL හි දෝෂ ඇති බව අපි දනිමු, එය බිඳ වැටීමට සහ මූලික ගොනුවක් සෑදිය හැකිය. මූලික ගොනුවේ සේවාදායක මතක ඩම්ප් එකක් අඩංගු බැවින්, ඩම්ප් එකේ විකේතනය කරන ලද මේස ඉඩ යතුර අඩංගු වීම සිදුවිය හැක. ඊටත් වඩා නරක දෙය නම්, විකේතනය කරන ලද මේස අවකාශ යතුරු මතකයේ ගබඩා කර ඇති අතර එය තැටියට මාරු කළ හැකිය. ඔබට මෙම ගොනු සහ swap කොටස වෙත ප්‍රවේශ වීමට root අවසර අවශ්‍ය බැවින් මෙය අවාසියක් නොවන බව ඔබට පැවසිය හැක. ඔව්. නමුත් root අවශ්‍ය වන්නේ ටික වේලාවකට පමණි. යමෙකුට විකේතනය කරන ලද මේස අවකාශ යතුර වෙත ප්‍රවේශ වූ පසු, ඔහුට/ඇයට root ප්‍රවේශය නොමැතිව වුවද, දත්ත විකේතනය කිරීමට එය දිගටම භාවිතා කළ හැක. මීට අමතරව, තැටිය සොරකම් කළ හැකි අතර, තෙවන පාර්ශවීය මෙවලම් භාවිතයෙන් swap / core ගොනු කියවිය හැක. TDE හි අරමුණ වන්නේ තැටිය සොරකම් කළත් එය කියවිය නොහැකි වීමයි. තුල MySQL සඳහා Percona සේවාදායකය අලුතින් ජනනය කරන ලද යතුරු සමඟ වගු අවකාශය නැවත සංකේතනය කළ හැක. මෙම විශේෂාංගය සංකේතාංකන නූල් ලෙස හඳුන්වනු ලබන අතර මෙය ලියන අවස්ථාව වන විටත් පර්යේෂණාත්මකව පවතී.

පාඨමාලාව ගැන තව දැනගන්න

තවත් කියවන්න:

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

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