جدول محتوایی

مشکلات دیتابیس MySQL

آموزش رفع مشکلات دیتابیس در MySQL –  گاهی اوقات، پایگاه داده MySQL ممکن است از کار بیفتد. این مشکل با cPanel، phpMyAdmin یا WHM قابل رفع است. این مقاله نحوه تعمیر پایگاه داده ها و جداول MySQL را توضیح می دهد.

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

مرحله 1: بکاپ گیری از دیتابیس ها

قبل از شروع مراحل رفع مشکلات هر دیتابیسی مانند MySQL، ابتدا باید آن را بازیابی کنید.

1. با استفاده از SSH وارد سرور خود شوید. (آموزش اتصال به سرور از طریف SSH)

2. سرور MySQL را با استفاده از یکی از دستورات زیر (با توجه به توزیع لینوکس خود) متوقف کنید:

– برای کاربران CentOS و Fedora:

service mysqld stop

– برای کاربران دبیان و اوبونتو:

service mysql stop

 

3. دستور زیر همه فایل‌ ها را از همه دیتابیس های شما به دایرکتوری دلخواه بر اساس زمان فعلی کپی می‌کند. این کار تضمین می کند که هر نسخه پشتیبان از دیتابیس در یک پوشه با یک نام منحصر به فرد ذخیره می شود.

cp -rfv /var/lib/mysql /var/lib/mysql$(date +%s)

 

4. سرور MySQL را با استفاده از دستور مناسب با توزیع لینوکس خود مجددا راه اندازی کنید:

– برای CentOS و Fedora از دستور زیر استفاده کنید:

service mysqld start

– برای دبیان و اوبونتو دستور زیر را تایپ کنید:

service mysql start

 

مرحله 2: بررسی و رفع مشکلات یک جدول با MYSQL CHECK

پس از اینکه از دیتابیس خود پشتیبان گیری کردید، میتوانید فرایند عیب یابی را شروع کنید. برنامه mysqlcheck به شما امکان می دهد تا پایگاه داده MySQL را در حین انجام تعمیر بررسی کنید. این ویژگی زمانی مفید است که بخواهید در یک دیتابیس  بدون توقف سرویس کل MySQL کار کنید.

علاوه بر این، mysqlcheck در جداولی که از موتورهای دیتابیس MyISAM یا InnoDB استفاده می کنند استفاده می شود. برای استفاده از mysqlcheck مراحل زیر را دنبال کنید:

1. به عنوان یک کاربر روت، دستور زیر را تایپ کنید: (آموزش فعالسازی یوزر root)

cd /var/lib/mysql

 

2. در دستور زیر نام دیتابیس خود را بجای DATABASE بنویسید تا فرایند بررسی شروع شود:

mysqlcheck DATABASE

دستور قبلی تمام جداول را در یک دیتابیس مشخص بررسی می کند. همچنین، میتوانید از دستور زیر برای بررسی یک جدول خاص در دیتابیس استفاده کنید.

DATABASE را با نام پایگاه داده جایگزین کنید و TaABLE را با نام جدولی که می خواهید بررسی کنید جایگزین کنید:

mysqlcheck DATABASE TABLE

 

3. Mysqlcheck دیتابیس ها و جداول مشخص شده را بررسی می کند. اگر جدولی از چک عبور کندو مشکلی نداشته باشد، mysqlcheck OK را برای جدول نمایش می دهد. با این حال، اگر mysqlcheck خطایی را برای یک جدول گزارش می‌کند، دستور زیر را تایپ کنید تا آن را برطرف کنید.

DATABASE را با نام دیتابیس و TaABLE را با نام جدولی که می خواهید بررسی کنید جایگزین کنید:

mysqlcheck -r DATABASE TABLE

اگر این روش بری رفع مشکلات جداول MySQL شما کار نکرد روش بعدی را امتحان کنید.

 

مرحله 3: شناسایی engine ذخیره سازی خاص

اگر اجرای mysqlcheck مشکل را حل نکرد، قدم بعدی این است که یک تشخیص خاص برای engine مورد استفاده در جدول یا جداول پایگاه داده ایجاد کنید.

 

تعمیر میزهای MyISAM با myisamchk

اگر از موتور ذخیره سازی MyISAM برای جدول استفاده می کنید، می توانید برنامه themyisamchk را برای رفع مشکلات آن اجرا کنید.

توجه: برنامه myisamchk فقط برای جداولی که روی موتور ذخیره سازی MyISAM اجرا می شوند کار می کند و روی موتور InnoDB کار نمی کند.

1. سرور MySQL را با استفاده از دستور متناسب با توزیع لینوکس خود متوقف کنید:

– برای CentOS و Fedora:

service mysqld stop

– برای دبیان و اوبونتو:

service mysql stop

 

2. دستور زیر را تایپ کنید:

cd /var/lib/mysql

 

