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

目次

1. හැඳින්වීම

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

MySQL හි දත්ත ගබඩාවක් මැකීමේදී වැදගත් සටහන්

දත්ත ගබඩාවක් මැකීමේදී පහත අවදානම් පවතී:

  • ඔබ වැරදිව මැකුවහොත්, එය ප්‍රතිසාධනය කළ නොහැක.
  • පවතින යෙදුම් දෝෂ සමඟ අසාර්ථක විය හැක.
  • පරිභෝගිකයන් සහ වගු සඳහා අවශ්‍ය දත්ත අහිමි විය හැක.

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

මැකීමේ අවදානම් සහ ප්‍රතිසාධනය අමාරු වීමේ හේතු

ඔබ DROP DATABASE විධානය ක්‍රියාත්මක කළහොත්, දත්ත ගබඩාවේ සියලු දත්ත මැකෙන අතර, ප්‍රතිසාධනය කිරීමේ මාර්ගයක් මූලිකව නොමැත.
කෙසේ වෙතත්, ඔබට පෙර බැකප් එකක් තිබේ නම්, එය ප්‍රතිස්ථාපනය කළ හැක. බැකප් ක්‍රම පිළිබඳ විස්තර පසුව දක්වා ඇත, නමුත් ඔබ වැදගත් දත්ත සමඟ කටයුතු කරනවා නම්, මැකීමට පෙර බැකප් එකක් ගන්නා බවට අවධානයෙන් සිටින්න.

මැකීමට පෙර පරීක්ෂා ලැයිස්තුව

දත්ත ගබඩාවක් මැකීමට පෙර, පහත අයිතම පරීක්ෂා කරන්න.

දත්ත වල බැකප් එකක් ගෙන තිබේද?
ඔබ මැකීමට යන දත්ත ගබඩාව නිවැරදිද? (වැරදි දත්ත ගබඩාවක් මැකීමෙන් වැළැක්වීමට පරීක්ෂා කරන්න)
ඒ දත්ත ගබඩාව භාවිතා කරන යෙදුම් තිබේද? (දැනට ක්‍රියාත්මක වන යෙදුම් දෝෂයක් ලබාදෙනවාදැයි පරීක්ෂා කරන්න)
ඔබට අවශ්‍ය අවසර තිබේද? (මැකීම සඳහා සුදුසු පරිශීලක අවසර අවශ්‍ය වේ)
මැකීමෙන් පසු ඇතිවන බලපෑම් ඔබට තේරෙනවාද? (සම්බන්ධිත පරිශීලකයන් සහ වගු වලට ඇති බලපෑම් පරීක්ෂා කරන්න)

2. MySQL දත්ත ගබඩාවක් මැකීමේ ක්‍රමය

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

MySQL වෙත සම්බන්ධ වීමේ ක්‍රමය

දත්ත ගබඩාවක් මැකීමට, පළමුව MySQL වෙත සම්බන්ධ විය යුතුය.
MySQL command line (CLI) හෝ phpMyAdmin භාවිතා කළ හැකි නමුත්, මෙහිදී CLI භාවිතා කිරීම පිළිබඳව විස්තර කරමු.

  1. MySQL වෙත පිවිසෙන්න
    mysql -u username -p
    
  • -u පසු MySQL පරිශීලක නාමය (සාමාන්‍යයෙන් root) සඳහන් කරන්න.
  • -p සමඟ, මුරපදය ඇතුළත් කිරීමට ඔබට ඉල්ලීමක් ලැබේ.
  1. සාර්ථක පිවිසුමෙන් පසු, පහත පරිදි ප්‍රෝම්ප්ට් එකක් දැකිය හැක
    mysql>
    

ඔබ දැන් MySQL සමඟ සම්බන්ධ වී ඇත.

දත්ත ගබඩා ලැයිස්තුව පරීක්ෂා කිරීම

වැරදි දත්ත ගබඩාවක් මැකීමෙන් වැළැක්වීමට, පළමුව වත්මන් දත්ත ගබඩා ලැයිස්තුව පරීක්ෂා කරන්න.

SHOW DATABASES;

ක්‍රියාත්මක කිරීමෙන් පසු, ඔබට මෙවැනි ප්‍රතිඵලයක් දැකිය හැක:

+--------------------+
| Database          |
+--------------------+
| information_schema |
| my_database       |
| test_db           |
| wordpress_db      |
+--------------------+

