
MySQL یکی از محبوب ترین RDBMS های منبع باز (سیستم های مدیریت پایگاه داده رابطه ای) است. این بخشی جدایی ناپذیر از پشته LAMP است که به سرعت در حال رشد است و محبوبیت چشمگیری در بین توسعه دهندگان و مدیران سیستم به دست آورده است. SQL در مقایسه با پایگاههای داده غیررابطهای، عملکردهای بسیار خوبی را برای مرتبسازی، ذخیره و مدیریت کارآمد دادهها ارائه میکند. ویژگیهای متمایز چیدمان جدول و قابلیتهای برجسته پایگاه داده SQL، آن را به انتخاب ارجح در تمام سطوح سازمان، چه بزرگ و چه کوچک تبدیل میکند.
جداول MySQL در موارد نادری ممکن است خراب شوند که نشان می دهد چنین خطایی رخ داده است و داده های ذخیره شده در آنها قابل خواندن نیستند. هنگامی که سعی می کنید داده ها را از یک جدول خراب بخوانید، سرور از کار می افتد و یک خطا یا لیستی از خطاها را نمایش می دهد.
دلایل احتمالی در پس فساد جدول MySQL
در زیر برخی از معمول ترین دلایل خراب شدن جداول آورده شده است:
- سرویس MySQL پس از راه اندازی مجدد از کار می افتد.
- به دلیل قطع برق، دستگاه به طور غیرمنتظره ای خاموش می شود.
- حافظه بد یا خرابی سخت افزار.
- خطاهای نرم افزاری در سیستم عامل یا کد SQL.
- MySQL هنگام نوشتن خاموش می شود.
- سیستم می چرخد خاموش در حین به روز رسانی SQL
قبل از تعمیر جدولی که گمان میکنید خراب است، یک نسخه پشتیبان از فهرست اطلاعات خود ایجاد کنید. این به کاهش احتمال از دست رفتن اطلاعات کمک می کند. در این راهنمای سریع، ما شما را از طریق مراحل عیب یابی برای رفع جداول MySQL خراب راهنمایی می کنیم.
پیش نیازها
برای دنبال کردن این آموزش به موارد زیر نیاز دارید:
مرحله 1: سرویس MySQL و پشتیبان گیری از داده ها را متوقف کنید
در ابتدا، استفاده از سرویس MySQL را متوقف کنید systemctl
دستور:
sudo systemctl stop mysql
سودو systemctl خودت را متوقف کن mysql |
پس از توقف سرویس SQL، گام بعدی ایجاد نسخههای پشتیبان از تمام فایلهای موجود در یک فهرست جدید است. از دایرکتوری داده پیش فرض اوبونتو استفاده کنید /var/lib/mysql/
برای کپی کردن تمام داده های سیستم:
cp -r /var/lib/mysql /var/lib/mysql_bkp
cp –r /var/lib/mysql /var/lib/mysql_bkp |
مرحله 2: خطا را شناسایی کنید
سپس بررسی خود را آغاز کرده و جدول آسیب دیده را شناسایی می کنیم. اگر جدول از موتور ذخیره سازی MyISAM استفاده می کند، استفاده کنید CHECK TABLE
بیانیه و بررسی وضعیت جدول:
mysql> TABLE جدول_نام را بررسی کنید.
mysql> بررسی جدول جدول_نام; |
پیامی را به عنوان خروجی مشاهده خواهید کرد که جدول یا جداول آسیب دیده را تایید می کند.
مرحله 3: میز آسیب دیده را تعمیر کنید
اگر خطایی در آن وجود دارد MyISAM جدول و شما آن را شناسایی کرده اید، از آن استفاده کنید REPAIR TABLE
بیان اشکال زدایی:
mysql> REPAIR TABLE table_name;
mysql> تعمیر جدول جدول_نام; |
اگر رفع موفقیت آمیز بود، باید پیام زیر را بدون خطایی مشاهده کنید:
خروجی: +———————————————+ ———-+ | جدول | عملیات | نوع_پیام | پیام_متن | +————————————————- ——–+ | database_name.table_name | تعمیر | شرایط | باشه | +————————————————- ——–+
خارج شوید: +————————————————- ——–+ | جدول | Op | پیام_نوع | پیام_متن | +————————————————- ——–+ | نام پایگاه داده.جدول_نام | تعمیر | وضعیت | باشه | +————————————————- ——–+ |
با این حال، اگر متوجه شدید که خطا دوباره رخ می دهد، سند رسمی MySQL نسخه 8.0 را برای بازیابی یا تعمیر جداول دنبال کنید.
برخلاف موتور ذخیره سازی MyISAM، فرآیند InnoDB مربوط به تعمیر جداول در موتور ذخیره سازی InnoDB متفاوت است. InnoDB موتور ذخیره سازی پیش فرض در MySQL 8.0 است. این شامل عملیات خودکار برای بررسی و رفع فساد است. را MySQL InnoDB صفحات شکسته را با انجام جمعبندی چک در هر صفحه که میخواند، بررسی میکند. اگر عدم تطابق تشخیص داده شود، به طور خودکار سرور MySQL را متوقف می کند.
نکته اصلی این است که به ندرت نیاز به تعمیر جداول InnoDB وجود دارد. InnoDB دارای مکانیزم بازیابی خرابی است که می تواند اکثر مشکلات را با راه اندازی مجدد حل کند.
سعی کنید سرویس MySQL را مجددا راه اندازی کنید تا ببینید آیا می توانید به سرور دسترسی داشته باشید:
sudo systemctl mysql را ریستارت کنید
سودو systemctl راه اندازی مجدد mysql |
اگر حتی پس از راه اندازی مجدد نمی توانید یک جدول InnoDB خراب را بازیابی کنید، روش “Dump and Reload” پیشنهاد شده در مستندات MySQL را امتحان کنید. این روش شامل بازگرداندن دسترسی به جدول آسیب دیده با استفاده از mysqldump
سودمندی یک پوشه باید برای ذخیره و ذخیره بک آپ منطقی جدول ایجاد شود. پس از تصحیح خطا، جدول را مجدداً در پایگاه داده بارگذاری می کند.
مرحله 4: از گزینه innodb_force_recovery استفاده کنید
اگر سرور خاموش یا در دسترس نیست، استفاده کنید force_recovery
گزینه در InnoDB. واژگونی بر گزینه force_recovery یک راه عالی برای بازیابی پایگاه داده MySQL است. با تغییر می توانید این گزینه را فعال کنید mysqld.cnf
فایل در nano
ویرایشگر متن:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
سودو نانو /و غیره/mysql/mysql.conf.ه/mysqld.cnf |
خط زیر را در زیر قرار دهید [mysqld]
بخش:
پس از راه اندازی مجدد سرویس MySQL فایل را ذخیره و ببندید.
مرحله 5: یک فایل mysqldump ایجاد کنید
اگر به جدول خراب دسترسی دارید، استفاده کنید mysqldump
گزینه ای برای قرار دادن همه dump ها در فایل جدید. فایل جدید را با توجه به اولویت خود نامگذاری کنید و فراموش نکنید که آن را اضافه کنید .sql
تمدید در پایان در اینجا ما فایل را به عنوان نام گذاری می کنیم demo.sql
:
mysqldump database_name table_name > demo.sql
mysqldump نام پایگاه داده جدول_نام > تظاهرات.sql |
سپس استفاده کنید DROP TABLE
درخواست حذف جدول از پایگاه داده برای جلوگیری از باز کردن مجدد درخواست MySQL می توانید از دستور زیر استفاده کنید:
mysql -u user -p –execute=”DROP TABLE database_name.table_name”
mysql –تو کاربر –پ —برآورده کند=“DROP TABLE database_name.table_name” |
سپس با استفاده از سند دور ریختن demo.sql
شما فقط آماده کردید، جدول را بازیابی کنید:
mysql -u user -p –database=database_name < demo.sql
mysql –تو کاربر –پ —پایگاه داده=نام پایگاه داده < تظاهرات.sql |
شما با موفقیت جدول MySQL آسیب دیده خود را تعمیر کرده اید و آماده اجرای روان پایگاه داده خود هستید.
نتیجه
اگر با حجم زیادی از داده کار می کنید، احتمال دارد خرابی جدول یا خرابی سیستم غیرمنتظره رخ دهد. شایان ذکر است که MySQL InnoDB مکانیسم ذخیره سازی نسبت به قبلی مقاوم تر است MyISAM موتور استفاده از جداول InnoDB موتور ذخیرهسازی هنوز هم میتواند آسیب ببیند، اگرچه خطر خرابی و فساد جدول به لطف ویژگیهای بازیابی خودکار آن تا حد زیادی کاهش مییابد.
در نهایت، موضوعات و آموزش های پایگاه داده زیادی وجود دارد که می توانید در وبلاگ ما بررسی کنید:
کار کامپیوتر مبارک!

درباره آکشی ناگپال
علاقه مندان به تجزیه و تحلیل داده های بزرگ و یادگیری ماشین.