- 1 1. හැඳින්වීම
- 2 2. ප්රතිස්ථාපනයට පෙර සූදානම්
- 3 3. MySQL දත්ත සමුදා ප්රතිස්ථාපන ක්රියාපටිපාටිය
- 4 4. MySQL ප්රතිස්ථාපනයෙන් පසු දත්ත තහවුරු කිරීමේ ක්රම
- 5 5. විශාල දත්ත කට්ටල සඳහා ප්රතිස්ථාපන අභිලක්ෂණය
- 6 6. Troubleshooting MySQL Restore Issues
- 7 7. නිතර අසන ප්රශ්න (FAQ)
- 7.1 Q1: පිළිවෙළ කිරීමේදී “Unknown database” පෙනේ නම් මට කුමක් කළ යුතුද?
- 7.2 Q2: පිළිවෙළ කිරීමෙන් පසු අකාරාදිත අක්ෂර සලකුණු කෙසේ සකස් කරගත හැකිද?
- 7.3 Q3: විශාල SQL ගොනුව (1GB හෝ ඊට වැඩි) කෙසේ ප්රතිස්ථාපනය කරන්නේද?
- 7.4 Q4: AWS RDS (cloud පරිසරය) තුළ ප්රතිස්ථාපනය කෙසේ කරන්නේද?
- 7.5 Q5: backup සහ ප්රතිස්ථාපන ස්වයංක්රීයව පරීක්ෂා කිරීම කෙසේද?
- 8 8. නිගමනය
1. හැඳින්වීම
MySQL ප්රතිස්ථාපනය යනු කුමක්ද?
MySQL ප්රතිස්ථාපනය යනු බැකප් ගත කර ඇති දත්ත මුල් දත්ත ගබඩාවට ප්රතිප්රාප්තිය කිරීමේ ක්රියාවලියයි.
ප්රතිස්ථාපනයක් සිදු කිරීමෙන්, දත්ත අහිමිවීම හෝ පද්ධති අසාර්ථකතා පසු දත්ත ප්රතිප්රාප්තිය කර ඔබේ ව්යාපාරය හෝ පද්ධතිය ක්රියාත්මක කරගෙන යා හැක.
විවිධ හේතු මත දත්ත ගබඩා විකෘති විය හැකි හෝ අහිමි විය හැක. උදාහරණයක් ලෙස, පහත සිදුවීම් සාමාන්ය වේ:
- සේවාදායකය බිඳ වැටීම හෝ දෘඩාංග අසාර්ථකතා
- අහඹු දත්ත මකා දැමීම
- යාවත්කාලීන හෝ පද්ධති වෙනස්කම් මඟින් දත්ත විකෘති වීම
- මැල්වෙයා හෝ බාහිර ප්රහාර මඟින් දත්ත අහිමි වීම
මෙම තත්ත්වයන් සඳහා සූදානම් වීමට, පෙරම සුදුසු බැකප් ගත කිරීම වැදගත් වේ.
අවශ්ය වේලාවේ ප්රතිස්ථාපනය කිරීමෙන් ඔබේ පද්ධතිය ඉක්මනින් ප්රතිප්රාප්තිය කළ හැක.
ඔබ මෙම ලිපියෙන් ඉගෙන ගන්නා දේ
මෙම ලිපිය MySQL ප්රතිස්ථාපන ක්රියාවලීන් විස්තරාත්මකව පැහැදිලි කරයි.
ආරම්භකයන් සිට උසස් පරිශීලකයන් දක්වා සියලු දෙනාට සහය වීමට, මූලික ප්රතිස්ථාපන ක්රමයන් සිට උසස් ප්රතිප්රාප්ති තාක්ෂණයන් දක්වා සියල්ල හඳුන්වා දෙයි. විශේෂයෙන්, ඔබ පහත දේ ඉගෙන ගනී:
- මූලික MySQL ප්රතිස්ථාපන පියවර
- විධාන රේඛාව (mysqldump) භාවිතා කර ප්රතිස්ථාපනය කරන ආකාරය
- GUI මෙවලම් (phpMyAdmin, MySQL Workbench) භාවිතා කර ප්රතිස්ථාපනය
- නියමිත දත්ත පමණක් ප්රතිස්ථාපනය කරන ආකාරය
- විශාල දත්ත කට්ටල සඳහා ප්රතිස්ථාපන සුදුසුකම් වැඩි කිරීම
- බයිනරි ලොග් භාවිතා කර උසස් ප්රතිප්රාප්තිය
- ප්රතිස්ථාපනයෙන් පසු දත්ත තහවුරු කිරීමේ ආකාරය
- දෝෂ සිදුවූ විට ගැටළු විසඳීම
මෙම මාර්ගෝපදේශය අනුගමනය කිරීමෙන්, ඔබට සුදුසු බැකප් 전략යක් සැලසුම් කර අවශ්ය විට ඉක්මනින් ප්රතිස්ථාපනය කළ හැක. ඊළඟ කොටසෙන්, ප්රතිස්ථාපනයක් සිදු කිරීමට පෙර අවශ්ය සූදානම් පැහැදිලි කරමු.
2. ප්රතිස්ථාපනයට පෙර සූදානම්
MySQL බැකප් වර්ග
ප්රතිස්ථාපනයක් සිදු කිරීමට, පෙරම සුදුසු බැකප් සකස් කිරීම වැදගත් වේ. MySQL බැකප් ක්රමවලට පහත වර්ග අයත් වේ:
1. mysqldump භාවිතා කර බැකප්
mysqldump යනු MySQL දත්ත ගබඩාව SQL ආකාරයෙන් අපනයනය කරන මෙවලමකි. මෙය සාමාන්යතම ක්රමය වන අතර ප්රතිස්ථාපනය පහසුය.
mysqldump -u username -p database_name > backup.sql
මෙම ක්රමය දත්ත පෙළ ගොනුවක් ලෙස සුරකින්නේ නිසා සංස්කරණය කිරීම පහසුය, නමුත් විශාල දත්ත කට්ටල සඳහා සුදුසු නොවේ.
2. phpMyAdmin භාවිතා කර බැකප්
මෙම ක්රමය phpMyAdmin GUI භාවිතා කර පහසුවෙන් බැකප් සකස් කරයි. ඔබට එය SQL ගොනුවක් ලෙස අපනයනය කළ හැක.
- phpMyAdmin වෙත පිවිසෙන්න
- “Export” ටැබ් එක තෝරන්න
- ආකාරය “SQL” ලෙස සකසා “Go” බොත්තම ක්ලික් කරන්න
මෙම ක්රමය ආරම්භකයන් සඳහා සුහදය, නමුත් විශාල පරිමාණ දත්ත සඳහා සුදුසු නොවේ.
3. MySQL Workbench භාවිතා කර බැකප්
MySQL Workbench GUI මගින් බැකප් සකස් කළ හැක. Data Export විශේෂාංගය භාවිතා කර නියමිත දත්ත ගබඩා හෝ වගු අපනයනය කළ හැක.
4. බයිනරි ලොග් භාවිතා කර බැකප්
බයිනරි ලොග් භාවිතා කිරීමෙන්, ඔබට නියමිත කාල සීමාවක් දක්වා වෙනස්කම් රෙකෝඩ් කර දත්ත ප්රතිප්රාප්තිය සක්රීය කළ හැක.
mysqlbinlog --start-datetime="2024-02-01 10:00:00" --stop-datetime="2024-02-01 12:00:00" binlog.000001 > restore.sql
මෙම ක්රමය උසස් ප්රතිප්රාප්තිය සක්රීය කරයි, නමුත් නිසි ලොග් කළමනාකරණය අවශ්ය වේ.
ප්රතිස්ථාපනයට පෙර පරීක්ෂා ලැයිස්තුව
සාර්ථක ප්රතිස්ථාපනයක් සඳහා, පහත කරුණු පෙරම තහවුරු කළ යුතුය.
1. අක්ෂර සමුදාය තහවුරු කිරීම (UTF-8 vs. SJIS)
බැකප් කාලය සහ ප්රතිස්ථාපන කාලය අතර අක්ෂර සමුදාය වෙනස් නම්, පෙළ විකෘති විය හැක. බැකප් ගොනුවේ කේතනය පරීක්ෂා කරන්න.
file backup.sql
එසේම, ප්රතිස්ථාපනයේදී --default-character-set=utf8mb4 නියම කිරීමෙන් අක්ෂර සමුදා ගැටළු වැළැක්විය හැක.
mysql -u username -p --default-character-set=utf8mb4 database_name < backup.sql
2. ප්රතිස්ථාපනය සඳහා ඉලක්ක දත්ත ගබඩාව සෑදීම
ප්රතිස්ථාපනයට පෙර, ඉලක්ක දත්ත ගබඩාව පවතිනදැයි තහවුරු කරන්න. එය නොමැති නම්, එය සෑදිය යුතුය.
mysql -u username -p -e "CREATE DATABASE IF NOT EXISTS database_name;"
3. බැකප් ගොනුවේ අඛණ්ඩතාව පරීක්ෂා කිරීම
බැකප් ගොනුව විකෘති නොවී ඇති බව තහවුරු කිරීමට, එහි අන්තර්ගතයේ කොටසක් පෙන්වීමට උත්සාහ කරන්න.
head -n 20 backup.sql
ගොනුවේ ප්රමාණය අසාමාන්යව කුඩා නම්, බැකප් නිවැරදිව සකස් නොවී ඇති හැක.
ප්රතිස්ථාපන ක්රමයක් තෝරා ගැනීමේ ක්රමය (සසඳන වගුව)
ප්රතිස්ථාපන ක්රමය ඔබගේ පරිසරය සහ දත්ත ප්රමාණය මත පදනම් වේ. පහත වගුව භාවිතා කර ඔබට සුදුසුම විකල්පය තෝරන්න.
| Method | Difficulty | Pros | Cons |
|---|---|---|---|
mysqldump | Intermediate | Fast and highly reliable | Requires manual commands |
| phpMyAdmin | Beginner | Easy to operate via GUI | Not suitable for large datasets |
| Workbench | Beginner | Simple UI workflow | Can put high load on the server |
| Binary log | Advanced | Point-in-time recovery possible | Complex configuration |
3. MySQL දත්ත සමුදා ප්රතිස්ථාපන ක්රියාපටිපාටිය
තනි දත්ත සමුදායක් ප්රතිස්ථාපනය
mysqldump උපස්ථාපනයක් ප්රතිස්ථාපනය කරන ආකාරය
ඉතා සාමාන්ය ප්රතිස්ථාපන ක්රමය mysqldump සමඟ සාදන ලද උපස්ථාපන දත්ත ප්රතිප්රාප්ත කිරීමයි.
පියවරන්:
- උපස්ථාපන ගොනුව නිවැරදිදැයි තහවුරු කරන්න
head -n 20 backup.sql
→ උපස්ථාපන ගොනුවේ ආරම්භය පරීක්ෂා කර දෝෂ නොමැති බව තහවුරු කරන්න.
- ඉලක්ක දත්ත සමුදාය සාදන්න (ඇතනම් නොමැති නම්)
mysql -u username -p -e "CREATE DATABASE IF NOT EXISTS database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
- දත්ත ප්රතිස්ථාපනය කරන්න
mysql -u username -p database_name < backup.sql
අකාරාදාර අක්ෂර වලින් වැළැක්වීමට විකල්ප නිරූපණය කිරීම
දත්ත කේතනය වෙනස් නම්, ප්රතිස්ථාපනයේදී අකාරාදාර අක්ෂර පෙනී යා හැක.
මෙය වැළැක්වීමට, සාමාන්යයෙන් --default-character-set=utf8mb4 නිරූපණය කරයි.
mysql -u username -p --default-character-set=utf8mb4 database_name < backup.sql
සටහන්:
- උපස්ථාපන කාලයේ භාවිතා කළ අක්ෂර සමුදාය ප්රතිස්ථාපන කාලයේ භාවිතා කළ අක්ෂර සමුදායට ගැලපේදැයි තහවුරු කරන්න
- දත්ත සමුදාය සාදන විට අක්ෂර සමුදාය UTF-8 (utf8mb4) ලෙස සකසන්න
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
බහු දත්ත සමුදා ප්රතිස්ථාපනය
උපස්ථාපන ගොනුව බහු දත්ත සමුදා අඩංගු නම්, දත්ත සමුදායක් නිරූපණය නොකර ආයාත කිරීම ක්රියාත්මක කිරීමෙන් ඒවා ප්රතිස්ථාපනය කළ හැක (සාමාන්යයෙන් --databases සමඟ සාදන ලද ඩම්ප් වල භාවිතා වේ).
mysql -u username -p < backup.sql
ඔබට විශේෂිත දත්ත සමුදායක් පමණක් ප්රතිස්ථාපනය කිරීමට අවශ්ය නම්, පහත ක්රියාත්මක කරන්න:
mysql -u username -p --one-database target_database_name < backup.sql
උදාහරණය:
mysql -u root -p --one-database sales_db < all_databases_backup.sql
→ sales_db පමණක් ප්රතිස්ථාපනය කරයි.
සියලු දත්ත සමුදා ප්රතිස්ථාපනය
සියලු දත්ත සමුදා එකවර ප්රතිස්ථාපනය කිරීමට --all-databases භාවිතා කරන්න.
mysql -u username -p --all-databases < backup.sql
ප්රධාන කරුණු:
--all-databasesභාවිතා කිරීමෙන් උපස්ථාපන ගොනුවේ සියලු දත්ත සමුදා ප්රතිස්ථාපනය වේ.- ගොනුවේ
DROP DATABASEහෝCREATE DATABASEවැනි ප්රකාශන ඇතුළත්දැයි පෙර පරීක්ෂා කිරීම වැදගත් වේ. - ඔබට විශාල දත්ත ප්රමාණයක් ඇත්නම්, මතක සැකසුම් අනුකූල කරගන්න (විස්තර “5. විශාල දත්ත කට්ටල සඳහා ප්රතිස්ථාපන අනුකූල කිරීම” හි විස්තර කර ඇත).
GUI මෙවලම් සමඟ ප්රතිස්ථාපනය
phpMyAdmin භාවිතා කර ප්රතිස්ථාපනය
- phpMyAdmin වෙත ලොග් වන්න
- “Import” ටැබ් තෝරන්න
- උපස්ථාපන ගොනුව (SQL) තෝරා උඩුගත කරන්න
- ප්රතිස්ථාපනය ආරම්භ කිරීමට “Go” ක්ලික් කරන්න
✅ ලාභ:
- ආරම්භකයන් සඳහා භාවිතා කිරීම පහසුය
- ඔබට විධාන රේඛා මෙවලම් භාවිතා නොකර ප්රතිස්ථාපනය කළ හැක
⚠️ අවාසි:
- ගොනු ප්රමාණ සීමා පවතින්නට හැක
- විශාල පරිමාණ දත්ත සඳහා නොගැලපේ
MySQL Workbench භාවිතා කර ප්රතිස්ථාපනය
- MySQL Workbench විවෘත කරන්න
- “Server > Data Import” තෝරන්න
- උපස්ථාපන ගොනුව තෝරන්න
- ඉලක්ක දත්ත සමුදාය නිරූපණය කරන්න
- ප්රතිස්ථාපනය ක්රියාත්මක කිරීමට “Start Import” ක්ලික් කරන්න
✅ ලාභ:
- අවබෝධය සරල GUI වැඩපිළිවෙළ
- ඔබට විශේෂිත වගු පමණක් ප්රතිස්ථාපනය කළ හැක
⚠️ අවාසි:
- සේවාදායකයට වැඩි පූර්ණභාරයක් ගැන්විය හැක
- ඔබගේ MySQL Server අනුවාදය සමඟ අනුකූලතාව පරීක්ෂා කරන්න
4. MySQL ප්රතිස්ථාපනයෙන් පසු දත්ත තහවුරු කිරීමේ ක්රම
සාර්ථක ප්රතිස්ථාපනය තහවුරු කිරීමේ මූලික විධාන
1. දත්ත සමුදා ලැයිස්තුව පරීක්ෂා කරන්න
ප්රතිස්ථාපනයෙන් පසු, දත්ත සමුදා නිවැරදිව සාදන ලද්දේදැයි තහවුරු කරන්න.
SHOW DATABASES;
✅ පරීක්ෂණ බින්දු
- උපස්ථාපන ගොනුවේ සියලු දත්ත සමුදා පෙන්වා ඇතද?
- ප්රතිස්ථාපන ඉලක්ක දත්ත සමුදා නාමය නිවැරදියිද?
2. එක් එක් දත්ත සමුදායේ වගු ලැයිස්තුව පරීක්ෂා කරන්න
දත්ත සමුදාය තිබුණත්, වගු නිවැරදිව ප්රතිස්ථාපනය නොවුවහොත් එය අර්ථහීන වේ.
දත්ත සමුදායේ වගු ලැයිස්තුව පරීක්ෂා කිරීමට පහත විධාන භාවිතා කරන්න.
USE database_name;
SHOW TABLES;
✅ පරීක්ෂණ බින්දු
- සියලු අවශ්ය වගු පෙන්වා තිබේද?
mysqldumpවිකල්ප මත, කිසිදු වගුවක් අහඹු ලෙස අතුරුදන් වී තිබේද?
3. වගු වල පේළි ගණන පරීක්ෂා කරන්න
ප්රතිස්ථාපනය අවසන් වූ පසුද, COUNT(*) භාවිතා කර දත්ත නිවැරදිව ප්රතිස්ථාපනය වී තිබේදැයි ඔබට තහවුරු කළ හැක.
SELECT COUNT(*) FROM table_name;
✅ පරීක්ෂණ බින්දු
COUNT(*)ප්රතිඵලය බැකප් එකට පෙර පේළි ගණනට සමානද?- කිසිදු දත්තයක් අඩු වී තිබේද?
- අසාමාන්ය ලෙස බොහෝ
NULLහෝ0අගයන් තිබේද?