ඔබ මැකීමට අවශ්‍ය දත්ත ගබඩාවේ නාමය තහවුරු කර, එය නිවැරදිදැයි දෙවරක් පරීක්ෂා කරන්න.

DROP DATABASE විධානය ක්‍රියාත්මක කිරීම

දත්ත ගබඩාව මැකීමට අවශ්‍ය බව තහවුරු කළ පසු, DROP DATABASE විධානය භාවිතා කර මැකීම සිදු කරන්න.

DROP DATABASE my_database;
  • my_database වෙනුවට ඔබ මැකීමට යන දත්ත ගබඩාවේ නාමය යොදන්න.
  • විධානය ක්‍රියාත්මක කළ පසු, දත්ත ගබඩාව ස්ථිරවම මැකෙනු ඇත.

මැකීමෙන් පසු තහවුරු කිරීම

මැකීම සාර්ථකව සිදු වූ බව තහවුරු කිරීමට, SHOW DATABASES; නැවත ක්‍රියාත්මක කර ඉලක්ක දත්ත ගබඩාව ලැයිස්තුවේ නොපෙනේදැයි පරීක්ෂා කරන්න.

SHOW DATABASES;

දත්ත ගබඩාවක් මැකීමේදී ඇතිවන දෝෂ පණිවුඩ

දත්ත ගබඩාවක් මැකීමේදී ඔබට දෝෂ පණිවුඩ ලැබිය හැක. පහත සාමාන්‍ය දෝෂ සහ ඒවා විසඳීමේ ක්‍රම දැක්වේ.

ErrorCauseSolution
ERROR 1008 (HY000): Can't drop databaseThe database does not existCheck with SHOW DATABASES; and specify the correct name
ERROR 1044 (42000): Access deniedThe user does not have DROP privilegesGrant privileges with GRANT ALL PRIVILEGES ON my_database.* TO 'user'@'host';
ERROR 1010 (HY000): Error dropping databaseThe database is in useCheck active processes with SHOW PROCESSLIST; and stop if necessary

සාරාංශය

  • SHOW DATABASES; භාවිතා කර ඉලක්ක දත්ත ගබඩාව තහවුරු කරන්න.
  • DROP DATABASE database_name; ක්‍රියාත්මක කර එය මකන්න.
  • මැකීමෙන් පසු, SHOW DATABASES; ක්‍රියාත්මක කර දත්ත ගබඩාව ඉවත් වී ඇතිදැයි තහවුරු කරන්න.
  • දෝෂයක් සිදු වූ විට, හේතුව හඳුනාගෙන සුදුසු පියවර ගන්න.

3. විශේෂ අවස්ථා සඳහා මැකීමේ ක්‍රම

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

දත්ත සමුදායේ නම විශේෂ අක්ෂර අඩංගු වන විට

දත්ත සමුදායේ නම අංකනයන් (-) හෝ අවකාශ වැනි විශේෂ අක්ෂර අඩංගු නම්, සාමාන්‍ය DROP DATABASE ප්‍රකාශනය දෝෂයකින් අසාර්ථක විය හැක.

වැරදි මකා දැමීමේ ප්‍රකාශනය (දෝෂයක් ඇති කරයි)

DROP DATABASE my-database;

මෙම අවස්ථාවේදී, ඔබට පහත පරිදි දෝෂයක් දැකිය හැක:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

නිවැරදි මකා දැමීමේ ක්‍රමය

විශේෂ අක්ෂර සහිත දත්ත සමුදායේ නම් සඳහා, ඔබ යුතුයි නම ආච්චරණ (“) භාවිතා කරමින් ආවරණය කිරීමට**.

DROP DATABASE `my-database`;

මකා දැමීම වැළැක්වීම සඳහා දෝෂ නිවැරදි කරන්නේ කෙසේද

ඔබ දත්ත සමුදායක් මකන්න උත්සාහ කරන විට දෝෂ ඇති විය හැක. මෙහි සුලබ දෝෂ සහ ඒවායේ විසඳුම් ඇත.

1. ERROR 1008 (HY000): Can't drop database; database doesn't exist

මෙම දෝෂය යම් දත්ත සමුදායක් පවතින බවක් නොවන විට සිදු වේ.

