آموزش بکاپگیری از دیتابیس MySQL در سرور مجازی اوبونتو 24.04
۱۹ اسفند ۱۴۰۳
مقدمه
با بکاپ گیری از MySQL میتوانید از دادههایتان محافظت کرده و درصورت بروز هرگونه مشکل بهراحتی با یک کلیک فایل بکاپ را بازگردانی کنید. پایگاه داده MySQL یکی از محبوبترین سیستمهای مدیریت پایگاه داده است که از زبان SQL برای ذخیره، بازیابی و مدیریت دادهها استفاده میکند. این پایگاه داده برای مدیریت اطلاعات وبسایتها و اپلیکیشنها بسیار کاربردی است.
از دست دادن دادهها میتواند مشکلات جدی برای کسبوکارها ایجاد کند. تهیه نسخه بکاپ از پایگاه داده MySQL باعث میشود در صورت بروز خرابی سرور، حملات سایبری یا حذف تصادفی دادهها، اطلاعات مهم شما قابل بازیابی باشد. در این آموزش، نحوه تهیه نسخه بکاپ از MySQL 8.0 در Ubuntu 24.04 را بررسی میکنیم. اکثر نسخههای جدید MySQL و لینوکس نیز به همین روش کار میکنند.
پیشنیازها
در این راهنما فرض میکنیم که شما از آخرین نسخه Ubuntu (نسخه LTS اوبونتو، 24.04) استفاده میکنید. قبل از شروع، باید یک حساب کاربری non-root با دسترسی sudo روی سیستم خود تنظیم کرده باشید. برای یادگیری نحوه انجام این کار، میتوانید از راهنمای تنظیم اولیه سرور اوبونتو استفاده کنید.
در ادامه بخوانید:
- بکاپ گرفتن از پایگاه داده MySQL با دستور mysqldump
- بکاپ گرفتن از یک جدول MySQL در فایل متنی
- بکاپ گرفتن از اطلاعات MySQL با ابزار automysqlbackup
- بکاپ گرفتن هنگام استفاده از Replication
- جمعبندی
- سوالات متداول

بکاپ گرفتن از پایگاه داده MySQL با دستور mysqldump
یکی از آسانترین راهها برای بکاپ گرفتن از MySQL استفاده از دستور mysqldump
است.
بکاپگیری
قبل از شروع بکاپگیری، باید مطمئن شوید که MySQL روی سرور شما نصب است ،دستور زیر را اجرا کنید:
mysql --version
در خروجی باید نسخهای از MySQL 8.0 (یا نسخه مورد استفاده شما) را به شما نشان دهد.
حالا، برای بکاپ گرفتن از پایگاهداده بهخصوص دستور زیر را وارد کنید:
mysqldump -u username -p database_to_backup > backup_name.sql
بازیابی اطلاعات
برای بازیابی یک دَمپ پایگاه داده که با mysqldump
ساخته شده، کافی است فایل را دوباره وارد MySQL کنید.
ابتدا باید یک پایگاه داده خالی برای وارد کردن دادهها ایجاد کنید. برای این کار، ابتدا وارد MySQL شوید:
mysql -u username -p
سپس یک پایگاه داده جدید برای ذخیره دادههای وارد شده بسازید و از محیط MySQL خارج شوید:
CREATE DATABASE database_name; exit
حالا میتوانید فایل دَمپ را به پایگاه داده جدیدی که ایجاد کردهاید، منتقل کنید. برای این کار، دستور زیر را اجرا کنید:
mysql -u username -p database_name < backup_name.sql
اطلاعات شما باید اکنون به پایگاه دادهای که ساختهاید بازیابی شده باشد.

بکاپ گرفتن از یک جدول MySQL در فایل متنی
برای ذخیره دادههای یک جدول به طور مستقیم در یک فایل متنی میتوانید از دستور SELECT
در MySQL استفاده کنید.
سینتکس این دستور به شکل زیر است:
SELECT * INTO OUTFILE 'table_backup_file' FROM name_of_table;
این دستور دادههای جدول را در یک فایل متنی ذخیره میکند. توجه داشته باشید که این روش فقط دادههای جدول را ذخیره میکند و ساختار جدول را حفظ نمیکند.
پیشنهاد مطالعه:Microsoft SQL Server چیست؟
بکاپ گرفتن از اطلاعات MySQL با ابزار automysqlbackup
ابزاری به نام automysqlbackup
وجود دارد که در مخازن اوبونتو در دسترس است. با این ابزار میتوانید بکاپها را به صورت خودکار و در بازههای زمانی مشخص انجام دهید.
ابتدا باید این ابزار را با دستور زیر نصب کنید:
sudo apt-get install automysqlbackup
اکنون پس از نصب این ابزار، دستور بکاپ را اجرا کنید:
sudo automysqlbackup
در این مرحله، برای تنظیم درست بکاپها و شخصیسازی آنها، لازم است که فایل پیکربندی automysqlbackup
را باز کنید. به طور پیشفرض این فایل در آدرس /etc/default/automysqlbackup
قرار دارد.
برای باز کردن این فایل با دسترسیهای مدیریتی، دستور زیر را بزنید:
sudo nano /etc/default/automysqlbackup
در این فایل، به طور پیشفرض، متغیرهای زیادی از فایل پیکربندی MySQL در مسیر /etc/mysql/debian.cnf
وجود دارد. این فایل حاوی اطلاعات ورود برای نگهداری پایگاه دادهها است.
این فایل، اطلاعات کاربر، رمز عبور و پایگاه دادههایی که باید از آنها بکاپ بگیرید را میخواند. مکان پیشفرض برای ذخیره بکاپها در /var/lib/automysqlbackup
است. برای مشاهده ساختار بکاپها، از دستور زیر استفاده کنید:
ls /var/lib/automysqlbackup
در خروجی مطابق زیر، دایرکتوریهای daily، monthly و weekly را خواهید دید.
daily monthly weekly
اگر وارد دایرکتوری daily شوید، برای هر پایگاه داده یک پوشه جداگانه خواهید دید که در هر کدام یک فایل gzipped SQL dump
ذخیره شده است. این فایلها شامل بکاپگیری از زمانی است که دستور اجرا شده است. برای مشاهده دقیقتر ساختار بکاپها، میتوانید از دستور زیر استفاده کنید:
ls -R /var/lib/automysqlbackup/daily
خروجی نمونه:
.: database_name information_schema performance_schema ./database_name: database_name_2013-08-27_23h30m.Tuesday.sql.gz ./information_schema: information_schema_2013-08-27_23h30m.Tuesday.sql.gz ./performance_schema: performance_schema_2013-08-27_23h30m.Tuesday.sql.gz

