نویسنده: زهرا بیگی
تاریخ انتشار: 31 ژانویه 2024 - بروز رسانی در تاریخ: 7 جولای 2026
0 550
آپلود دیتابیس حجیم روی هاست ابری بدون خطا

آپلود دیتابیس حجیم روی هاست ابری بدون خطا

1 امتیاز

آپلود دیتابیس حجیم روی هاست ابری یکی از رایج ترین دردسرهای مهاجرت سایت است؛ فایل SQL شما بزرگ تر از حد مجاز آپلود است، ایمپورت وسط کار قطع میشود یا با خطای مهلت زمانی (Timeout) متوقف میشود. خبر خوب این است که این مشکل کاملا قابل حل است و فقط باید روش مناسب اندازهٔ دیتابیس خود را انتخاب کنید.

در این مقاله به صورت کاربردی و گام به گام می بینیم چطور دیتابیس های بزرگ را بدون خطا روی هاست ابری آپلود کنیم: از phpMyAdmin و تنظیمات لازم آن، تا روش خط فرمان MySQL که برای فایل های بزرگ مطمئن ترین راه است، و تکنیک تقسیم فایل برای دیتابیس های بسیار حجیم. خطاهای رایج و راه حلشان را هم مرور میکنیم.

این مقاله در یک نگاه
  • علت اصلی خطا، محدودیت حجم آپلود و مهلت اجرای هاست است برای فایل های بزرگ، خط فرمان MySQL مطمئن تر از phpMyAdmin است برای دیتابیس بسیار حجیم، فایل را فشرده یا تکه تکه کنید

چرا آپلود دیتابیس حجیم با خطا روبرو میشود؟

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

مهم ترین این محدودیت ها عبارت اند از حداکثر حجم فایل قابل آپلود، حداکثر حجم درخواست، و مهلت اجرای اسکریپت. وقتی فایل SQL شما از این مقادیر بزرگ تر باشد، ابزارهای تحت وب مثل phpMyAdmin وسط کار متوقف میشوند. برای همین هرچه فایل بزرگ تر باشد، باید سراغ روش هایی برویم که به این محدودیت های تحت وب وابسته نیستند.

روش اول: phpMyAdmin برای فایل های کوچک تا متوسط

اگر دیتابیس شما نسبتا کوچک است (مثلا زیر محدودیت آپلود هاست)، ساده ترین راه استفاده از phpMyAdmin در کنترل پنل است. کافی است وارد phpMyAdmin شوید، دیتابیس مقصد را انتخاب کنید و از تب Import فایل SQL را بارگذاری کنید.

اگر فایل کمی بزرگ تر از حد مجاز است، دو کار کمک میکند. اول، فایل SQL را به صورت فشرده (zip یا gzip) آپلود کنید؛ phpMyAdmin فایل فشرده را میپذیرد و حجم انتقال کمتر میشود. دوم، اگر به فایل php.ini دسترسی دارید، محدودیت ها را موقتا افزایش دهید:

# افزایش محدودیت ها در php.ini
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 600
max_input_time = 600
memory_limit = 512M

بعد از این تغییر، سرویس وب را ری استارت کنید یا اگر روی هاست اشتراکی هستید، از پشتیبانی بخواهید این مقادیر را افزایش دهند. با این حال برای فایل های واقعا بزرگ، این روش همچنان ممکن است شکست بخورد و بهتر است سراغ خط فرمان بروید.

روش دوم: خط فرمان MySQL برای فایل های بزرگ

مطمئن ترین راه برای آپلود دیتابیس حجیم، استفاده از خط فرمان است، چون به محدودیت های تحت وب وابسته نیست و میتواند فایل های بسیار بزرگ را بدون قطع شدن ایمپورت کند. اگر به SSH دسترسی دارید (روی هاست ابری، سرور مجازی یا اختصاصی)، این بهترین انتخاب است. برای جزئیات کامل این روش، راهنمای ایمپورت دیتابیس از طریق SSH را ببینید.

برای گرفتن خروجی استاندارد از دیتابیس مبدا بهتر است از mysqldump استفاده کنید، چون یک فایل تمیز و کامل میسازد که احتمال خطای ایمپورت را کم میکند:

mysqldump -u USERNAME -p DATABASE_NAME > backup.sql

سپس فایل SQL را با FTP یا SCP به سرور منتقل کنید و با یک دستور ساده آن را ایمپورت کنید:

# ایمپورت فایل SQL از طریق خط فرمان
mysql -u USERNAME -p DATABASE_NAME < /path/to/backup.sql

# اگر فایل فشرده (gzip) است، بدون باز کردن کامل:
gunzip < /path/to/backup.sql.gz | mysql -u USERNAME -p DATABASE_NAME

این روش حتی برای دیتابیس های چند گیگابایتی هم پایدار کار میکند. اگر با cPanel کار میکنید و میخواهید با کل محیط آن از جمله مدیریت دیتابیس و دسترسی ها آشناتر شوید، مطلب سی پنل چیست نقطهٔ شروع خوبی است.

روش سوم: تقسیم فایل برای دیتابیس های بسیار حجیم

گاهی حتی خط فرمان هم به دلیل محدودیت منابع یا نبود دسترسی SSH کافی نیست. در این حالت میتوانید فایل SQL را به چند تکهٔ کوچک تر تقسیم کنید و هر تکه را جداگانه ایمپورت کنید. ابزارهایی مثل SQLDumpSplitter یا افزونه های مخصوص این کار را ساده میکنند.

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

ایمپورت با اسکریپت BigDump

اگر به SSH دسترسی ندارید و روی هاست اشتراکی هستید، اسکریپت رایگان BigDump یک راه حل عالی برای ایمپورت تکه تکه است. این اسکریپت PHP فایل SQL بزرگ را به صورت مرحله ای و خودکار وارد دیتابیس میکند تا به محدودیت مهلت اجرا و حجم آپلود نخورد. مراحل استفاده به این صورت است:

  1. فایل bigdump.php را دانلود کنید و اطلاعات اتصال دیتابیس (نام دیتابیس، کاربر و رمز) را داخل آن وارد کنید.
  2. فایل bigdump.php و فایل SQL را در یک پوشهٔ جدید روی هاست (مثلا در public_html) آپلود کنید.
  3. در مرورگر به آدرس همان پوشه و فایل bigdump.php بروید، فایل SQL را انتخاب و روی Start Import کلیک کنید تا ایمپورت مرحله ای شروع شود.
  4. بعد از پایان کار، حتما فایل bigdump.php و فایل SQL را از سرور حذف کنید تا از نظر امنیتی مشکلی پیش نیاید.

یک نکتهٔ مهم: BigDump با فایل هایی که از دستورهای INSERT چندخطی (extended insert) استفاده میکنند مشکل دارد. برای همین هنگام گرفتن خروجی، دامپ را با حالت «هر ردیف یک INSERT» (complete insert) بگیرید تا BigDump درست کار کند.

خطاهای رایج ایمپورت و راه حل آن ها

هنگام آپلود دیتابیس حجیم چند خطا بیشتر از بقیه تکرار میشوند و خوب است راه حلشان را از قبل بدانید تا وسط کار غافلگیر نشوید.

خطای «MySQL server has gone away» معمولا به دلیل کوچک بودن مقدار max_allowed_packet رخ میدهد؛ یعنی یک ردیف یا دستور بزرگ تر از حد مجاز است و با افزایش این مقدار برطرف میشود. خطای مهلت زمانی هم اغلب با رفتن به خط فرمان از بین میرود. اگر با خطای کلید خارجی (Foreign Key) مواجه شدید، میتوانید موقتا بررسی کلیدها را غیرفعال کنید تا ترتیب ایمپورت جدول ها مشکل ساز نشود:

# افزایش حداکثر اندازه بسته در my.cnf
max_allowed_packet = 256M

# غیرفعال کردن موقت بررسی کلید خارجی در ابتدای فایل SQL
SET FOREIGN_KEY_CHECKS = 0;
# ... دستورهای ایمپورت ...
SET FOREIGN_KEY_CHECKS = 1;

یک نکتهٔ مهم دیگر هماهنگی کاراکترست (Charset) و کولیشن است. اگر دیتابیس مبدا و مقصد از کاراکترست متفاوتی استفاده کنند، ممکن است متن های فارسی به هم بریزند. بهتر است هر دو را روی utf8mb4 تنظیم کنید تا کاراکترهای فارسی و حتی ایموجی درست ذخیره شوند و بعد از ایمپورت با متن خراب روبرو نشوید.

