اطمینان از عملکرد بینقص برنامههای شما تا حد زیادی به حفظ یکپارچگی پایگاههای داده MySQL شما بستگی دارد.
با این حال، چندین عامل میتواند منجر به خرابی پایگاه داده شود، از جمله اشتباهات فایل پیکربندی، نقصهای سختافزاری و ایرادات نرمافزاری. هنگام مواجهه با جداول یا پایگاههای داده MySQL خراب شده، دانستن نحوه تعمیر مؤثر آنها برای جلوگیری از از دست رفتن دادهها و بازگرداندن پایگاه داده به وضعیت بهینه آن ضروری است.
در این آموزش، ما در مورد نحوه تعمیر پایگاههای داده و جداول MySQL بحث خواهیم کرد. ما با مقدمهای بر خطاهای MySQL شروع خواهیم کرد و سپس به جزئیات بررسی و رفع این خطاها خواهیم پرداخت.
خطاهای MySQL چیست؟
خطاهای MySQL پیامهایی هستند که توسط سرور پایگاه داده MySQL تولید میشوند و نشان میدهند که در طول یک عملیات مشکلی پیش آمده است. این خطاها میتوانند اطلاعات ارزشمندی برای عیبیابی و حل مشکلات پایگاه داده شما ارائه دهند.
برخی از خطاهای رایج MySQL عبارتند از:
خطاهای دسترسی ممنوع
این خطاها نشان میدهند که کاربران مجوزهای لازم برای انجام عملیات درخواستی روی پایگاه داده را ندارند. این میتواند به دلیل اعتبارنامههای نادرست، امتیازات ناکافی یا مشکلات اتصال باشد.
خطاهای نحوی
این خطاها زمانی رخ میدهند که سرور MySQL با مشکلی در ساختار یا نحو پرسوجوی SQL مواجه میشود. این ممکن است شامل اشتباهات تایپی، کلمات کلیدی نادرست یا پرانتزهای از قلم افتاده باشد.
خطاهای اتصال
این خطاها مشکلات در برقراری یا حفظ اتصال بین برنامه و سرور MySQL را نشان میدهند. این میتواند به دلیل مشکلات شبکه، خاموش بودن سرور یا محدودیتهای فایروال باشد.
مشکلات جدول یا داده
این خطاها زمانی به وجود میآیند که مشکلاتی در ساختار یا محتوای جداول پایگاه داده وجود داشته باشد. این شامل جداولی است که به ظرفیت ذخیرهسازی خود رسیدهاند، عدم تطابق نوع داده یا نقض محدودیتهای کلید خارجی.
حفظ یک محیط پایگاه داده سالم نیازمند دانستن نحوه تعمیر و اصلاح جداول خراب شده است، چه با یک جدول MySQL واحد کار کنید چه با کل سرور MySQL. برای دستیابی به این هدف، باید بدانید چگونه جداول MySQL را برای خطاها بررسی کنید.
بخش بعدی در مورد نحوه بررسی جداول MySQL برای خطاها بحث میکند. اما قبل از آن، بیایید نگاهی سریع به پیشنیازها بیندازیم.
پیشنیازهای بررسی و تعمیر جداول و پایگاههای داده MySQL
قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:
نسخه ۸.۰ یا بالاتر MySQL روی سرور شما نصب شده است.
به یک پایگاه داده یا جدول پایگاه داده خراب شده دسترسی دارید.
یک حساب کاربری با امتیاز sudo یا مدیریتی.
یک حساب کاربری با امتیازات root در سرور MySQL.
نحوه بررسی جداول MySQL برای خطاها
عیبیابی مشکلات MySQL با اجرای فرآیندهای تشخیصی شروع میشود. دو روش اصلی برای بررسی یک جدول MySQL برای خطاها وجود دارد:
اجرای یک پرسوجوی MySQL CHECK TABLE.
استفاده از برنامه ترمینال mysqlcheck.
۱: اجرای پرسوجوی MySQL CHECK TABLE
دستور CHECK TABLE ابزاری قدرتمند برای بررسی جداول MySQL برای ناسازگاریها و خرابیهای احتمالی است. این به کاربران اجازه میدهد تا مشکلات را در حالی که سرویس MySQL در حال اجراست، بدون اختلال در عملیات پایگاه داده تشخیص دهند.
نحو پایه دستور CHECK TABLE به شرح زیر است:
mysql> CHECK TABLE <نام جدول> [, نام جدول, نام جدول] [گزینه] [گزینه];
شما میتوانید یک یا چند جدول را همزمان با جدا کردن نامهای آنها با کاما بررسی کنید. به عنوان مثال، دستور زیر را بدون مشخص کردن هیچ گزینهای برای بررسی خطاهای یک جدول اجرا کنید:
mysql> CHECK TABLE نام_جدول_شما;
این دستور جدول مشخص شده را بررسی میکند و گزارش مفصلی از نتایج ارائه میدهد.
دستور CHECK TABLE در MySQL از چندین گزینه برای کنترل عمق و انواع بررسیهای انجام شده روی جداول پشتیبانی میکند. این گزینهها انعطافپذیری در میزان دقت بازرسی جدول و جنبههایی از جدول که باید بررسی شوند را فراهم میکنند.
در اینجا برخی از بررسیهای محبوب که میتوانید به دستور CHECK TABLE اضافه کنید، آمده است:
FOR UPGRADE
ناسازگاریهای نسخه را شناسایی میکند.
هنگام آمادهسازی برای ارتقاء MySQL به نسخه جدیدتر، این گزینه به شناسایی جداولی که ممکن است با نسخه جدید سازگار نباشند کمک میکند.
به عنوان مثال، جدولی که حاوی سالهای دو رقمی است برای ارتقاء علامتگذاری میشود زیرا MySQL 8.0 آنها را پردازش نمیکند.
QUICK
از بررسی پیوندهای ردیف جلوگیری میکند.
این از وقفهها به دلیل پنجرههای زمانی طولانیتر بررسیهای عمیق جلوگیری میکند. برای جداول بزرگ که بررسی کامل ممکن است زمانبر باشد و منجر به وقفه سرور شود، مفید است.
FAST
جداولی را که به درستی بسته نشدهاند بررسی میکند.
هنگامی که یک جدول به دلیل خرابی سرور یا سایر مشکلات به درستی بسته نشده است، این گزینه به سرعت جدول را برای مشکلات بررسی میکند بدون اینکه یک بررسی کامل انجام دهد.
CHANGED
فقط جداولی را که از آخرین بررسی تغییر کردهاند یا به درستی بسته نشدهاند بررسی میکند.
برای بررسیهای دورهای که کاربر فقط میخواهد جداولی را که از آخرین بار بررسی تغییرات یا مشکلاتی داشتهاند بررسی کند، کارآمد است و در زمان و منابع صرفهجویی میکند.
MEDIUM (پیشفرض برای MyISAM، نماها)
اعتبار پیوندهای حذف شده را تأیید میکند و یک چکسام برای ردیفها انجام میدهد.
این سطح پیشفرض بررسی است. یک بررسی دقیقتر نسبت به QUICK یا FAST انجام میدهد و یکپارچگی ساختار جدول و دادهها را تضمین میکند.
EXTENDED
یک بررسی سازگاری کامل انجام میدهد.
هنگامی که نیاز به انجام جامعترین بررسی ممکن دارید، این گزینه تمام جنبههای جدول را تأیید میکند و اطمینان حاصل میکند که هیچ مشکل پنهانی وجود ندارد. زمانبرتر است اما بالاترین سطح اطمینان را در مورد یکپارچگی جدول فراهم میکند.
ترکیب چندین گزینه با CHECK TABLE فرآیند تأیید را با نیازهای کاربر تطبیق میدهد.
به عنوان مثال، برای انجام یک بررسی سریع برای دیدن اینکه آیا یک جدول به درستی بسته شده است، اجرا کنید:
mysql> CHECK TABLE <نام جدول> FAST QUICK;
این دستور تعادلی بین سرعت و تشخیص خطا ایجاد میکند.
با درک گزینههای مختلف و استفاده مؤثر از CHECK TABLE، کاربران میتوانند به طور فعال مشکلات بالقوه جداول MySQL را شناسایی کرده و اقدامات مناسب را برای حفظ یکپارچگی دادهها و سلامت پایگاه داده انجام دهند.
۲: استفاده از mysqlcheck
mysqlcheck ابزار ارزشمند دیگری برای بررسی خطاهای جداول MySQL است.
این یک برنامه خط فرمان چند منظوره است که جایگزین قدرتمندی برای پرسوجوی CHECK TABLE برای تأیید یکپارچگی جدول ارائه میدهد. این ابزار در ترمینال در حالی که سرویس MySQL فعال است اجرا میشود.
نکته: برای استفاده مؤثر از mysqlcheck، به عنوان کاربر ریشه MySQL یا کاربری با مجوزهای مناسب وارد شوید.
برای بررسی جداول با استفاده از mysqlcheck، ترمینال را باز کنید و به دایرکتوری که پایگاههای داده در آن ذخیره شدهاند بروید.
sudo su
cd /مسیر/به/پایگاههایداده
کل پایگاه داده را با دستور زیر بررسی کنید:
mysqlcheck -u root -p --databases نام_پایگاه_داده
<نام_پایگاه_داده> را با نام واقعی پایگاه دادهای که میخواهید بررسی کنید جایگزین کنید.
در اینجا،
-u: نام کاربری را مشخص میکند (در این مورد root).
-p: برای وارد کردن رمز عبور درخواست میکند.
–databases: نشان میدهد که کاربر میخواهد تمام جداول درون پایگاه داده نام برده شده را بررسی کند.
به طور جایگزین، از دستور زیر برای بررسی یک جدول خاص درون پایگاه داده استفاده کنید:
mysqlcheck <نام پایگاه داده> <نام جدول>
<نام_پایگاه_داده> را با پایگاه دادهای که حاوی جدول است و <نام_جدول> را با جدول خاصی که نیاز به تأیید دارد جایگزین کنید.
mysqlcheck همچنین از گزینههای مختلفی برای بهبود بررسی جداول پشتیبانی میکند. برخی از آنها عبارتند از:
–repair: این گزینه سعی میکند هر خطایی را که در طول بررسی مشاهده شده تعمیر کند. از آن با احتیاط استفاده کنید، زیرا تعمیرات ممکن است در برخی موارد منجر به از دست دادن دادهها شود.
–optimize: این گزینه ساختار جدول را برای عملکرد بهتر بهینه میکند.
–all-databases: این گزینه تمام پایگاههای داده روی سرور را بررسی میکند.
–all-tables: این گزینه تمام جداول درون پایگاه داده(های) مشخص شده را بررسی میکند.
–force: این گزینه از برخی بررسیها که ممکن است از تکمیل عملیات جلوگیری کنند عبور میکند، اما از آن با احتیاط استفاده کنید زیرا ممکن است مشکلات زیربنایی را پنهان کند.
با ترکیب mysqlcheck با این گزینهها، کاربران میتوانند دستورات سفارشی برای برآوردن نیازهای خاص ایجاد کنند، مانند بررسی و تعمیر تمام جداول در یک پایگاه داده یا بهینهسازی جداول خاص برای بهبود عملکرد.
حالا که درکی از نحوه بررسی جداول برای خطاها دارید، بیایید ببینیم چگونه پایگاه داده MySQL را تعمیر کنیم.
نحوه تعمیر پایگاه داده MySQL
خوشبختانه، میتوانید چندین روش برای تعمیر یک پایگاه داده MySQL انتخاب کنید.
با این حال، مهم است توجه داشته باشید که این روشها راهحلهای سریع تضمین شده نیستند و ممکن است منجر به از دست دادن دادهها شوند. اگر جداول پایگاه داده شما مکرراً خراب میشوند، شناسایی و رفع علل زیربنایی بسیار مهم است.
قبل از ایجاد هرگونه تغییر یا شروع تعمیرات، از دستور cp برای ایجاد یک نسخه پشتیبان از دایرکتوری استفاده کنید تا از هرگونه از دست دادن احتمالی دادهها جلوگیری شود.
cp -r /var/lib/mysql /var/lib/mysql_backup
به طور جایگزین، قبل از تلاش برای هر راهحل تعمیر، از پایگاه داده خود نسخه پشتیبان تهیه کنید.
میتوانید راهنمای ما را در مورد نحوه پشتیبانگیری و بازیابی یک پایگاه داده MySQL دنبال کنید تا اطمینان حاصل کنید که یک نسخه برگشت دارید.
حالا که جداول خطادار را پیدا کردهاید، میتوانید از یکی از این روشها برای رفع خطاهای MySQL استفاده کنید.
روش #۱: استفاده از پرسوجوی REPAIR TABLE (سریعترین، مخصوص MyISAM)
این یکی از سریعترین راهها برای حل مشکلات است.
با شناسایی پایگاه داده و جداول مشکلدار شروع کنید و پرسوجوی REPAIR TABLE را اجرا کنید.
mysql> REPAIR TABLE نام_جدول_شما;
نکته: اگر سرور در طول فرآیند تعمیر خاموش شود، بسیار مهم است که REPAIR TABLE را فوراً قبل از انجام هر عملیات دیگری روی جدول مجدداً اجرا کنید. معمولاً تعمیر یک جدول MyISAM با استفاده از این روش در شرایط عادی منجر به از دست دادن دادهها نمیشود.
۲: استفاده از mysqlcheck
دستور mysqlcheck روش جایگزینی برای تعمیر جداول پایگاه داده مستقیماً از ترمینال ارائه میدهد.
به عنوان کاربر ریشه به دایرکتوری پایگاه داده MySQL بروید:
cd /var/lib/mysql
از گزینه -r با mysqlcheck برای تعمیر جداول پایگاه داده استفاده کنید.
mysqlcheck -r نام_پایگاه_داده نام_جدول
این دستور یک جایگزین ترمینال برای REPAIR TABLE ارائه میدهد و به کاربران اجازه میدهد جداول پایگاه داده را مستقیماً از خط فرمان تعمیر کنند.
۳: استفاده از دستور ALTER TABLE
اگر موتورهای ذخیرهسازی اصلی و مورد نظر یکسان باشند، از ALTER TABLE برای بازسازی جدول استفاده کنید.
برای یافتن موتور ذخیرهسازی که جدول شما استفاده میکند، پرسوجوی زیر را اجرا کنید:
mysql> SHOW CREATE TABLE <نام جدول>;
حالا که میدانید جدول شما از کدام موتور ذخیرهسازی استفاده میکند، ALTER TABLE را برای رفع خطا اجرا کنید.
سپس، دستور زیر را برای رفع یک جدول InnoDB اجرا کنید:
mysql> ALTER TABLE نام_جدول ENGINE=InnoDB;
به طور مشابه، از دستور زیر برای رفع خطا در جدول MyISAM استفاده کنید:
mysql> ALTER TABLE <نام جدول> ENGINE = MyISAM;
نتیجهگیری
تعمیر یک پایگاه داده MySQL مهارتی ضروری برای حفظ سلامت و عملکرد برنامههای شماست. چه با جداول پایگاه داده خراب، مشکلات ساختار جدول، یا خرابی کلی جدول سر و کار داشته باشید، درک روشهای مختلف برای تعمیر یک پایگاه داده خراب بسیار مهم است.
اجرای دستورات مناسب در خط فرمان و بهرهگیری از قابلیتهای موتور ذخیرهسازی پیشفرض میتواند به شما در مدیریت و تعمیر مؤثر پایگاههای دادهتان کمک کند.
با پیروی از مراحل ذکر شده در این راهنما، میتوانید با اطمینان دستورات لازم برای تعمیر پایگاه داده خود را اجرا کنید، از فایلهای دامپ برای پشتیبانگیری و بازیابی استفاده کنید و مشکلات مربوط به موتورهای مختلف پایگاه داده را برطرف نمایید.