3. به دایرکتوری که دیتابیس در آن قرار بروید. به عنوان مثال، اگر دیتابیس Customers نام دارد، CD Customers را تایپ کنید.

4. دستور زیر را تایپ کنید و TABLE را با نام جدولی که می خواهید بررسی کنید جایگزین کنید:

myisamchk TABLE

برای بررسی تمام جداول در دیتابیس، دستور زیر را تایپ کنید:

myisamchk * .MYI

اگر دستور قبلی کار نکرد، می توانید فایل های موقتی را که ممکن است به درستی اجرا نشوند را از myisamchk حذف کنید.

برای انجام این کار، به پوشه /var/lib/mysql بروید و سپس دستور زیر را تایپ کنید:

ls * / *. TMD

اگر TMD files وجود دارد، دستور زیر را برای حذف آنها تایپ کنید:

rm * / *. TMD

سپس دوباره myisamchk را اجرا کنید.

 

5. برای تلاش برای تعمیر جدول، دستور زیر را تایپ کنید و نام جدولی را که می خواهید تعمیر کنید جایگزین TABLE کنید:

myisamchk --recover TABLE

 

6. سرور MySQL را با استفاده از دستور مناسب برای توزیع لینوکس خود راه اندازی مجدد کنید:

– برای CentOS و Fedora:

service mysqld start

–برای Debian و Ubuntu:

service mysql start

 

7. جداول یا جدول تعمیر شده را تست کنید.

نحوه رفع مشکلات mysql

 

اجرای فرآیند بازیابی InnoDB

اگر از موتور ذخیره سازی InnoDB برای جدول دیتابیس استفاده می کنید، می توانید فرآیند بازیابی InnoDB را اجرا کنید. برای انجام این کار موارد زیر را دنبال کنید:

1. از ویرایشگر متن برای باز کردن فایل my.cnf در سرور خود استفاده کنید. مکان فایل themy.cnf به توزیع لینوکس شما بستگی دارد:

– در CentOS و Fedora، فایل my.cnf در پوشه /etc قرار دارد.

– در دبیان و اوبونتو، فایل my.cnf در دایرکتوری /etc/mysql قرار دارد.

2. در فایل my.cnf، بخش [mysqld] را پیدا کنید.

3. خط زیر را به بخش [mysqld] اضافه کنید:

innodb_force_recovery=4

 

4. تغییرات را در فایل my.cnf ذخیره کنید.

سپس سرور MySQL را با استفاده از دستور مناسب با توزیع لینوکس خود راه اندازی مجدد کنید:

– برای CentOS و Fedora:

service mysqld restart

– برای دبیان و اوبونتو:

service mysql restart

 

5. دستور زیر را برای اکسپورت همه دیتابیس ها به فایل databases.sql تایپ کنید:

mysqldump --all-databases --add-drop-database --add-drop-table > databases.sql

 

6. برنامه mysql را راه اندازی کنید و سپس با استفاده از دستور DROP DATABASE سعی کنید پایگاه داده های آسیب دیده را حذف کنید.

اگر MySQL قادر به حذف پایگاه داده نیست، می توانید پس از خاموش کردن سرور MySQL، آن را به صورت دستی در مرحله 8 حذف کنید.

7. سرور MySQL را با استفاده از دستور مناسب برای توزیع لینوکس خود متوقف کنید:

– برای CentOS و Fedora:

service mysqld stop

–برای Debian و Ubuntu:

service mysql stop

 

8. اگر در مرحله 6 نمی توانید پایگاه داده را حذف کنید، دستورات زیر را تایپ کنید تا آن را به صورت دستی حذف کنید.

DBNAME را با نام دیتابیسی که می خواهید حذف کنید جایگزین کنید:

cd /var/lib/mysql rm -rf DBNAME

 

نکته: حواستان باشد که دایرکتوری themysql یا performance_schema را حذف نکنید.

9. از ویرایشگر متن دلخواه خود برای باز کردن فایل my.cnf در سرور خود استفاده کنید. سپس دستور زیر را در قسمت [mysqld] قرار دهید:

nano my.conf

این دستور، حالت بازیابی InnoDB را غیرفعال می کند.

10. فایل tomy.cnf تغییرات را ذخیره کنید. سپس سرور MySQL را با استفاده از دستور مناسب برای توزیع لینوکس خود راه اندازی کنید:

– برای CentOS و Fedora:

service mysqld start

– برای دبیان و اوبونتو:

service mysql start

 

11. دستور زیر را برای بازیابی دیتابیس از فایل پشتیبان ایجاد شده در مرحله 5 تایپ کنید:

mysql < databases.sql

 

امیدواریم از این آموزش لذت برده باشید. در این آموزش چند روش برای رفع مشکلات دیتابیس MySQL را به شما آموزش دادیم.

 

10رای - امتیاز 5 ممنون از امتیازی که دادید..!

دسته بندی شده در: