අනුව MySQL 5.0 සහතික අධ්යයනය මාර්ගෝපදේශය , පරිච්ඡේදය 32 වැනි වගන්තිය 32.3.4, පිටු 456.457 විස්තර කිරීමට ද්වීමය පහසුවෙන් එහාමෙහා ගෙන යාමේ සඳහා කොන්දේසි පහත සඳහන් පිටතට ගෙන ඇති:
ඔබට එක් යන්ත්රයක සාදන ලද ද්විමය උපස්ථයක් ගෙන වෙනත් ගෘහ නිර්මාණ ශිල්පයක් ඇති වෙනත් යන්ත්රයක භාවිතා කිරීමට අවශ්ය නම් ද්විමය අතේ ගෙන යා හැකි බව වැදගත් ය. උදාහරණයක් ලෙස, ද්විමය උපස්ථයක් භාවිතා කිරීම එක් MySQL සේවාදායකයක සිට තවත් දත්ත ගබඩාවක් පිටපත් කිරීමේ එක් ක්රමයකි.
MyISAM සඳහා, ද්විමය අතේ ගෙන යා හැකි යන්නෙන් අදහස් වන්නේ ඔබට MySAM වගුවක් සඳහා එක් MySQL සේවාදායකයක සිට වෙනත් යන්ත්රයකට වෙනත් යන්ත්රයකට කෙලින්ම පිටපත් කළ හැකි අතර දෙවන සේවාදායකයට මේසයට ප්රවේශ විය හැකි බවයි.
InnoDB සඳහා, ද්විමය අතේ ගෙන යා හැකි යන්නෙන් අදහස් වන්නේ ඔබට එක් යන්ත්රයක MySQL සේවාදායකයේ සිට වෙනත් යන්ත්රයකට වෙනත් යන්ත්රයකට කෙලින්ම පිටපත් කළ හැකි අතර දෙවන සේවාදායකයට මේස අවකාශයට ප්රවේශ විය හැකි බවයි. පෙරනිමියෙන්, සේවාදායකයක් විසින් කළමනාකරණය කරනු ලබන සියලුම InnoDB වගු මේසය තුළ එකට ගබඩා කර ඇත, එබැවින් වගුවේ අතේ ගෙන යා හැකි හැකියාව යනු තනි තනි InnoDB වගු අතේ ගෙන යා හැකිද යන්නයි. එක් වගුවක් පවා අතේ ගෙන යා නොහැකි නම්, මේස අවකාශය ද නොවේ.
කොන්දේසි දෙකක් සපුරා ඇත්නම් MyISAM වගු සහ InnoDB වගු එක් ධාරකයක සිට තවත් ධාරකයකට ද්විමය අතේ ගෙන යා හැකිය:
- යන්ත්ර දෙකම දෙකේ අනුපූරක පූර්ණ සංඛ්යා ගණිතය භාවිතා කළ යුතුය
- යන්ත්ර දෙකම IEEE පාවෙන ලක්ෂ්ය ආකෘතිය භාවිතා කළ යුතුය, නැතිනම් වගු වල පාවෙන ලක්ෂ්ය තීරු අඩංගු නොවිය යුතුය (FLOAT හෝ DOUBLE)
ප්රායෝගිකව, එම කොන්දේසි දෙක සුළු සීමාවක් ඇත. දෙකෙහි අනුපූරක පූර්ණ සංඛ්යා අංක ගණිතය සහ අයිඊඊඊ පාවෙන ලක්ෂ්ය ආකෘතිය නවීන දෘඩාංග පිළිබඳ සම්මතයයි. InnoDB ද්විමය අතේ ගෙන යා හැකි තෙවන කොන්දේසිය නම් ඔබ වගු සහ දත්ත සමුදායන් සඳහා කුඩා අකුරු භාවිතා කළ යුතු බවයි. එයට හේතුව InnoDB මෙම නම් අභ්යන්තරව (එහි දත්ත ශබ්ද කෝෂයේ) වින්ඩෝස් හි කුඩා අකුරුවල ගබඩා කිරීමයි. සිම්පල් නම් භාවිතා කිරීමෙන් වින්ඩෝස් සහ යුනික්ස් අතර ද්විමය අතේ ගෙන යා හැකි අතර, කුඩා අකුරු භාවිතා කිරීමට බල කිරීම සඳහා, ඔබට පහත දැක්වෙන රේඛා විකල්ප ගොනුවක තැබිය හැකිය:
[mysqld]
lower_case_table_names=1
එක් මේස වගුවක් භාවිතා කිරීම සඳහා ඔබ InnoDB වින්යාස කරන්නේ නම්, ද්විමය අතේ ගෙන යා හැකි කොන්දේසි InnoDB වගු සඳහා .ibd ගොනු ද ඇතුළත් වේ. (සියලුම InnoDB වගු පිළිබඳ තොරතුරු ගබඩා කරන දත්ත ශබ්ද කෝෂය එහි අඩංගු බැවින් හවුල් වගු සඳහා කොන්දේසි තවමත් අදාළ වේ.)
ද්විමය අතේ ගෙන යා හැකි කොන්දේසි සපුරා නොමැති නම්, ඔබට යම් පෙළ ආකෘතියක් භාවිතා කර (උදාහරණයක් ලෙස, mysqldump සමඟ) ඒවා ගමනාන්ත සේවාදායකයට නැවත පූරණය කිරීමෙන් ඔබට MyISAM හෝ InnoDB වගු එක් සේවාදායකයකින් තවත් සේවාදායකයකට පිටපත් කළ හැකිය.
තනි වගු ගෙනයාමට ගබඩා එන්ජිම මත පදනම් වූ ප්රධාන ක්රම දෙකක් තිබේ.
දී ඇති උදාහරණය සඳහා අපි පහත සඳහන් දේ සිතමු:
- datadir යනු / var / lib / mysql වේ
- mydb නමින් දත්ත සමුදාය
- වගුවේ mydb දත්ත සමුදාය නම් mytable .
MyISAM වගු
Mydb.mytable විසින් MyISAM ගබඩා එන්ජිම භාවිතා කරන්නේ නම්, වගුව භෞතිකව වෙනම ලිපිගොනු තුනක් ලෙස ප්රකාශ වේ
- /var/lib/mysql/mydb/mytable.frm (.frm ගොනුව)
- /var/lib/mysql/mydb/mytable.MYD (.MYD ගොනුව)
- /var/lib/mysql/mydb/mytable.MYI (.MYI ගොනුව)
.Frm හි වගු ව්යුහය
අඩංගු වේ .MYD හි වගු දත්ත
අඩංගු වේ .MYI වගු දර්ශක පිටුව අඩංගු වේ
MySQL හි තාර්කික දෘෂ්ටි කෝණයකින් වගුව නිරූපණය කිරීම සඳහා මෙම ලිපිගොනු එකිනෙකට පරායත්තව භාවිතා කරයි. මෙම ගොනුවට තව දුරටත් තාර්කික සම්බන්ධතාවයක් නොමැති බැවින්, එක් ඩීබී සේවාදායකයකින් තවත් වගුවකට සංක්රමණය වීම. ඔබට මෙය වින්ඩෝස් සේවාදායකයක සිට ලිනක්ස් සේවාදායකයක් හෝ මැකෝස් දක්වා කළ හැකිය. ඇත්ත වශයෙන්ම, ඔබට mysql වසා දමා වගු ලිපිගොනු 3 පිටපත් කළ හැකිය. ඔබට පහත සඳහන් දෑ ක්රියාත්මක කළ හැකිය:
LOCK TABLES mydb.mytable READ;
SELECT SLEEP(86400);
UNLOCK TABLES;
එක් ssh සැසියකදී කියවීමට පමණක් වගුව තබා පැය 24 ක් අගුල තබා ගන්න. තත්පරයකට පසුව, පිටපත තවත් ssh සැසියකදී සිදු කරන්න. ඉන්පසු පැය 24 ක අගුලෙන් mysql සැසිය මරා දමන්න. ඔබට පැය 24 ක් බලා සිටීමට අවශ්ය නැත.
InnoDB වගු
සහතික කිරීමේ පොතේ ඉහත සඳහන් උපුටා දැක්වීම මත පදනම්ව, නිශ්චිත InnoDB වගුවක් උපස්ථ කරන්නේ කෙසේද යන්න පාලනය කරන සාධක බොහොමයක් තිබේ. සරල බව, පැහැදිලිකම සහ සංක්ෂිප්තභාවය සඳහා, වගුවේ පරිපූර්ණ වේලාවට ඩම්ප් කිරීම සඳහා --single- ගනුදෙනු පරාමිතීන් භාවිතා කරමින් අපේක්ෂිත වගුවේ mysqldump සිදු කරන්න. ඔබට එක් මේසයක් අවශ්ය නම් InnoDB අර්ථ නිරූපණයන් සමඟ සම්බන්ධ වීමට අවශ්ය නැත. ඔබ කැමති ඕනෑම MySQL සේවාදායකයකට එම ඩම්ප්ෆයිල් නැවත පූරණය කළ හැකිය.
ප්රශ්න දෙකක් මෙහි ඒකාබද්ධ කර ඇති බැවින් (jcolebrand): සංස්කරණය කරන්න
ඔබ මන්දගාමී ඩීබී කාර්ය සාධනයක් සමඟ ජීවත් වීමට කැමති නම්, MySQL තවමත් සර්වර්ඒ හි ක්රියාත්මක වන විට පවා ඔබට පැරණි සේවාදායකයේ (සර්වර්ඒ) සිට නව සේවාදායකයට (සර්වර් බී) rsync මාලාවක් සිදු කළ හැකිය.
පියවර 01) ServerA සතුව ඇති mysql හි අනුවාදය ServerB හි ස්ථාපනය කරන්න
පියවර 02) සර්වර්ඒ හි, මයිස්ක්ල් SET GLOBAL innodb_max_dirty_pages_pct = 0;
සිට විනාඩි 10 ක් පමණ ධාවනය කරන්න (මෙය ඉනෝ ඩී බී බෆර් තටාකයෙන් අපිරිසිදු පිටු පිරිසිදු කරයි. එය මයිස්ක්ල් වසා දැමීම වේගයෙන් සිදු කිරීමටද උපකාරී වේ) ඔබේ දත්ත සමුදාය සියල්ලම මයිසාම් නම්, ඔබට මෙම පියවර මඟ හැරිය හැක.
පියවර 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql
පියවර 04) rsync මිනිත්තු 1 කට වඩා අඩු කාලයක් ගත වන තෙක් පියවර 03 නැවත කරන්න
පියවර 05) service mysql stop
ServerA මත
පියවර 06) තවත් එක් rsync සිදු කරන්න
පියවර 07) scp ServerA:/etc/my.cnf ServerB:/etc/
පියවර 08) service mysql start
ServerB මත
පියවර 08) service mysql start
ServerA මත (අත්යවශ්ය නොවේ)
එය උත්සාහ කර බලන්න !!!
අවවාදය
ඔබට මේ ආකාරයට අනුරූකරණ දාසයෙකු නිර්මාණය කළ හැකිය. /Etc/my.cnf මාස්ටර් තුළ සේවාදායක හැඳුනුම්පත පැහැදිලිව සකසා ඇති බව මතක තබා ගන්න. /Etc/my.cnf