4. විශේෂ දත්ත නිවැරදිව ප්රතිස්ථාපනය වී ඇතිදැයි තහවුරු කරන්න
දත්ත නිවැරදිව ප්රතිස්ථාපනය වී ඇති බව තහවුරු කිරීමට, කිහිපයක් පේළි ලබාගෙන පරීක්ෂා කරන්න.
SELECT * FROM table_name LIMIT 10;
✅ පරීක්ෂණ බින්දු
- අනුපිළිවෙළ සහ අගයන් සාමාන්යද?
- කිසිදු විකෘති පෙළක් තිබේද?
විකෘති අක්ෂර සහ දත්ත විකෘතිය පරීක්ෂා කිරීම
ප්රතිස්ථාපනයේදී අක්ෂර කේතනය නිසි ලෙස සැකසී නොමැති නම්, පෙළ විකෘති විය හැක.
මෙම ගැටලුව වැළැක්වීමට, ප්රතිස්ථාපනයෙන් පසු අක්ෂර කේතනය පරීක්ෂා කරන්න.
1. දත්ත ගබඩා කේතනය පරීක්ෂා කරන්න
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='database_name';
2. වගුවේ කේතනය පරීක්ෂා කරන්න
SHOW CREATE TABLE table_name;
💡 විකෘති අක්ෂර වැළැක්වීම සඳහා උපදෙස්
mysqldumpසමඟ අපනයනය කරන විට,--default-character-set=utf8mb4නියම කරන්න- ප්රතිස්ථාපනයේදීද,
--default-character-set=utf8mb4නියම කරන්න - අවශ්ය නම්, බැකප් ගොනුව තුළ
SET NAMESසැකසුම් සංස්කරණය කරන්න
දර්ශක සහ විදේශ යතුරු අඛණ්ඩතාවය තහවුරු කරන්න
1. දර්ශක නිවැරදිව සකසා ඇතිදැයි පරීක්ෂා කරන්න
SHOW INDEX FROM table_name;
✅ පරීක්ෂණ බින්දු
- දර්ශක නිවැරදිව ප්රතිස්ථාපනය වී තිබේද?
- විශේෂිත තීරුවල විමසුම් අසාමාන්ය ලෙස මන්දගාමී වුණාද?
2. විදේශ යතුරු සීමා පරීක්ෂා කරන්න
ඔබ විදේශ යතුරු සීමා සමඟ වගු ප්රතිස්ථාපනය කරනවා නම්, ඒ සීමා නිවැරදිව යෙදෙනවාදැයි තහවුරු කළ යුතුය.
SELECT TABLE_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'database_name';
✅ පරීක්ෂණ බින්දු
- සියලු විදේශ යතුරු සීමා ප්රතිස්ථාපනය වී තිබේද?
ON DELETE CASCADEසහON UPDATE CASCADEවැනි සැකසුම් නිවැරදියිද?
ප්රතිස්ථාපන ගැටළු පරීක්ෂා කිරීම සඳහා ලොග් ගොනු පරීක්ෂා කරන්න
ප්රතිස්ථාපනයේදී දෝෂ ඇතිවුවහොත්, MySQL දෝෂ ලොග් පරීක්ෂා කිරීමෙන් ගැටලුව හඳුනාගත හැක.
1. MySQL දෝෂ ලොග් පරීක්ෂා කරන්න
sudo cat /var/log/mysql/error.log
✅ දෝෂ ලොග් වල ඔබට බලන්න යුතු දේ
ERROR 1366 (HY000): Incorrect string value→ සම්භවිත කේතන ගැටලුවERROR 1452 (23000): Cannot add or update a child row→ විදේශ යතුරු සීමා දෝෂයERROR 2006 (HY000): MySQL server has gone away→ බැකප් ගොනුව ඉතා විශාල විය හැක
ප්රතිස්ථාපනයෙන් පසු කාර්ය සාධන අභිලක්ෂණය
ප්රතිස්ථාපනයෙන් පසු, දත්ත අඛණ්ඩතාවය පමණක් නොව කාර්ය සාධන බලපෑමද තහවුරු කිරීම වැදගත්ය.
1. විමසුම් ක්රියාත්මක වේගය පරීක්ෂා කරන්න
ප්රතිස්ථාපනයෙන් පසු දත්ත සෙවීම් මන්දගාමී වුවහොත්, දර්ශක නිසි ලෙස ප්රතිස්ථාපනය නොවී තිබේ.
EXPLAIN SELECT * FROM table_name WHERE column_name = 'value';
2. වගු අභිලක්ෂණය කරන්න
කුඩාකරණය (fragmentation) අඩු කර කාර්ය සාධනය වැඩි කිරීමට, වගු අභිලක්ෂණය කරන්න.
OPTIMIZE TABLE table_name;
3. කෑෂ් පිරිසිදු කරන්න
විශාල ප්රමාණයේ දත්ත ප්රතිස්ථාපනය කර ඇත්නම්, කෑෂ් තාවකාලිකව පිරිසිදු කිරීමෙන් කාර්ය සාධනය වැඩි විය හැක.
RESET QUERY CACHE;
සාරාංශය
ප්රතිස්ථාපිත දත්ත නිවැරදි බව තහවුරු කිරීමට, පහත පියවරයන් වැදගත්ය:
✅ මූලික දත්ත ගබඩා සහ වගු පරීක්ෂා
✅ පේළි ගණන තහවුරු කර විකෘති අක්ෂර පරීක්ෂා කරන්න
✅ දර්ශක සහ විදේශ යතුරු වල සත්යාපනය කරන්න
✅ දෝෂ ලොග් විශ්ලේෂණය කර ගැටළු හඳුනාගන්න
✅ කාර්ය සාධන අභිලක්ෂණය යොදන්න
බැකප් එකක් යොදාගෙන දත්ත ගබඩා ප්රතිස්ථාපනය සම්පූර්ණ නොවේ; අඛණ්ඩතා පරීක්ෂා සහ මෙහෙයුම් තහවුරු කිරීමෙන් පසු පමණක් සම්පූර්ණ වේ.
5. විශාල දත්ත කට්ටල සඳහා ප්රතිස්ථාපන අභිලක්ෂණය
max_allowed_packet සැකසුම සකස් කිරීම
1. max_allowed_packet යනු කුමක්ද?
MySQL සීමා කරයි එකවර යැවිය හැකි උපරිම පැකට් ප්රමාණය max_allowed_packet සැකසුම භාවිතා කර.
මෙම අගය ඉතා කුඩා නම්, විශාල SQL විමසුම් ප්රතිස්ථාපනය කිරීමේදී දෝෂ ඇති විය හැක.
2. වත්මන් සැකසුම පරීක්ෂා කරන්න
SHOW VARIABLES LIKE 'max_allowed_packet';
පෙරනිමි අගය සාමාන්යයෙන් 16MB (16,777,216 බයිට්) වේ. විශාල දත්ත කට්ටල ප්රතිස්ථාපනය කරන විට, එය 256MB හෝ ඊට වැඩි ලෙස වැඩි කිරීම නිර්දේශිතය.
3. සැකසුම තාවකාලිකව වෙනස් කරන්න
MySQL සැසිය තුළ එය තාවකාලිකව වෙනස් කිරීමට:
SET GLOBAL max_allowed_packet=268435456; -- 256MB
4. සැකසුම ස්ථිරව වෙනස් කරන්න
MySQL වින්යාස ගොනුව (my.cnf හෝ my.ini) සංස්කරණය කර පහත පේළිය එක් කරන්න හෝ වෙනස් කරන්න:
[mysqld]
max_allowed_packet=256M
වෙනස්කම් සිදු කිරීමෙන් පසු, MySQL නැවත ආරම්භ කරන්න:
sudo systemctl restart mysql
✅ Checkpoints
- ඔබ
ERROR 2006 (HY000): MySQL server has gone awayදෝෂය දැකුවහොත්,max_allowed_packetවැඩි කරන්න. - විශාල දත්ත සැකසීමේදී ප්රතිස්ථාපනය මැදින් අසාර්ථක වුවහොත්, මෙම සැකසුම සමාලෝචනය කරන්න.
Optimizing innodb_buffer_pool_size
1. innodb_buffer_pool_size යනු කුමක්ද?
innodb_buffer_pool_size InnoDB ගබඩා එන්ජින් භාවිතා කරන මතක ප්රමාණය තීරණය කරයි.
අගය ඉතා කුඩා නම්, ප්රතිස්ථාපන ක්රියාකාරකම් නිතර තැටියට ප්රවේශ වීමෙන් කාර්ය සාධනය අඩු වේ.
2. වත්මන් සැකසුම පරීක්ෂා කරන්න
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
පෙරනිමි අගය සාමාන්යයෙන් 128MB පමණ වේ. විශාල දත්ත කට්ටල සඳහා, සම්පූර්ණ සේවාදායක මතකයේ 50–70% වෙන් කිරීම නිර්දේශිතය.
3. කොන්ෆිගර් කිරීමේ ක්රමය
my.cnf සංස්කරණය කර පහත පේළිය එක් කරන්න හෝ වෙනස් කරන්න:
[mysqld]
innodb_buffer_pool_size=2G
ඉන්පසු MySQL නැවත ආරම්භ කරන්න:
sudo systemctl restart mysql
✅ Checkpoints
- ප්රමාණවත් සේවාදායක මතක තිබේ නම්,
innodb_buffer_pool_sizeවැඩි කිරීම ප්රතිස්ථාපන වේගය වැඩි කරයි. - කුඩා පරිසරවල, සැකසීමේදී මතක භාවිතය අවධානයෙන් නිරීක්ෂණය කරන්න.
Partitioning to Improve Restore Speed
1. පාර්ශව කිරීමේ ප්රතිලාභ
දත්ත ගබඩාව විශාල වන විට, එක් වගුවක් විශාල ප්රමාණයේ දත්ත අඩංගු විය හැක, එමඟින් ප්රතිස්ථාපන භාරය වැඩි වේ.
වගුවක් පාර්ශව වලට බෙදා ගැනීමෙන් ප්රතිස්ථාපන කාර්ය සාධනය වැඩි කළ හැක.
2. පාර්ශව සැකසුමේ උදාහරණය
created_at දිනය අනුව පාර්ශව කිරීම සඳහා උදාහරණයක්:
CREATE TABLE orders (
id INT NOT NULL,
created_at DATE NOT NULL,
PRIMARY KEY (id, created_at)
) PARTITION BY RANGE (YEAR(created_at)) (
PARTITION p2023 VALUES LESS THAN (2024),
PARTITION p2024 VALUES LESS THAN (2025)
);
මෙය ඔබට විශේෂ පාර්ශවයන් පමණක් ප්රතිස්ථාපනය කිරීමට ඉඩ සලසයි.
✅ Checkpoints
- සියලු දත්ත එකවර ප්රතිස්ථාපනය කිරීම වෙනුවට, පාර්ශව අනුව බෙදීම කාර්ය සාධනය ගැඹුරු ලෙස වැඩි කරයි.
- විශාල දත්ත කට්ටල කළමනාකරණය සඳහා පාර්ශව කිරීම සැලකිල්ලේ ගෙන වගු සැලසුම් කරන්න.
Faster Restore Using --disable-keys
1. --disable-keys යනු කුමක්ද?
ඉන්ඩෙක්ස් කළ වගුවල විශාල දත්ත ඇතුළත් කිරීමේදී, MySQL එක් එක් ඇතුළත් කිරීමකට ඉන්ඩෙක්ස් යාවත්කාලීන කරයි, එය ප්රතිස්ථාපන ක්රියාකාරකම් මන්දගාමී කරයි.
DISABLE KEYS භාවිතා කිරීම තාවකාලිකව ඉන්ඩෙක්ස් යාවත්කාලීන කිරීම නවතා, ප්රතිස්ථාපනය වේගවත් කරයි.
2. භාවිතා කිරීමේ ක්රමය
- ආපසු ගත ගොනුව සංස්කරණය කර පහත පේළිය එක් කරන්න:
ALTER TABLE table_name DISABLE KEYS;
- ප්රතිස්ථාපන ක්රියාවලිය ක්රියාත්මක කරන්න
mysql -u username -p database_name < backup.sql
- ප්රතිස්ථාපනය අවසන් වූ පසු, දර්ශක නැවත සක්රිය කරන්න:
ALTER TABLE table_name ENABLE KEYS;
✅ Checkpoints
DISABLE KEYSභාවිතය විශාල ඇතුළත් කිරීම් සඳහා ප්රතිස්ථාපන වේගය ගැඹුරු ලෙස වැඩි කරයි.- ප්රතිස්ථාපනයෙන් පසු
ENABLE KEYSක්රියාත්මක කිරීම අමතක නොකරන්න.
6. Troubleshooting MySQL Restore Issues
Common Error Messages and Solutions
1. “Unknown Database” Error
✅ Error Message
ERROR 1049 (42000): Unknown database 'database_name'
✅ Cause
- ඉලක්ක දත්ත ගබඩාව ප්රතිස්ථාපනය ක්රියාත්මක කිරීමට පෙර සාදන ලද නොවේ.
✅ Solution
- දත්ත ගබඩාව අතින් සාදන්න
mysql -u username -p -e "CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
- පිළිවෙළ නැවත ක්රියාත්මක කරන්න
mysql -u username -p database_name < backup.sql
2. “Incorrect String Value” (අකාරාදිත අක්ෂර)
✅ දෝෂ පණිවුඩය
ERROR 1366 (HY000): Incorrect string value
✅ හේතුව
- Backup සහ restore අතර අක්ෂර සමුදා නොගැලපීම
- දත්ත ගබඩා පෙරනිමි අක්ෂර සමුදාය අනිසි ලෙස සකස් කර ඇත
✅ විසඳුම
- Backup ගොනුවේ කේතනය පරීක්ෂා කරන්න
file backup.sql
- පිළිවෙළ කිරීමේදී
--default-character-set=utf8mb4නියම කරන්නmysql -u username -p --default-character-set=utf8mb4 database_name < backup.sql
- දත්ත ගබඩා අක්ෂර සමුදාය ඒකාබද්ධ කරන්න
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. “MySQL Server Has Gone Away” පිළිවෙළ කිරීමේදී
✅ දෝෂ පණිවුඩය
ERROR 2006 (HY000): MySQL server has gone away
✅ හේතුව
- Backup ගොනුව ඉතා විශාලයි
max_allowed_packetඉතා කුඩායි- ප්රමාණවත් මතක නොමැතිව MySQL බිඳ වැටේ
✅ විසඳුම
max_allowed_packetවැඩි කරන්නSET GLOBAL max_allowed_packet=256M;
innodb_buffer_pool_sizeසකසන්න[mysqld] innodb_buffer_pool_size=2G
- පිළිවෙළ කිරීමට පෙර backup සම්පීඩනය කරන්න
mysqldump -u username -p database_name | gzip > backup.sql.gz gunzip < backup.sql.gz | mysql -u username -p database_name
- SQL ගොනුව වෙන් කරන්න
split -b 500M backup.sql backup_part_
වෙන් කළ ගොනු අනුක්රමයෙන් පිළිවෙළ කරන්න:
cat backup_part_* | mysql -u username -p database_name
විශාල Backup ගොනු හසුරවීම
1. පිළිවෙළ කිරීමට පෙර SQL ගොනුව වෙන් කරන්න
If the data to restore is too large, splitting the file into smaller chunks increases the success rate.
split -b 500M backup.sql backup_part_
වෙන් කළ ගොනු අනුක්රමයෙන් පිළිවෙළ කරන්න:
cat backup_part_* | mysql -u username -p database_name
2. mysqldump සමඟ --single-transaction විකල්පය භාවිතා කරන්න
මෙම විකල්පය එකම ගනුදෙනුව තුළ dump සිදු කරයි, අගුළු වැසීම අඩු කරයි සහ විශාල දත්ත කට්ටල පිළිවෙළ කිරීමේදී පූර්ණභාරය අඩු කරයි.
mysqldump --single-transaction -u username -p database_name > backup.sql
3. තාවකාලිකව innodb_flush_log_at_trx_commit අක්රිය කරන්න
විශාල පිළිවෙළ කිරීමේදී ගනුදෙනු ලොග් ලිවීමේ අඩ频率 අඩු කිරීම පිළිවෙළ වේගය ගණනාවක් වැඩි කරයි.
After the restore, do not forget to revert to the original setting (default: 1).
SET GLOBAL innodb_flush_log_at_trx_commit=0;
SET GLOBAL innodb_flush_log_at_trx_commit=1;
පිළිවෙළ ගැටළු පරීක්ෂා කිරීම සඳහා ලොග් ගොනු පරීක්ෂා කරන්න
1. MySQL දෝෂ ලොග් පරීක්ෂා කරන්න
If the restore fails, reviewing the MySQL error log helps identify the root cause.
sudo cat /var/log/mysql/error.log
2. විස්තරාත්මක පණිවුඩ පෙන්වීමට SHOW WARNINGS; භාවිතා කරන්න
SHOW WARNINGS;
සාමාන්ය අනතුරු ඇඟවීම්
| Message | Cause | Solution |
|---|---|---|
Duplicate entry | Primary key duplication | Use INSERT IGNORE |
Table already exists | The table already exists | Run DROP TABLE IF EXISTS before restore |
Data truncated for column | String exceeds column limit | Increase VARCHAR size |
7. නිතර අසන ප්රශ්න (FAQ)
Q1: පිළිවෙළ කිරීමේදී “Unknown database” පෙනේ නම් මට කුමක් කළ යුතුද?
✅ දෝෂ පණිවුඩය
ERROR 1049 (42000): Unknown database 'database_name'
✅ හේතුව
- Backup ගොනුවේ
CREATE DATABASEප්රකාශයක් නොමැත - නියමිත දත්ත ගබඩාව පිළිවෙළ කිරීමේදී නොපවතී
✅ විසඳුම
- දත්ත ගබඩාව අතින් සාදන්න
mysql -u username -p -e "CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
- පිළිවෙළ නැවත ක්රියාත්මක කරන්න
mysql -u username -p database_name < backup.sql
Q2: පිළිවෙළ කිරීමෙන් පසු අකාරාදිත අක්ෂර සලකුණු කෙසේ සකස් කරගත හැකිද?
✅ දෝෂ පණිවුඩය
ERROR 1366 (HY000): Incorrect string value
✅ හේතුව
- Backup සහ පිළිවෙළ අතර අක්ෂර සමුදා නොගැලපීම
- දත්ත ගබඩා පෙරනිමි අක්ෂර සමුදාය අනිසි ලෙස සකස් කර ඇත
✅ විසඳුම
- Backup ගොනුවේ කේතනය පරීක්ෂා කරන්න
file backup.sql
- ප්රතිස්ථාපනය කිරීමේදී
--default-character-set=utf8mb4නියම කරන්නmysql -u username -p --default-character-set=utf8mb4 database_name < backup.sql
- දත්ත ගබඩා අක්ෂර සෙට් එක ඒකාබද්ධ කරන්න
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Q3: විශාල SQL ගොනුව (1GB හෝ ඊට වැඩි) කෙසේ ප්රතිස්ථාපනය කරන්නේද?
✅ ගැටළු
- ප්රතිස්ථාපනයට බොහෝ කාලයක් ගනී
ERROR 2006 (HY000): MySQL server has gone away
✅ විසඳුම්
max_allowed_packetවැඩි කරන්නSET GLOBAL max_allowed_packet=256M;
innodb_buffer_pool_sizeසකසන්න[mysqld] innodb_buffer_pool_size=2G
- ප්රතිස්ථාපනයට පෙර backup සම්පීඩනය කරන්න
mysqldump -u username -p database_name | gzip > backup.sql.gz gunzip < backup.sql.gz | mysql -u username -p database_name
- SQL ගොනුව වෙන් කරන්න
split -b 500M backup.sql backup_part_
අනුක්රමිකව ප්රතිස්ථාපනය කරන්න:
cat backup_part_* | mysql -u username -p database_name
Q4: AWS RDS (cloud පරිසරය) තුළ ප්රතිස්ථාපනය කෙසේ කරන්නේද?
✅ පියවරන්
- ස්ථානීය backup එකක් සාදන්න
mysqldump -u username -p --databases database_name > backup.sql
- backup ගොනුව AWS RDS ඉන්ස්ටන්ස් වෙත මාරු කරන්න
scp backup.sql username@server_ip:/path/to/backup/
- AWS RDS වෙත සම්බන්ධ වී ප්රතිස්ථාපනය කරන්න
mysql -h rds_endpoint -u username -p database_name < backup.sql
✅ වැදගත්
- AWS RDS
SUPERඅවසර ලබා නොදෙයි, backup සාදන විට--set-gtid-purged=OFFනියම කරන්න.mysqldump -u username -p --set-gtid-purged=OFF --databases database_name > backup.sql
Q5: backup සහ ප්රතිස්ථාපන ස්වයංක්රීයව පරීක්ෂා කිරීම කෙසේද?
✅ විසඳුම
දෛනික backup සහ ප්රතිස්ථාපන පරීක්ෂණ ස්වයංක්රීයව සිදු කිරීම සඳහා Linux cron job එකක් භාවිතා කරන්න.
1. ස්වයංක්රීය backup ස්ක්රිප්ට්
#!/bin/bash
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +"%Y%m%d")
DB_NAME="your_database"
USER="your_user"
PASSWORD="your_password"
# Create backup
mysqldump -u $USER -p$PASSWORD $DB_NAME > $BACKUP_DIR/backup_$DATE.sql
# Delete backups older than 30 days
find $BACKUP_DIR -type f -name "backup_*.sql" -mtime +30 -exec rm {} \;
2. ස්වයංක්රීය ප්රතිස්ථාපන පරීක්ෂණ ස්ක්රිප්ට්
#!/bin/bash
DB_NAME="restore_test"
USER="your_user"
PASSWORD="your_password"
BACKUP_FILE="/var/backups/mysql/backup_latest.sql"
# Create test database
mysql -u $USER -p$PASSWORD -e "DROP DATABASE IF EXISTS $DB_NAME; CREATE DATABASE $DB_NAME;"
# Execute restore
mysql -u $USER -p$PASSWORD $DB_NAME < $BACKUP_FILE
3. Cron Job එකට එක් කරන්න
crontab -e
පහත ලයින් එකතු කරන්න (දෛනිකව 3:00 AM ට backup, 4:00 AM ට ප්රතිස්ථාපන පරීක්ෂණ):
0 3 * * * /path/to/backup_script.sh
0 4 * * * /path/to/restore_test_script.sh
✅ චෙක්පොයින්ට්ස්
- ස්වයංක්රීය backup සහ ප්රතිස්ථාපන පරීක්ෂණ නිතර සිදු කරන්න
- backup ගොනුවේ අඛණ්ඩතාව නිතර පරීක්ෂා කරන්න
8. නිගමනය
මූලික MySQL ප්රතිස්ථාපන ක්රියාමාර්ග සමාලෝචනය
✅ ප්රතිස්ථාපනයට පෙර සූදානම
- backup වර්ගයන් තේරුම් ගන්න (
mysqldump,phpMyAdmin, binary logs, ආදිය.) - ප්රතිස්ථාපනයට පෙර දත්ත ගබඩා පවතින බව සහ අක්ෂර සෙට් පරීක්ෂා කරන්න
- සුදුසු ප්රතිස්ථාපන ක්රමය තෝරන්න
✅ MySQL ප්රතිස්ථාපන ක්රම
| Method | Difficulty | Pros | Cons |
|---|---|---|---|
mysqldump | Intermediate | Fast and versatile | Requires command-line operations |
phpMyAdmin | Beginner | Easy GUI operation | Not suitable for large datasets |
Workbench | Beginner | Simple UI workflow | High server load |
| Binary log | Advanced | Point-in-time recovery possible | Complex configuration |
✅ ප්රතිස්ථාපනයෙන් පසු පරීක්ෂණ
SHOW DATABASES;භාවිතා කර දත්ත ගබඩා නිර්මාණය වී ඇති බව තහවුරු කරන්නSHOW TABLES;භාවිතා කර වගු ප්රතිස්ථාපනය වී ඇති බව තහවුරු කරන්නSELECT COUNT(*)භාවිතා කර පේළි ගණන පරීක්ෂා කරන්නSHOW WARNINGS;භාවිතා කර ප්රතිස්ථාපන අනතුරු ඇඟවීම් පරීක්ෂා කරන්න
✅ විශාල දත්ත කට්ටල ප්රතිස්ථාපන සඳහා සුදුසුකම්
max_allowed_packetසහinnodb_buffer_pool_sizeසකසන්න- ප්රතිස්ථාපනයට පෙර backup ගොනු වෙන් කරන්න (
split -b 500M backup.sql backup_part_) DISABLE KEYSභාවිතා කර ඉන්ඩෙක්ස් නැවත ගොඩනැගීම සුදුසුකම් කරගන්න
✅ ප්රතිස්ථාපනයේදී ගැටළු විසඳීම
- “නොදන්නා දත්ත ගබඩාව” →
CREATE DATABASEක්රියාත්මක කරන්න - “අකාරාදර්ශ අක්ෂර” →
--default-character-set=utf8mb4නියම කරන්න - “ප්රතිස්ථාපනය මැදින් නවතයි” →
max_allowed_packetවැඩි කරන්න - “විශාල දත්ත ප්රතිස්ථාපනය” → ගොනු වෙන් කරන්න හෝ
--single-transactionභාවිතා කරන්න - “AWS RDS ප්රතිස්ථාපනය” →
--set-gtid-purged=OFFභාවිතා කරන්න - ලොග් පරීක්ෂා කරන්න →
SHOW WARNINGS;භාවිතා කරන්න
බැකප් සහ ප්රතිස්ථාපන මෙහෙයුම් සඳහා හොඳම ක්රියාමාර්ග
බැකප් සහ ප්රතිස්ථාපන නිවැරදිව කළමනාකරණය කිරීම දත්ත අහිමි වීමේ අවදානම අඩු කරයි.
නිතිපතා බැකප් සහ ප්රතිස්ථාපන පරීක්ෂණ සිදු කිරීමෙන්, සැබෑ පද්ධති දෝෂ සිදුවූ විට දත්ත සාර්ථකව ප්රතිප්රාප්ත කරගත හැක.
1. නිතර බැකප් සැලසුම් කරන්න
- දිනපතා හෝ සතිපතා බැකප් සැලසුම් කරන්න
- සම්පූර්ණ බැකප් සමඟ ඉන්ක්රමණික බැකප් එකතු කරන්න
- බැකප් ස්ථානීයව සහ දුරස්ථව ගබඩා කරන්න
- Local:
/var/backups/mysql/ - මීදුම් ගබඩා (S3, Google Drive, FTP)
2. බැකප් ස්ක්රිප්ට් ස්වයංක්රීය කරන්න
බැකප් ස්වයංක්රීය කිරීම මනුෂ්ය දෝෂ අඩු කරයි සහ බැකප් අතුරුදන් වීම වැළැක්වයි.
#!/bin/bash
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +"%Y%m%d")
DB_NAME="your_database"
USER="your_user"
PASSWORD="your_password"
# Create backup
mysqldump -u $USER -p$PASSWORD $DB_NAME > $BACKUP_DIR/backup_$DATE.sql
# Delete backups older than 30 days
find $BACKUP_DIR -type f -name "backup_*.sql" -mtime +30 -exec rm {} \;
3. ස්වයංක්රීය ප්රතිස්ථාපන පරීක්ෂණ
බැකප් සැබෑවට ප්රතිස්ථාපනය කළ හැකිදැයි නිතර පරීක්ෂා කිරීම වැදගත් වේ.
#!/bin/bash
DB_NAME="restore_test"
USER="your_user"
PASSWORD="your_password"
BACKUP_FILE="/var/backups/mysql/backup_latest.sql"
# Create test database
mysql -u $USER -p$PASSWORD -e "DROP DATABASE IF EXISTS $DB_NAME; CREATE DATABASE $DB_NAME;"
# Execute restore
mysql -u $USER -p$PASSWORD $DB_NAME < $BACKUP_FILE
4. නිරීක්ෂණය සහ ඇඟවීම්
- බැකප් අසාර්ථක වූ විට දැනුම්දීම් ලබා ගන්න
cronතුළMAILTOසකසන්නSlackහෝ ඊමේල් දැනුම්දීම් භාවිතා කරන්නMAILTO="your_email@example.com" 0 3 * * * /path/to/backup_script.sh
MySQL ප්රතිස්ථාපන සාර්ථක කිරීමේ සහතික කිරීම
බැකප් සහ ප්රතිස්ථාපන ක්රියාවලි දත්ත ආරක්ෂණයේ අත්යවශ්ය අංග වේ.
ව්යාපාරික මෙහෙයුම් සහ සංවර්ධන පරිසරවල, නිතිපතා බැකප් සහ ප්රතිස්ථාපන පරීක්ෂණ අත්යවශ්ය වේ.
මෙම ලිපියේ හඳුන්වා දී ඇති ක්රියාමාර්ග භාවිතා කර ඔබගේ MySQL බැකප් සහ ප්රතිස්ථාපන මෙහෙයුම් වැඩිදියුණු කරන්න.
🔹 MySQL ප්රතිස්ථාපන සාර්ථකතා පරීක්ෂා ලැයිස්තුව
☑ බැකප් නිතර ගන්නා ලදද?
☑ බැකප් ගොනු අන්තර්ගතය පෙර පරීක්ෂා කර තිබේද?
☑ ප්රතිස්ථාපනයෙන් පසු අඛණ්ඩතා පරීක්ෂණ සිදු කරන්නේද?
☑ විශාල දත්ත කට්ටල ප්රතිස්ථාපන සැකසුම් නිවැරදිව සකසා තිබේද?
☑ ප්රශ්න විසඳුම් ක්රියාමාර්ග සූදානම් කර තිබේද?
☑ බැකප් සහ ප්රතිස්ථාපන ක්රියාවලි ස්වයංක්රීය කර තිබේද?
ඊළඟ පියවර
මෙම ලිපිය මත පදනම්ව, ඔබගේ MySQL ප්රතිස්ථාපන ක්රියාවලිය පරීක්ෂා කර සාර්ථක ප්රතිප්රාප්තිය තහවුරු කරන්න.
එසේම, ඔබගේ ප්රතිස්ථාපන ක්රියාමාර්ග ලේඛනය කර ඒවා ඔබේ කණ්ඩායම සමඟ බෙදා ගන්න.
ඔබගේ බැකප් සහ ප්රතිස්ථාපන මෙහෙයුම් නිරන්තරයෙන් වැඩිදියුණු කර ඔබේ දත්ත ආරක්ෂා කරන්න! 🚀


