mysqldump භාවිතයෙන් MySQL දත්ත ගබඩා අපනයන සහ ආයාත කිරීම (උපස්ථාපනය & ප්‍රතිස්ථාපන මාර්ගෝපදේශය)

MySQL දත්ත ගබඩා කළමනාකරණයේ mysqldump සමඟ අපනයන සහ ආයාත කිරීම

1. හැඳින්වීම

MySQL දත්ත ගබඩා වෙබ් යෙදුම් සහ දත්ත ගබඩා කළමනාකරණ පද්ධතිවල පුළුල් ලෙස භාවිතා වේ. ඔබේ දත්ත ගබඩාව නිසි ලෙස කළමනාකරණය කිරීම සහ නිතර පිටපත් (බැකප්) කිරීම අහඹු දෝෂ හෝ දත්ත අහිමි වීම සඳහා සූදානම් වීමට ඉතා වැදගත් වේ. විශේෂයෙන්, mysqldump විධානය MySQL දත්ත ගබඩාව අපනයනය කිරීම සහ පසුකාලීනව ප්‍රතිස්ථාපනය සඳහා ආයාත කිරීම සඳහා භාවිතා කරන ප්‍රධාන මෙවලම් අතර එකකි.

මෙම ලිපියේ, MySQL දත්ත ගබඩාව පිටපත් (අපනයන) කිරීම සහ පිටපත් ගොනුවක් භාවිතා කර දත්ත ගබඩාවකට දත්ත ප්‍රතිස්ථාපනය (ආයාත) කිරීම පිළිබඳ විස්තරාත්මකව පැහැදිලි කරමු. දත්ත ගබඩා පරිපාලකයන් සහ ඉංජිනේරුවන් සඳහා, mysqldump භාවිතා කර කාර්යක්ෂම පිටපත් සහ ආයාත ක්‍රම, සාමාන්‍ය දෝෂ සහ කාර්ය සාධන වැඩිදියුණු කිරීමේ තාක්ෂණයන් ගැන සාකච්ඡා කරමු.

2. mysqldump විධානයේ මූලික කරුණු

mysqldump යනු MySQL දත්ත ගබඩා පිටපත් කිරීම සඳහා ශක්තිමත් විධාන පේළි මෙවලමකි. මෙම මෙවලම භාවිතා කර ඔබට දත්ත ගබඩාවකින් වගු විවරණ සහ දත්ත පෙළ ගොනුවකට අපනයනය කළ හැක. පහත, මූලික භාවිතය සහ සාමාන්‍යයෙන් භාවිතා වන විකල්පයන් පැහැදිලි කරමු.

2.1 mysqldump හි මූලික භාවිතය

මූලික විධානය පහත පරිදි ක්‍රියාත්මක වේ:

mysqldump -u [username] -p [database_name] > [output_file_name]

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

උදාහරණය:

mysqldump -u root -p mydatabase > backup.sql

-u විකල්පය භාවිතා කර MySQL පරිශීලක නාමය නියම කර, -p විකල්පය භාවිතා කර මුරපදය ඇතුළත් කරන්න. mydatabase යනු පිටපත් කිරීමට අවශ්‍ය දත්ත ගබඩාවේ නාමය වන අතර, backup.sql යනු අපනයන ගොනුවේ නාමය වේ.

2.2 ප්‍රධාන විකල්පයන්ගේ විස්තරය

  • –single-transaction : අපනයන කාලයේ වගු අගුළු වැසීම වැළැක්වීමට ගනුදෙනුවක් (transaction) භාවිතා කරයි, එමඟින් පිටපත් කිරීමේදී දත්ත ගබඩාව ලබාගත හැකි තත්ත්වයේ පවතිනවා. InnoDB වගු සඳහා, දත්ත සමතුලිතතාවය රැකගනී.

  • –skip-lock-tables : දත්ත ගබඩා වගු අගුළු වැසීම වැළැක්වයි. සාමාන්‍යයෙන්, අපනයන කාලයේ වගු අගුළු වැසී, අනෙකුත් පරිශීලකයන්ට දත්ත ගබඩාවට ප්‍රවේශය අඩු කරයි. මෙම විකල්පය සමකාලීන ක්‍රියාකාරකම් සදහා ඉඩ සලසයි.

  • –no-data : වගු විවරණ පමණක් අපනයනය කර, සැබෑ දත්ත නොඅපනයනය කරයි. ඔබට වගු ව්‍යුහය පමණක් පිටපත් කිරීමට අවශ්‍ය වන විට ප්‍රයෝජනවත් වේ.

2.3 අපනයන ගොනුවේ ව්‍යුහය

ඔබ mysqldump විධානය ක්‍රියාත්මක කළ විට, ප්‍රතිඵල ගොනුව පහත ආකාරයේ SQL ප්‍රකාශන අඩංගු වේ:

DROP TABLE IF EXISTS `table_name`;
CREATE TABLE `table_name` (
  `id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `table_name` (`id`, `name`) VALUES (1, 'John'), (2, 'Doe');

මෙම ගොනුව දත්ත ගබඩා ප්‍රතිස්ථාපනයේදී භාවිතා කරයි, එහි SQL ස්ක්‍රිප්ට් පළමුව පවතින වගු ඉවත් කර, නැවත සෑදීම සහ පසුව දත්ත ඇතුළත් කිරීම සිදු කරයි.

3. mysqldump සමඟ ආයාත කිරීම

ඊළඟට, අපනයන දත්ත දත්ත ගබඩාවකට ආයාත කිරීමේ ක්‍රමය පැහැදිලි කරමු. ආයාත කිරීම ප්‍රධාන වශයෙන් mysql විධානය භාවිතා කර සිදු කරයි.

3.1 මූලික ආයාත විධානය

ආයාත කිරීමක් සිදු කිරීමට, පහත විධානය භාවිතා කරන්න:

mysql -u [username] -p [database_name] < [input_file_name]

උදාහරණය:

mysql -u root -p mydatabase < backup.sql

මෙම විධානය අපනයන කර ඇති backup.sql ගොනුව නියමිත දත්ත ගබඩා mydatabase වෙත ආයාත කරයි. ආයාතය සාර්ථක නම්, ගොනුවේ CREATE TABLE සහ INSERT ප්‍රකාශන ක්‍රියාත්මක වී, වගු නිර්මාණය කර දත්ත ඇතුළත් කරයි.

3.2 ආයාත කිරීමේදී වැදගත් සටහන්

  • දත්ත ගබඩාවේ පවතිම තහවුරු කිරීම : ඉලක්ක දත්ත ගබඩාව නොමැති නම්, දෝෂයක් සිදුවේ. ඔබට පූර්වයෙන් දත්ත ගබඩාව නිර්මාණය කළ යුතුය, ඒ සඳහා පහත විධානය භාවිතා කරන්න:
    CREATE DATABASE mydatabase;
    
  • විශාල දත්ත කට්ටල ආයාත කිරීම : විශාල ප්‍රමාණයේ දත්ත ආයාත කිරීම සේවාදායකයේ කාර්ය සාධනයට බලපා හැක. කාර්යක්ෂමතාව වැඩිදියුණු කිරීමට, ආයාතයට පෙර දර්ශක (index) අක්‍රිය කිරීම හෝ කණ්ඩායම් සැකසීම (batch processing) භාවිතා කිරීම සලකා බලන්න.

4. දෝෂ හසුරුවීම සහ ගැටළු විසඳීම

Errors frequently occur during database import operations, but they can be resolved with proper handling. In this section, we explain common types of errors, how to avoid them, and specific troubleshooting steps.

4.1 Examples of Common Errors

  1. ERROR 1064 (Syntax Error)
  • Cause : MySQL අනුවාද අතර අනුකූලතාව ගැටළු හෝ ගොනුවේ අවලංගු SQL වාක්‍ය රචනය නිසා සිදුවේ. නව MySQL අනුවාද වල පරණ වාක්‍ය රචනා ඇතුළත් කර ඇත්නම් මෙය විශේෂයෙන් පොදු වේ.
  • Solution : දෝෂ පණිවුඩයේ සඳහන් විශේෂ ස්ථානය පරීක්ෂා කර ප්‍රශ්නකාරී SQL ප්‍රකාශය නිවැරදි කරන්න. විවිධ MySQL අනුවාද අතර දත්ත මාරු කරන විට, සුදුසු අනුවාද-අනුකූල විකල්ප භාවිතා කරන්න.
  1. ERROR 1049 (Unknown Database)
  • Cause : නියමිත දත්ත ගබඩාව නොමැති හෝ දත්ත ගබඩා නාමය වැරදි වීම නිසා සිදුවේ.
  • Solution : ආයාත කිරීමට පෙර දත්ත ගබඩාව නිර්මාණය කර ඇති බව තහවුරු කරන්න. එය නොමැති නම්, පහත විධානය භාවිතා කර නිර්මාණය කරන්න: CREATE DATABASE database_name;
  1. ERROR 1146 (Table Doesn’t Exist)
  • Cause : SQL ගොනුවේ සඳහන් වගුව දත්ත ගබඩාවේ නොමැති වීම නිසා සිදුවේ. සාමාන්‍යයෙන් ආයාත කිරීමේදී වගුව නිසි ලෙස නිර්මාණය නොකළීමෙන් මෙය සිදුවේ.
  • Solution : SQL ගොනුවේ CREATE TABLE ප්‍රකාශන නිවැරදි බව පරීක්ෂා කර, අවශ්‍ය නම් වගුව අතින් නිර්මාණය කරන්න.

4.2 Best Practices to Avoid Errors

  • Match Export and Import Environments : MySQL අනුවාද හෝ සැකසුම් අතර වෙනස්කම් වාක්‍ය රචනා දෝෂ හෝ දත්ත වර්ග අසමතුලිතතා ඇති කරයි. හැකි තරම් එකම පරිසරයේ නිර්යාත සහ ආයාත කිරීම සිදු කරන්න.
  • Test the Backup File : ආයාත කිරීමට පෙර, බැකප් ගොනුවේ අන්තර්ගතය තහවුරු කරන්න. උදාහරණයක් ලෙස, ස්ථානීය පරිසරයේ නව දත්ත ගබඩාවක් නිර්මාණය කර, පරීක්ෂා ආයාතයක් සිදු කර සියල්ල නිවැරදිව ක්‍රියා කරන බව තහවුරු කරන්න.

4.3 Troubleshooting

ආයාත කිරීමේදී දෝෂ හඳුනා ගැනීමට, දෝෂ ලොග් සහ ප්‍රතිදාන පණිවුඩ පරීක්ෂා කිරීම වැදගත් වේ. පහත ගැටළු විසඳුම් පියවර කිහිපයක් ඇත:

  1. Check Error Messages : MySQL විධාන පේළිය හෝ ලොග් වල පෙන්වන දෝෂ පණිවුඩයන් මූලික සංකේත ලබා දෙයි. ඒවා පේළි අංකය සහ ගැටළුවේ විස්තර පෙන්වා, විසඳීමට පහසු කරයි.
  2. Verify the Export File : නිර්යාත කළ SQL ගොනුව අතින් පරීක්ෂා කර CREATE TABLE සහ INSERT INTO ප්‍රකාශන නිවැරදිදැයි බලන්න. එසේම වගු හෝ දත්ත අස්ථානගත වී නැති බව තහවුරු කරන්න.
  3. Adjust Export Options : නිර්යාත කිරීමේදී විශේෂ විකල්ප භාවිතා කිරීම ගැටළු වැළැක්වීමට උපකාරී වේ. උදාහරණයක් ලෙස, --compatible විකල්පය විවිධ MySQL අනුවාද අතර අනුකූලතාව වැඩි කරයි.

5. Performance Optimization During Import

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

5.1 Disabling and Rebuilding Indexes

දර්ශක (Indexes) ආයාත කිරීමේදී දත්ත ඇතුළත් කිරීම මන්දගාමී කරයි. ආයාත කාලය අඩු කිරීම සඳහා, ආයාත කිරීමට පෙර දර්ශක අක්‍රිය කර, පසුකාලීනව නැවත සක්‍රිය කරන්න.

දර්ශක අක්‍රිය කිරීමේ උදාහරණය:

ALTER TABLE table_name DISABLE KEYS;

ආයාතය සම්පූර්ණ වූ පසු, දර්ශක නැවත ගොඩනැගීම:

ALTER TABLE table_name ENABLE KEYS;

5.2 Using Batch Processing

විශාල දත්ත කට්ටල ආයාත කිරීමේදී, දත්ත කුඩා කණ්ඩායම් වලට බෙදීම වේගය වැඩි කර සේවාදායක භාරය අඩු කරයි. උදාහරණයක් ලෙස, මිලියන ගණනක් පේළි එකවර ආයාත කිරීම වෙනුවට, ඒවා 100,000 පේළි කණ්ඩායම් ලෙස බෙදන්න.

5.3 Utilizing Data Compression

දත්ත සම්පීඩනය මාරු කාලය අඩු කර ගබඩා ඉඩ සුරකින්නේ. gzip වැනි මෙවලම් භාවිතා කර දත්ත සම්පීඩනය කර, ආයාත කිරීමේදී ඒවා අසම්පීඩනය කළ හැක.

සම්පීඩිත ගොනුවක් ආයාත කිරීම පහත පරිදි සිදු කළ හැක:

gunzip < backup.sql.gz | mysql -u root -p mydatabase

6. Conclusion

MySQL දත්ත ගබඩා කළමනාකරණයේ, mysqldump භාවිතා කර නිර්යාත සහ ආයාත කිරීම ඉතා ප්‍රභාවී ක්‍රමයකි. මෙම ලිපියේ, අපි මූලික භාවිතය, ආයාත කිරීමේ දෝෂ සැලසුම්, සහ කාර්ය සාධන අභිප්‍රේරණ තාක්ෂණික ක්‍රම පිළිබඳව සාකච්ඡා කළෙමු.

විශාල දත්ත සමුදා ක්‍රියාත්මක කරන විට, දර්ශක කළමනාකරණය සහ කණ්ඩායම් සැකසීම මඟින් කාර්ය සාධනය අනුකූල කිරීම අත්‍යවශ්‍ය වේ. අමතරව, නිතර පිටපත් ගත කිරීම සහ පරීක්ෂණ ආයාත කිරීම සිදු කිරීම අහඹු දත්ත අහිමි වීම සඳහා සූදානම් වීමට උපකාරී වේ.

මෙම හොඳම ක්‍රියා පටිපාටි ක්‍රියාත්මක කිරීමෙන්, ඔබට දත්ත සමුදා ආයාත මෙහෙයුම් වඩා සුමට සහ විශ්වාසනීය ලෙස සිදු කළ හැක.