آموزش بازگردانی دیتابیس MySQL دارای Function و Stored Procedure

مشکل بازگردانی دیتابیس با Function و Procedure

هنگام بازگردانی (restore) یک دیتابیس MySQL که شامل Stored Functions و Stored Procedures است، ممکن است با خطاهایی مواجه شوید. رایج‌ترین خطا مربوط به DEFINER و log_bin_trust_function_creators است.

این مشکل به‌خصوص هنگام انتقال دیتابیس بین سرورها، بازگردانی از بکاپ cPanel/DirectAdmin، و import فایل SQL در phpMyAdmin رخ می‌دهد.

خطاهای رایج

خطای ERROR 1227: Access denied; you need SUPER privilege هنگامی رخ می‌دهد که DEFINER تابع با کاربر فعلی متفاوت است. خطای ERROR 1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA مربوط به تنظیمات binary logging است.

روش‌های رفع

روش ۱: فعال‌سازی log_bin_trust_function_creators

این تنظیم به MySQL اجازه می‌دهد توابع را بدون نیاز به دسترسی SUPER بپذیرد:

mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 1;"

برای دائمی کردن، در /etc/my.cnf اضافه کنید:

[mysqld]
log_bin_trust_function_creators = 1

روش ۲: حذف DEFINER از فایل بکاپ

قبل از import، DEFINER را از فایل SQL حذف کنید:

sed -i 's/DEFINER=[^ ]* //g' backup.sql

یا اگر فایل بزرگ است:

sed 's/DEFINER=[^*]*\*/\*/' backup.sql > clean_backup.sql

روش ۳: استفاده از mysqldump با گزینه‌های صحیح

هنگام بکاپ‌گیری، از گزینه‌های زیر استفاده کنید تا مشکلات بازگردانی کمتر شود:

mysqldump -u root -p --routines --triggers --single-transaction database_name > backup.sql

گزینه --routines تمام Functions و Procedures را شامل می‌کند.

روش ۴: بازگردانی با دسترسی root

اگر دسترسی root دارید:

mysql -u root -p database_name < backup.sql

کاربر root معمولاً دسترسی SUPER دارد و مشکلی با DEFINER نخواهد داشت.

بازگردانی از phpMyAdmin

اگر از phpMyAdmin استفاده می‌کنید و با خطای DEFINER مواجه شدید، فایل SQL را ابتدا در کامپیوتر خود ویرایش کنید و DEFINERها را حذف نمایید، سپس import کنید. همچنین محدودیت حجم آپلود phpMyAdmin را در php.ini بررسی کنید.

نکات مهم

همیشه قبل از هر عملیات، یک بکاپ کامل تهیه کنید. تنظیم log_bin_trust_function_creators را پس از اتمام کار به مقدار اولیه برگردانید. اگر دیتابیس وردپرسی دارید، معمولاً شامل Function نیست مگر افزونه‌های خاصی نصب کرده باشید.

اگر سرور مجازی دارید و با مشکل بازگردانی دیتابیس مواجه شده‌اید، خدمات کانفیگ سرور میهن هاستینگ شامل مدیریت و بازگردانی دیتابیس نیز می‌شود. همچنین هاست وردپرس میهن هاستینگ امکان بکاپ و بازگردانی آسان دیتابیس را فراهم کرده است.

⚙️ مدیریت دیتابیس سرور

بازگردانی دیتابیس، بهینه‌سازی MySQL و رفع خطاها توسط تیم فنی میهن هاستینگ.

سفارش کانفیگ سرور ←

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

متن نظر
نام*:
رایانامه*:
وب سایت / وبلاگ: