رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش ایمپورت و اکسپورت دیتابیس در MySQL و MariaDB

آموزش ایمپورت و اکسپورت دیتابیس در MySQL و MariaDB

در این آموزش، نحوه ایمپورت و اکسپورت دیتابیس‌های MySQL و MariaDB به‌صورت کامل یا جزئی توضیح داده شده است. روش‌های انتقال جداول، کاربران و سطح دسترسی‌ها همراه با مدیریت فایل‌های SQL حجیم آموزش داده شده‌اند. با این مهارت‌ها می‌توانید بکاپ‌گیری، مهاجرت سرورها و مدیریت دیتابیس در محیط‌های تولید را به‌راحتی انجام دهید.

مقدمه

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

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


نکات کلیدی این آموزش

  • ابزار mysqldump استانداردترین روش برای بکاپ منطقی (Logical Backup) است و ساختار و داده‌ها را در فایل .sql ذخیره می‌کند.

  • برای ایمپورت، دیتابیس مقصد باید از قبل ساخته شده باشد.

  • امکان خروجی گرفتن از جداول خاص به‌جای کل دیتابیس وجود دارد.

  • کاربران و سطح دسترسی‌ها داخل دیتابیس mysql ذخیره می‌شوند و باید جداگانه منتقل شوند.

  • فشرده‌سازی با gzip باعث کاهش حجم و افزایش سرعت انتقال می‌شود.

  • برای دیتابیس‌های بزرگ InnoDB استفاده از --single-transaction و --quick ضروری است.

  • فایل‌های SQL بزرگ را می‌توان به چند بخش کوچک‌تر تقسیم کرد.

  • خطاهایی مثل Table already exists با گزینه‌هایی مثل --add-drop-table قابل پیشگیری هستند.


پیش‌نیازها

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

اگر به‌دنبال راه‌اندازی کامل پایگاه داده MySQL از ابتدا هستید، راهنمای راه‌اندازی پایگاه داده از راه دور با MySQL را نیز مطالعه کنید.

  • یک سرور لینوکسی (Ubuntu، Debian، CentOS و …) با دسترسی sudo

  • نصب MySQL یا MariaDB

  • حداقل یک دیتابیس نمونه برای تمرین

  • دسترسی به یوزر دیتابیس با سطح دسترسی مناسب (ترجیحاً root)


خروجی گرفتن از دیتابیس MySQL یا MariaDB

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

mysqldump -u username -p database_name > backup.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • username نام کاربر دیتابیس

  • database_name نام دیتابیس

  • backup.sql فایل خروجی

اگر دستور بدون خطا اجرا شود، خروجی‌ای در ترمینال نمایش داده نمی‌شود. برای بررسی صحت فایل می‌توانید ابتدای آن را مشاهده کنید:

head -n 5 backup.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

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

1. ساخت دیتابیس مقصد

ابتدا وارد محیط MySQL شوید:

mysql -u root -p
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

سپس دیتابیس جدید بسازید:

CREATE DATABASE new_database;
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

2. ایمپورت فایل SQL

پس از خروج از محیط MySQL:

mysql -u username -p new_database < backup.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

در صورت موفقیت‌آمیز بودن عملیات، خروجی‌ای نمایش داده نمی‌شود.


ایمپورت و اکسپورت جداول خاص

خروجی گرفتن از جداول مشخص

mysqldump -u root -p database_name table1 table2 > tables.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ایمپورت جداول

mysql -u root -p target_database < tables.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

انتقال کاربران و سطح دسترسی‌ها

دیتاهای مربوط به کاربران داخل دیتابیس سیستمی mysql ذخیره می‌شوند و به‌صورت پیش‌فرض در mysqldump نیستند.

روش اول: خروجی گرفتن از جدول‌های سطح دسترسی

mysqldump -u root -p mysql user db tables_priv columns_priv procs_priv > users.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

و سپس ایمپورت در سرور مقصد:

2 خط
mysql -u root -p mysql < users.sql
FLUSH PRIVILEGES;
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

روش دوم (پیشنهادی): استفاده از GRANT

این روش سازگارتر و امن‌تر است و فقط دستورات GRANT را منتقل می‌کند.


مدیریت فایل‌های SQL حجیم

فشرده‌سازی با gzip

2 خط
mysqldump -u root -p database_name | gzip > backup.sql.gz
gunzip < backup.sql.gz | mysql -u root -p database_name
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

غیرفعال‌سازی موقت Foreign Key

3 خط
SET foreign_key_checks = 0;
SET unique_checks = 0;
SET autocommit = 0;
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

و بعد از اتمام:

3 خط
COMMIT;
SET foreign_key_checks = 1;
SET unique_checks = 1;
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تقسیم فایل‌های بزرگ

split -l 5000 large.sql part_
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

خطاهای رایج و راه‌حل‌ها

  • ایمپورت روی دیتابیس اشتباه
    همیشه نام دیتابیس مقصد را دوبار چک کنید.

  • فراموش کردن ساخت دیتابیس
    قبل از ایمپورت حتماً دیتابیس را بسازید.

  • سطح دسترسی ناکافی
    از یوزری با دسترسی کامل استفاده کنید.

  • خطای Table already exists
    هنگام خروجی گرفتن از --add-drop-table استفاده کنید.

  • ناسازگاری Charset
    از utf8mb4 در هر دو سمت استفاده شود.


جمع‌بندی

در این آموزش از دیدگاه یاد گرفتید چگونه دیتابیس‌های MySQL و MariaDB را به‌صورت کامل یا جزئی ایمپورت و اکسپورت کنید، کاربران و دسترسی‌ها را منتقل نمایید و با دیتابیس‌های حجیم بدون دردسر کار کنید. تسلط بر این مهارت‌ها برای بکاپ‌گیری، مهاجرت سرور، توسعه و محیط‌های Production کاملاً ضروری است.

برای آشنایی بیشتر با محیط سرور اوبونتو که این دستورات معمولاً روی آن اجرا می‌شوند، راهنمای نصب Ubuntu 24 را ببینید.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS