مقدمه
ایمپورت و اکسپورت گرفتن از دیتابیسها یکی از کارهای روزمره در مدیریت سرورها و توسعه نرمافزار است. از بکاپگیری و بازیابی اطلاعات گرفته تا انتقال سایت بین سرورها، کپیکردن محیطهای کاری یا رفع خطاهای دیتابیس، همه و همه به فایلهای Dump وابسته هستند.
در این آموزش از دیدگاه، یاد میگیرید چطور دیتابیسهای MySQL یا MariaDB را بهصورت کامل یا جزئی خروجی بگیرید و دوباره در سرور مقصد وارد کنید. همچنین با انتقال جداول خاص، مهاجرت کاربران و سطح دسترسیها، و مدیریت فایلهای حجیم SQL آشنا میشوید. تمام دستورات در MySQL و MariaDB یکسان هستند و تفاوتی ندارند.
نکات کلیدی این آموزش
-
ابزار mysqldump استانداردترین روش برای بکاپ منطقی (Logical Backup) است و ساختار و دادهها را در فایل
.sqlذخیره میکند. -
برای ایمپورت، دیتابیس مقصد باید از قبل ساخته شده باشد.
-
امکان خروجی گرفتن از جداول خاص بهجای کل دیتابیس وجود دارد.
-
کاربران و سطح دسترسیها داخل دیتابیس mysql ذخیره میشوند و باید جداگانه منتقل شوند.
-
فشردهسازی با gzip باعث کاهش حجم و افزایش سرعت انتقال میشود.
-
برای دیتابیسهای بزرگ InnoDB استفاده از
--single-transactionو--quickضروری است. -
فایلهای SQL بزرگ را میتوان به چند بخش کوچکتر تقسیم کرد.
-
خطاهایی مثل Table already exists با گزینههایی مثل
--add-drop-tableقابل پیشگیری هستند.
پیشنیازها
برای انجام عملیات ایمپورت و اکسپورت دیتابیس نیاز دارید به:
-
یک سرور لینوکسی (Ubuntu، Debian، CentOS و …) با دسترسی sudo
-
نصب MySQL یا MariaDB
-
حداقل یک دیتابیس نمونه برای تمرین
-
دسترسی به یوزر دیتابیس با سطح دسترسی مناسب (ترجیحاً root)
خروجی گرفتن از دیتابیس MySQL یا MariaDB
برای گرفتن بکاپ از یک دیتابیس، از دستور زیر استفاده کنید:
-
usernameنام کاربر دیتابیس -
database_nameنام دیتابیس -
backup.sqlفایل خروجی
اگر دستور بدون خطا اجرا شود، خروجیای در ترمینال نمایش داده نمیشود. برای بررسی صحت فایل میتوانید ابتدای آن را مشاهده کنید:
ایمپورت کردن دیتابیس
1. ساخت دیتابیس مقصد
ابتدا وارد محیط MySQL شوید:
سپس دیتابیس جدید بسازید:
2. ایمپورت فایل SQL
پس از خروج از محیط MySQL:
در صورت موفقیتآمیز بودن عملیات، خروجیای نمایش داده نمیشود.
ایمپورت و اکسپورت جداول خاص
خروجی گرفتن از جداول مشخص
ایمپورت جداول
انتقال کاربران و سطح دسترسیها
دیتاهای مربوط به کاربران داخل دیتابیس سیستمی mysql ذخیره میشوند و بهصورت پیشفرض در mysqldump نیستند.
روش اول: خروجی گرفتن از جدولهای سطح دسترسی
و سپس ایمپورت در سرور مقصد:
روش دوم (پیشنهادی): استفاده از GRANT
این روش سازگارتر و امنتر است و فقط دستورات GRANT را منتقل میکند.
مدیریت فایلهای SQL حجیم
فشردهسازی با gzip
غیرفعالسازی موقت Foreign Key
و بعد از اتمام:
تقسیم فایلهای بزرگ
خطاهای رایج و راهحلها
-
ایمپورت روی دیتابیس اشتباه
همیشه نام دیتابیس مقصد را دوبار چک کنید. -
فراموش کردن ساخت دیتابیس
قبل از ایمپورت حتماً دیتابیس را بسازید. -
سطح دسترسی ناکافی
از یوزری با دسترسی کامل استفاده کنید. -
خطای Table already exists
هنگام خروجی گرفتن از--add-drop-tableاستفاده کنید. -
ناسازگاری Charset
ازutf8mb4در هر دو سمت استفاده شود.
جمعبندی
در این آموزش از دیدگاه یاد گرفتید چگونه دیتابیسهای MySQL و MariaDB را بهصورت کامل یا جزئی ایمپورت و اکسپورت کنید، کاربران و دسترسیها را منتقل نمایید و با دیتابیسهای حجیم بدون دردسر کار کنید. تسلط بر این مهارتها برای بکاپگیری، مهاجرت سرور، توسعه و محیطهای Production کاملاً ضروری است.