بعد از آپلود: بهینه سازی و بررسی عملکرد

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

اگر بعد از انتقال متوجه کندی سایت شدید، اولین قدم پیدا کردن کوئری های کند است. راهنمای پیدا کردن کوئری های کند کمک میکند نقاط ضعف دیتابیس را شناسایی و برطرف کنید تا عملکرد سایت پس از انتقال افت نکند.

نقش هاست و منابع در آپلود دیتابیس

بخشی از موفقیت در آپلود دیتابیس حجیم به منابع هاست شما بستگی دارد. روی هاست اشتراکی با منابع محدود، حتی با روش درست هم ممکن است به سقف منابع بخورید. اما روی هاست ابری یا سرور مجازی با منابع تضمین شده، آزادی عمل بیشتری برای افزایش محدودیت ها و استفاده از خط فرمان دارید. همچنین سرعت دیسک و مقدار رم سرور، مستقیما روی زمان ایمپورت یک دیتابیس بزرگ اثر میگذارد و منابع بیشتر یعنی انتقال سریع تر.

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

از کجا شروع کنیم؟

برای آپلود بدون دردسر یک دیتابیس حجیم، این ترتیب ساده را دنبال کنید تا کمترین احتمال خطا را داشته باشید.

1

اندازه را بسنج

حجم فایل SQL را ببین و با محدودیت آپلود هاست مقایسه کن تا روش درست را انتخاب کنی.

2

روش را انتخاب کن

فایل کوچک با phpMyAdmin، فایل بزرگ با خط فرمان MySQL، و فایل بسیار حجیم را تکه تکه ایمپورت کن.

3

بعد از ایمپورت بررسی کن

صحت داده ها و ایندکس ها را چک کن و در صورت کندی، کوئری های کند را پیدا و بهینه کن.

جمع بندی: آپلود دیتابیس حجیم روی هاست ابری با انتخاب روش درست کاملا قابل انجام است: phpMyAdmin برای فایل های کوچک، خط فرمان MySQL برای فایل های بزرگ، و تقسیم فایل برای موارد بسیار حجیم. علت اصلی خطاها هم محدودیت حجم آپلود و مهلت اجراست که با چند تنظیم ساده یا رفتن به خط فرمان کنار میرود.

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

دیتابیس بزرگت را روی زیرساخت قدرتمند بالا بیاور

هاست ابری و سرور مجازی با منابع کافی و دسترسی کامل؛ بقیه اش با ما.

اشتراک گذاری
+

چرا ایمپورت دیتابیس بزرگ در phpMyAdmin با خطا متوقف میشود؟

به دلیل محدودیت حجم آپلود و مهلت اجرای اسکریپت در هاست. برای فایل های بزرگ بهتر است به جای phpMyAdmin از خط فرمان MySQL استفاده کنید که به این محدودیت ها وابسته نیست.

+

بهترین روش آپلود دیتابیس حجیم چیست؟

اگر به SSH دسترسی دارید، خط فرمان MySQL مطمئن ترین راه است و حتی فایل های چند گیگابایتی را بدون قطع شدن ایمپورت میکند. برای فایل های کوچک، phpMyAdmin کافی است.

+

چطور محدودیت حجم آپلود دیتابیس را افزایش بدهم؟

با ویرایش مقادیری مثل upload_max_filesize و post_max_size و max_execution_time در php.ini. روی هاست اشتراکی میتوانید از پشتیبانی بخواهید این مقادیر را افزایش دهند.

+

اگر فایل دیتابیس خیلی بزرگ باشد چه کنم؟

فایل SQL را به چند تکهٔ کوچک تر تقسیم کنید و هر تکه را جداگانه ایمپورت کنید، یا جدول های حجیم را جدا اکسپورت و ایمپورت کنید. اگر SSH ندارید، اسکریپت BigDump هم فایل بزرگ را به صورت تکه تکه و خودکار ایمپورت میکند.

+

بعد از آپلود دیتابیس سایت کند شده، چه کار کنم؟

ابتدا کوئری های کند را پیدا کنید و مطمئن شوید جدول ها ایندکس مناسب دارند. بهینه سازی کوئری ها و ایندکس ها معمولا کندی پس از انتقال را برطرف میکند.

منابع:

فاماسرور

مقالات مرتبط این مطلب پیشنهاد می شود