විසඳුම

  • SHOW DATABASES; ධාවනය කරන්න සහ ඉලක්ක දත්ත සමුදාය පවතින බව තහවුරු කරන්න.
  • වැරදි ලියුම් පරීක්ෂා කරන්න සහ නිවැරදි දත්ත සමුදායේ නම සඳහන් කරන්න.
    SHOW DATABASES;
    

2. ERROR 1044 (42000): Access denied for user

මෙම දෝෂය ඔබට දත්ත සමුදාය මකන්න අවසර නොමැති විට සිදු වේ.

විසඳුම

  • වත්මන් පරිශීලකයාට DROP හිමිකම් ඇතිදැයි පරීක්ෂා කරන්න
    SELECT user, host FROM mysql.db WHERE db = 'target_database_name';
    
  • අවශ්‍ය නම්, root ලෙස ලොග් වන්න සහ සුදුසු හිමිකම් ලබා දෙන්න.
    GRANT ALL PRIVILEGES ON target_database_name.* TO 'username'@'localhost';
    FLUSH PRIVILEGES;
    

ඉන්පසු DROP DATABASE භාවිතා කරමින් නැවත මකන්න උත්සාහ කරන්න.

3. ERROR 1010 (HY000): Error dropping database (can't rmdir './database', errno: 39)

මෙම දෝෂය MySQL දත්ත සමුදායේ ගොනු ඉවත් කළ නොහැකි වන විට සිදු වේ.

විසඳුම

  • දත්ත සමුදායේ ක්‍රියාකාරකම් පරීක්ෂා කරන්න සහ අවශ්‍ය නම් ඒවා නවතන්න
    SHOW PROCESSLIST;
    

ඉලක්ක දත්ත සමුදාය භාවිතා වෙමින් පවතින නම්, සම්බන්ධ ක්‍රියාකාරකම් නවතන්න.

  • සේවාදායකයේ සෘජුව මකන්න ඔබට MySQL හි දත්ත නාමාවලියට ප්‍රවේශ වී දත්ත සමුදායේ ෆෝල්ඩරය අතුරුම්‍යෙන් මකන්නද පුළුවන්.
    rm -rf /var/lib/mysql/target_database_name
    

ඉන්පසු MySQL නැවත ආරම්භ කරන්න.

systemctl restart mysql

සාරාංශය

  • දත්ත සමුදායේ නම විශේෂ අක්ෂර අඩංගු නම්, එය ආච්චරණ (“) භාවිතා කරමින් ආවරණය කරන්න.**
  • “දත්ත සමුදාය පවතින්නේ නැත” දෝෂ සඳහා, SHOW DATABASES; භාවිතා කරමින් තහවුරු කරන්න.
  • “අවසර ප්‍රතික්ෂේප කරන ලදී” දෝෂ සඳහා, හිමිකම් ලබා දී නැවත උත්සාහ කරන්න.
  • “මකන්න නොහැක” දෝෂ සඳහා, ක්‍රියාකාරකම් පරීක්ෂා කරන්න සහ අවශ්‍ය නම් ෆෝල්ඩරය අතුරුම්‍යෙන් මකන්න.

4. මකා දමා ඇති MySQL දත්ත සමුදායක් ප්‍රතිස්ථාපනය කරන්නේ කෙසේද

ඔබ දත්ත සමුදායක් මකා දැමූ පසු MySQL දත්ත සමුදායක් ප්‍රතිස්ථාපනය කළ හැකිද යන්න ඔබට පෙර බැකප් එකක් තිබුණුද යන්න මත රඳා පවතී. මෙම කොටස මකා දැමීමෙන් පසු දත්ත සමුදායක් ප්‍රතිස්ථාපනය කරන්නේ කෙසේදැයි පැහැදිලි කරයි.

මකා දැමීමෙන් පසු ප්‍රතිස්ථාපනය කළ හැකිද?

ඔබ MySQL DROP DATABASE ප්‍රකාශනය ධාවනය කරන විට, ඉලක්ක දත්ත සමුදාය සම්පූර්ණයෙන් ඉවත් වී MySQL පද්ධතියෙන් අතුරුදහන් වේ. ප්‍රතිස්ථාපන මෝඩන්තයන් පහත පරිදි ඇත:

SituationCan Restore?
You created a backup in advance with mysqldump✅ Yes
The server has automatic backups✅ Yes (ask the administrator)
No backup exists❌ No

නිගමනය: බැකප් එකක් නැති නම්, MySQL තනිවම දත්ත සමුදාය ප්‍රතිස්ථාපනය කළ නොහැක.

mysqldump භාවිතා කරමින් ප්‍රතිස්ථාපනය කරන්නේ කෙසේද

ඔබ mysqldump භාවිතා කරමින් පෙර බැකප් එකක් නිර්මාණය කළේ නම්, ඔබට බැකප් ගොනුව (.sql) භාවිතා කරමින් දත්ත සමුදාය ප්‍රතිස්ථාපනය කළ හැක.

1. බැකප් ගොනුව තහවුරු කරන්න

පළමුව, බැකප් එකක් පවතින බව තහවුරු කරන්න. සාමාන්‍යයෙන්, MySQL බැකප් ගොනුවලට .sql විස්තාරණය ඇත.

ls -l /backup/
-rw-r--r-- 1 root root  10M Feb 10 12:00 my_database_backup.sql

2. නව දත්ත සමුදායක් නිර්මාණය කරන්න

මකා දැමූ දත්ත සමුදාය එලෙසම ප්‍රතිස්ථාපනය කිරීම සඳහා, එයටම නමින් නව දත්ත සමුදායක් නිර්මාණය කරන්න.

CREATE DATABASE my_database;

3. බැකප් ගොනුව ප්‍රතිස්ථාපනය කරන්න

බැකප් ගොනුව නිර්මාණය කළ දත්ත සමුදායට යෙදීමෙන් දත්ත ප්‍රතිස්ථාපනය කරන්න.

mysql -u root -p my_database < /backup/my_database_backup.sql
  • -u root : මූල පරිශීලකයා ලෙස ලොග් වන්න
  • -p : මුරපදයක් සඳහා ඉල්ලීම
  • my_database : ප්‍රතිස්ථාපනය කිරීමට දත්ත සමුදායේ නම
  • /backup/my_database_backup.sql : බැකප් ගොනුවේ පාර

අගය වූවොත්, මකා දැමීමට පෙර දත්ත ප්‍රතිස්ථාපනය වේ.

ස්වයංක්‍රීය බැකප් වලින් ප්‍රතිස්ථාපනය (සර්වර් පරිපාලකයින් සඳහා)

කිහිපයක් හෝස්ටිං සේවා සහ වලාකුළු පරිසර (AWS RDS, Google Cloud SQL, MySQL Enterprise, ආදිය.) වේලාවෙන් වේලාවට ස්වයංක්‍රීය බැකප් ගනී. ඔබට මෛනුවලින් බැකප් නොකළත්, පහත සොයා බැලීමෙන් ප්‍රතිස්ථාපනය කළ හැකි විය හැක.

1. සර්වර් බැකප් ලැයිස්තුව පරීක්ෂා කරන්න

ලිනක්ස්හිදී (MySQL සර්වර් ගන්ධනය මත රඳා පවතී)

ls /var/backups/mysql/

AWS RDSහිදී

aws rds describe-db-snapshots --db-instance-identifier mydb

බැකප් තිබේ නම්, පරිපාලකයාගෙන් ඒවා ප්‍රතිස්ථාපනය කිරීම ඉල්ලන්න.

ප්‍රතිස්ථාපනය කළ නොහැකි අවස්ථා

පහත අවස්ථාවලදී, මකා දැමූ දත්ත සමුදාය ප්‍රතිස්ථාපනය කිරීම අපහසුය:

  • බැකප් එකක් නැතDROP DATABASE ක්‍රියාත්මක කළ පමණින්, දත්ත සම්පූර්ණයෙන් මකා දමනු ලැබේ, එබැවින් MySQL තනිවම එය ප්‍රතිස්ථාපනය කළ නොහැක.
  • InnoDB ලොග් ද ගිහින්binlog (බাইනරි ලොග්) භාවිතයෙන් ප්‍රතිස්ථාපනය කළ හැකි වුවත්, ලොග් ලියා පළ කර ඇත්නම්, දත්ත යළි ලබා ගත නොහැක.

සාරාංශය

  • ඔබට mysqldump බැකප් එකක් තිබේ නම්, මකා දැමීමෙන් පසු mysql < file.sql භාවිතයෙන් ප්‍රතිස්ථාපනය කළ හැක.
  • සර්වර්හි ස්වයංක්‍රීය බැකප් තිබේ නම්, පරිපාලකයා සම්බන්ධ කරගන්න.
  • බැකප් නැත්නම්, MySQL තනිවම ප්‍රතිස්ථාපනය කළ නොහැක (binlog විශ්ලේෂණය වැනි විශේෂ උපාය මාර්ග අවශ්‍ය විය හැක).

5. මකා දැමීමෙන් පසු ගැටලු විසඳීම

MySQLහි දත්ත සමුදායක් මකා දැමීමෙන් පසු, අනපේක්ෂිත දෝෂ හෝ ගැටලු මුහුණ දීමට සිදුවිය හැක. උදාහරණයක් ලෙස, මකා දැමූ දත්ත සමුදාය තවමත් පෙන්වයි, DROP DATABASE සම්පූර්ණ නොවේ, හෝ අවසර දෝෂ සිදුවේ. මෙම කොටස මකා දැමීමෙන් පසු සුලබ ගැටලු සහ ඒවා නිවැරදි කරන්නේ කෙසේදැයි පැහැදිලි කරයි.

මකා දැමීමෙන් පසු දත්ත සමුදාය තවමත් පෙන්වයි

DROP DATABASE ක්‍රියාත්මක කළ පසුව පවා, මකා දැමූ දත්ත සමුදාය SHOW DATABASES;හි තවමත් පෙන්විය හැක. මෙය කැෂිං හෝ භෞතික නාමාවලිය ඉවත් නොවීම නිසා සිදුවිය හැක.

විසඳුම

  1. MySQL නැවුම් කරන්න
    FLUSH PRIVILEGES;
    

මෙය MySQLහි කැෂ් කර ඇති ස的特ාව අනුමැතිය තොරතුරු නැවුම් කරයි.

  1. සර්වර් නාමාවලිය අතුරුදහන් කරන්න
  • ලිනක්ස්හිදී, මකා දැමීමෙන් පසු දත්ත සමුදාය බඩුව ඉතිරි විය හැක.
  • MySQL දත්ත නාමාවලිය (උදා: /var/lib/mysql/ ) පරීක්ෂා කර, ඉතිරි වූ බඩු මකන්න.
    rm -rf /var/lib/mysql/my_database
    

ඉන්පසු MySQL නැවත ආරම්භ කරන්න.

systemctl restart mysql

DROP DATABASE සම්පූර්ණ නොවන විට

DROP DATABASE සම්පූර්ණ නොවන්නේ නම්, කිහිපයක් හේතු සිදුවිය හැක.

1. දත්ත සමුදාය භාවිතා වේ

දෝෂ උදාහරණය

ERROR 1010 (HY000): Error dropping database (can't rmdir './database', errno: 39)

විසඳුම

  • පළමුව, දත්ත සමුදාය භාවිතා කරන ක්‍රියාවලිය කුමක්දැයි පරීක්ෂා කරන්න.
    SHOW PROCESSLIST;
    
  • සම්බන්ධිත ක්‍රියාවලි නවතා, DROP DATABASE නැවත උත්සාහ කරන්න.

2. විදේශ යතුර සීමාවන් නිසා මකාගත නොහැක

දෝෂ උදාහරණය

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

විසඳුම

  • තාවකාලිකව විදේශ යතුර පරීක්ෂාවන් අක්‍රිය කිරීමෙන් පසු මකන්න උත්සාහ කරන්න.
    SET FOREIGN_KEY_CHECKS = 0;
    DROP DATABASE my_database;
    SET FOREIGN_KEY_CHECKS = 1;
    

අවසර දෝෂ නිවැරදි කරන්නේ කෙසේද

MySQL සැකසුම් අනුව, DROP DATABASE ක්‍රියාත්මක කිරීමේ අනුමැතිය සීමා කළ හැක.

1. ප්‍රමාණවත් අනුමැති නොමැතිකම නිසා දෝෂය

දෝෂ උදාහරණය

ERROR 1044 (42000): Access denied for user 'user'@'localhost' to database 'my_database'

විසඳුම

  • root ලෙස ලොග් වී, සුදුසු අනුමැති ලබා දෙන්න.
    GRANT ALL PRIVILEGES ON my_database.* TO 'user'@'localhost';
    FLUSH PRIVILEGES;
    

සුලබ දෝෂ කේත සහ නිවැරදි කිරීම්

Here is a summary of common errors after deletion and how to fix them.

Error CodeDescriptionSolution
ERROR 1008The database does not existCheck the correct name with SHOW DATABASES;
ERROR 1010Failed to remove the database folderStop processes using it via SHOW PROCESSLIST;
ERROR 1044The user lacks DROP privilegesGRANT ALL PRIVILEGES ON database.* TO 'user'@'localhost';
ERROR 1217Cannot delete due to foreign key constraintsRun SET FOREIGN_KEY_CHECKS = 0;, then delete

සාරාංශය

  • මකා දමා ඇති දත්ත සමුදායක් තවමත් පෙන්වා දෙන්නේ නම්, කෙෑෂ හිස් කිරීම (FLUSH PRIVILEGES) සහ අතින් ෆෝල්ඩර් මකා දැමීම උත්සාහ කරන්න.
  • DROP DATABASE සම්පූර්ණ නොවන්නේ නම්, දත්ත සමුදාය භාවිතා වෙමින් තිබේද යන්න හෝ විදේශ යතුර සීමාවන්ගෙන් බලපෑම් ලැබේද යන්න පරීක්ෂා කරන්න.
  • අවසර දෝෂයක් සිදුවන්නේ නම්, මූල (root) ලෙස සුදුසු අවසර ලබා දෙන්න .

6. FAQ (පොදු ප්‍රශ්න සහ පිළිතුරු)

MySQL දත්ත සමුදායක් මකා දැමීමේදී, ආරම්භකයින්ගෙන් උසස් මට්ටමේ පරිශීලකයින් දක්වා බොහෝ දෙනෙකුට ප්‍රශ්න ඇති වේ. මෙම කොටසේ සුලබ ප්‍රශ්න සහ පිළිතුරු එකතු කර ඇත.

1. DROP DATABASE සහ DELETE හෝ TRUNCATE අතර වෙනස කුමක්ද?

MySQL හි දත්ත මකා දැමීමට බහුවිධ ආකාර තිබේ. වෙනස්කම් තේරුම් ගැනීමෙන් නිවැරදි ප්‍රවේශය තෝරා ගැනීමට උපකාරී වේ.

CommandPurposeImpact
DROP DATABASEDelete the entire databaseAll tables and data are removed; cannot be restored
DELETE FROM table_nameDelete data in a tableThe table remains; data is deleted (rollback may be possible)
TRUNCATE TABLE table_nameDelete all data in a tableFaster than DELETE, but rollback is not possible

ප්‍රධාන කරුණු

  • සම්පූර්ණ දත්ත සමුදාය මකා දැමීමට → DROP DATABASE
  • නිශ්චිත වගුවක දත්ත පමණක් මකා දැමීමට → DELETE
  • වගුවේ දත්ත වේගයෙන් ඉවත් කිරීම සහ ID රිසෙට් කිරීමට → TRUNCATE

2. මකා දමා ඇති දත්ත සමුදායක් ප්‍රතිස්ථාපනය කිරීමට ක්‍රමයක් තිබේද?

බැකප් එකක් තිබේ නම්

  • mysqldump භාවිතයෙන් නිර්මාණය කර ඇති බැකප් එකක් තිබේ නම්, එය ප්‍රතිස්ථාපනය කළ හැක.
  • mysql < backup.sql භාවිතයෙන් දත්ත ප්‍රතිස්ථාපනය කළ හැක.

බැකප් එකක් නැති නම්

  • MySQL භාවිතයෙන් පමණක් එය ප්‍රතිස්ථාපනය කළ නොහැක.
  • බයිනරි ලොග් (binlog) සක්‍රිය කර ඇත්නම්, අර්ධ සම්පූර්ණ ප්‍රතිස්ථාපනයක් හැකි විය හැකි නමුත් එය කාලය ගත වේ.
  • වලාකුළු පරිසරවල (AWS RDS, Google Cloud SQL, ආදිය), සර්වර් පරිපාලකගෙන් බැකප් පරීක්ෂා කිරීම ඉල්ලන්න.

3. මකා දැමීමෙන් පසු දත්ත සමුදාය ලැයිස්තුවේ තවමත් පෙන්වා දෙන්නේ ඇයි?

හේතු පහත පරිදි විය හැක:

  • කෙෑෂ නැවුම් කර නැත
  • කෙෑෂ නැවුම් කිරීමට FLUSH PRIVILEGES; ධාවනය කරන්න.
  • දත්ත සමුදාය ෆෝල්ඩර් ඉවත් කර නැත
  • MySQL හි දත්ත නාමාවලිය ( /var/lib/mysql/ ) පරීක්ෂා කර අතින් එය මකන්න.
  • ක්‍රියාකාරී ක්‍රියාවලියක් තවමත් භාවිතා කරමින්
  • SHOW PROCESSLIST; භාවිතයෙන් ක්‍රියාකාරී ක්‍රියාවලි පරීක්ෂා කර අවශ්‍ය නම් ඒවා නවත්වන්න.

4. නිශ්චිත පරිශීලකයෙකුට පමණක් දත්ත සමුදාය මකා දැමීමට ඉඩ දීමට කෙසේද?

අනපේක්ෂිත මකා දැමීම් වැළැක්වීමට, නිශ්චිත පරිශීලකයින් සඳහා DROP DATABASE අවසර ලබා දීමට හෝ සීමා කිරීමට හැක.

නිශ්චිත පරිශීලකයෙකුට මකා දැමීමේ අවසර ලබා දීම

GRANT DROP ON my_database.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

නිශ්චිත පරිශීලකයෙකුගෙන් මකා දැමීමේ අවසර ආපසු ගැනීම

REVOKE DROP ON my_database.* FROM 'user'@'localhost';
FLUSH PRIVILEGES;

මෙම සැකසුම් දත්ත සමුදාය මකා දැමීම පරිපාලකයින්ට පමණක් සීමා කරයි.

5. DROP DATABASE ආරක්ෂිතව ධාවනය කිරීමට මම ගත යුතු පූර්ව සැලසුම් මොනවාද?

දත්ත සමුදායක් මකා දැමීමට පෙර, පහත තහවුරු කරන්න:

දත්ත සමුදායේ නම නිවැරදිද?
බැකප් එකක් නිර්මාණය කර ඇත්ද? (නිෂ්පාදන පද්ධති සඳහා අවශ්‍යයි)
බලපෑම් ලැබෙන යෙදුම් හෝ පරිශීලකයින් තිබේද?
මකා දැමීම අවසර ලබා දී ඇති පරිශීලකයින්ට පමණක් සීමා කර ඇත්ද?

ආරක්ෂාව සඳහා, මකා දැමීමට පෙර SHOW DATABASES; ධාවනය කර නිවැරදි දත්ත සමුදායේ නම තහවුරු කරන්න.

6. මම අනපේක්ෂිතව DROP DATABASE ධාවනය කළා! මම මොනවා කළ යුතුද?

  1. MySQL සර්වර් වහාම නවත්වන්න
    systemctl stop mysql
    

දත්ත ලියා පළ කිරීම වැළැක්වීමට, සර්වර් වහාම නවත්වන්න.

  1. බැකප් සහ බයිනරි ලොග් සොයන්න
  • mysqldump බැකප් එකක් තිබේ නම් → වහාම ප්‍රතිස්ථාපනය කරන්න.
  • binlog සක්‍රිය කර ඇත්නම් → mysqlbinlog භාවිතයෙන් ප්‍රතිස්ථාපනය උත්සාහ කරන්න.
  1. වලාකුළු පරිසරයක නම්, පරිපාලකයා සම්බන්ධ කරගන්න
  • AWS RDS හෝ Google Cloud SQL හි, ස්නැප්ෂොට් වලින් ප්‍රතිස්ථාපනය හැකි විය හැක.

සාරාංශය

  • DROP DATABASE ප්‍රතිවර්තනය කළ නොහැක → මකා දැමීමට පෙර සැමවිටම බැකප් කරන්න.
  • එය DELETE හෝ TRUNCATE සමඟ ව්‍යාජ නොකරන්න → දත්ත පමණක් ඉවත් කිරීමට අවශ්‍ය නම් DROP අවශ්‍ය නොවේ.
  • මකා දැමීමේ අවසර සීමා කළ හැකGRANT සහ REVOKE භාවිතයෙන් කළමනාකරණය කරන්න.
  • අනපේක්ෂිතව මකා දැම්මහොත්, සර්වර් වහාම නවත්වා බැකප්/ලොග් පරීක්ෂා කරන්න.

7. නිගමනය

This article explained how to delete a MySQL database, covering basic steps, troubleshooting, and restore methods after deletion. Finally, let’s review the key points and best practices for managing databases safely.

MySQL දත්ත ගබඩාව මකා දැමීමේදී මූලික කරුණු

DROP DATABASE ක්‍රියාත්මක කිරීම සම්පූර්ණ දත්ත ගබඩාව මකා දමයි
ඔබ දත්ත ගබඩාවක් මකා දැමුවහොත්, බැකප් එකක් නොමැතිව එය ප්‍රතිස්ථාපනය කළ නොහැක
මකා දැමීමට පෙර, SHOW DATABASES; ක්‍රියාත්මක කර ඉලක්ක දත්ත ගබඩාව තහවුරු කරන්න
මකා දැමීමට පෙර mysqldump භාවිතයෙන් බැකප් සෑදීමේ පුරුද්දක් ගොඩනඟන්න
මකා දැමීම අසාර්ථක වූ විට, අවසර, ක්‍රියාවලි, සහ ගොනු තත්ත්වය පරීක්ෂා කරන්න
ඔබ වැරදිව මකා දැමුවහොත්, සේවාදායකය ඉක්මනින් නවත්වන්න සහ ප්‍රතිස්ථාපන විකල්පයන් ඇගයන්න

ආරක්ෂිත දත්ත ගබඩා කළමනාකරණය සඳහා හොඳ පුරුදු

MySQL දත්ත ගබඩාවන් ආරක්ෂිතව කළමනාකරණය කිරීම සඳහා, පහත හොඳ පුරුදු ක්‍රියාත්මක කරන්න.

1. මකා දැමීමට පෙර බැකප් එකක් සුරක්ෂිත කරගන්න

දත්ත ගබඩාවක් මකා දැමීම පසුබැසිය නොහැක. මකා දැමීමට පෙර mysqldump භාවිතයෙන් බැකප් එකක් සෑදීම ඔබට අවශ්‍ය විට ප්‍රතිස්ථාපනය කිරීමට හැකියාව ලබා දේ.

mysqldump -u root -p my_database > /backup/my_database_backup.sql

2. මකා දැමීමේ අවසර සීමා කරන්න

DROP DATABASE අහඹු ලෙස ක්‍රියාත්මක වීම වැලැක්වීමට, පරිපාලක නොවන පරිශීලකයන්ට DROP අවසර ලබා නොදීම සුදුසුය.

REVOKE DROP ON my_database.* FROM 'user'@'localhost';
FLUSH PRIVILEGES;

3. අහඹු මකා දැමීම වැළැක්වීමට වැඩපිළිවෙළක් ස්ථාපිත කරන්න

  • මකා දැමීමට පෙර, කණ්ඩායමේ අය සමඟ මකා දැමීම ආරක්ෂිතද යන්න තහවුරු කරන්න.
  • SHOW DATABASES; ක්‍රියාත්මක කර දත්ත ගබඩා නාමය දෙවරක් පරීක්ෂා කරන්න.
  • FLUSH PRIVILEGES; ක්‍රියාත්මක කර කැෂ් කරන ලද අවසර දත්ත මකන්න.

4. මකා දැමීමෙන් පසු ප්‍රතිස්ථාපන විකල්ප සූදානම් කරන්න

  • මීදුම් පරිසරවල, ස්නැප්ෂොට් සහ ස්වයංක්‍රීය බැකප් සැකසුම් තහවුරු කරන්න.
  • වෙනස්කම් නිරීක්ෂණය සඳහා බයිනරි ලොග් සක්‍රිය කරන්න.
    SHOW BINLOG EVENTS;
    
  • මකා දැමීම සිදු වූ විට, ලියුම් පුරවා ගැනීම වැළැක්වීමට සේවාදායකය වහා නවත්වන්න.
    systemctl stop mysql
    

අවසාන සටහන

MySQL DROP DATABASE විධානය ශක්තිමත් මෙවලමක් වන නමුත්, එය ඉතාමත් අවධානයෙන් භාවිත කළ යුතුය. විශේෂයෙන් නිෂ්පාදන පරිසරවල, ප්‍රතිඵලය පෙරදැරිව අවබෝධ කර ගැනීම සහ සුදුසු ආරක්ෂක පියවර ගත කිරීම අත්‍යවශ්‍ය වේ.

මෙම ලිපියේ මාර්ගෝපදේශ භාවිතා කර දත්ත ගබඩාවන් ආරක්ෂිතව කළමනාකරණය කරන්න.