بکاپ گرفتن هنگام استفاده از Replication
امکان استفاده از MySQL replication برای بکاپگیری دادهها با استفاده از روشهای گفته شده در بالا وجود دارد.
Replication فرآیندی است که در آن دادهها از یک سرور (سرور اصلی یا master) به سرور دیگر (سرور جانبی یا slave) کپی میشود. در حالت master-slave، تمام تغییرات اعمالشده روی سرور اصلی به طور خودکار به سرور جانبی منتقل میشود. در حالت master-master، هر دو سرور قادر به اعمال تغییرات هستند و تغییرات هر کدام به سرور دیگر منتقل میشود.
در حالی که replication امکان کپیبرداری دادهها را فراهم میکند، هنگام تلاش برای ذخیرهسازی یک نقطه خاص زمانی با مشکل مواجه میشود، زیرا سیستم به طور مداوم تغییرات دادهها را از یک سیستم پویا کپی میکند.
برای جلوگیری از این مشکل، دو راه وجود دارد:
- غیرفعال کردن موقت replication
- موقتا سرور بکاپ را به حالت read-only درآورید
در ادامه بهطور مفصل این موارد را توضیح خواهیم داد، پس تا پایان مقاله با ما همراه باشید.
در لیارا فقط با یک کلیک و در چند ثانیه، دیتابیس MySQL تهیه کنید.
✅ شبکه خصوصی ✅ منابع اختصاصی ✅ مدیریت آسان
خرید هاست ابری MySQL
غیرفعال کردن موقت replication
برای غیرفعال کردن موقت replication در سرور جانبی (slave)، از دستور زیر استفاده کنید:
mysqladmin -u user_name -p stop-slave
همچنین برای توقف موقت replication از دستور زیر نیز میتوانید استفاده کنید:
mysql -u user_name -p -e 'STOP SLAVE SQL_THREAD;'
حالا، پس از اینکه replication
را متوقف کردید، میتوانید از یکی از روشهای بکاپگیری استفاده کنید. به این ترتیب، دیتابیس اصلی MySQL همچنان آنلاین باقی میماند در حالی که سرور جانبی (slave) به صورت ایمن بکاپگیری میشود.
در آخر پس از بکاپگیری، برای راهاندازی مجدد replication، دستور زیر را اجرا کنید:
mysqladmin -u user_name -p start-slave
حالا بعد از اجرای دستور mysqladmin -u user_name -p start-slave
، replication
دوباره روی سرور slave استارت میشود و تغییرات اعمالشده روی سرور master به طور خودکار به slave منتقل میشود. این کار باعث هماهنگ شدن دادهها و ادامه روند عادی replication
خواهد شد.
تنظیم موقت سرور بکاپ به حالت read-only
زمانی که میخواهید یک بکاپگیری دقیق از دادهها تهیه کنید، ممکن است تغییرات مداوم باعث ناهماهنگی شوند. برای جلوگیری از این مشکل، میتوانید موقتا اجازه تغییر در دادهها را غیرفعال کنید.
ابتدا با دسترسیroot
وارد MySQL شوید:
mysql -u root -p
سپس، با اجرای دستور زیر، تمامی تغییرات ذخیرهشده در کش را به دیسک منتقل کرده و سیستم را به حالت فقط خواندنی تنظیم کنید:
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;
حالا از ابزار mysqldump
برای انجام بکاپگیری استفاده کنید:
mysqldump -u username -p database_name > backup_name.sql
در نهایت وقتی بکاپگیری تمام شد، دستور زیر را اجرا کنید:
SET GLOBAL read_only = OFF; UNLOCK TABLES;
بعد از اجرای دستور بالا، سرور شما به حالت عادی خود ادامه باز میگردد.
جمعبندی
در این آموزش از لیارا، بکاپگیری از دیتابیس MySQL را بررسی کردیم. بهخاطر داشته باشید ایجاد فایل بکاپ تنها راه محافظت از اطلاعات نیست، بلکه این فایل بکاپ بطور منظم ذخیره و آپدیت شود. همچنین انتخاب روش بکاپگیری بستگی زیادی به نیازها و منابع شما دارد. به عنوان مثال، اگر یک پایگاه داده کوچک با ترافیک پایین دارید، ممکن است روشهای سادهتری مانند mysqldump
برای شما مناسب باشند. اما اگر پایگاه دادههای بزرگ و پیچیدهای دارید یا نیاز به بکاپگیری در زمان واقعی دارید، به سراغ تکنیکهایی مانند Replication و یا Automated Backups خواهید رفت.
سوالات متداول
1- فایل بکاپ MySQL در کجا قرار دارد؟
در زمان تهیه بکاپ، معمولا میتوانید مسیر فایل بکاپ را مشخص کنید. برای مثال، در کنترل پنل دایرکت ادمین مسیر پیشفرض تهیه فایل بک آپ /home/admin/admin_backups است و فایل بکاپ هر کاربر در مسیر /home/USERNAME/backup قرار دارند.
2- منظور از Full Backup در تهیه بکاپ چیست؟
امکان تهیه بکاپ از اطلاعات مختلف وجود دارد. بکاپهایی که بهطور کامل از هاست تهیه میشود یا همان Full Backup، شامل فایلهای اسکریپت، دیتابیسها، ایمیلها و سایر موارد است.
3- چه تفاوتی بین روشهای بکاپگیری مختلف در MySQL وجود دارد و کدام روش برای من مناسبتر است؟
در این مقاله روشهای مختلف بکاپگیری مانند mysqldump، Replication، automysqlbackup و روشهای دستی مانند کپی کردن فایلهای جدول توضیح داده شده است. انتخاب روش مناسب بستگی به نیازهای خاص شما، اندازه و پیچیدگی پایگاه داده، و منابع موجود دارد. برای پایگاه دادههای کوچک و کمترافیک، روشهای ساده مانند mysqldump
کافی است، در حالی که برای پایگاه دادههای بزرگ و پرحجم، استفاده از Replication یا ابزارهای اتوماسیون مانند automysqlbackup میتواند مفیدتر باشد.
4- چگونه مطمئن شوم که بکاپگیریها به درستی انجام شدند؟
برای اطمینان از صحت بکاپها، بهتر است فرآیند بازگردانی آنها را به طور منظم آزمایش کنید. این کار به شما کمک میکند تا در صورت نیاز، بتوانید دادهها را به درستی بازیابی کنید.