تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

آموزش بکاپ‌گیری از دیتابیس 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 در سرور مجازی اوبونتو 24.04

بکاپ گرفتن از پایگاه داده 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 در سرور مجازی اوبونتو 24.04

بکاپ گرفتن از یک جدول 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
آموزش بکاپ‌گیری از دیتابیس MySQL در سرور مجازی اوبونتو 24.04

بکاپ گرفتن هنگام استفاده از 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- چگونه مطمئن شوم که بکاپ‌گیری‌ها به درستی انجام شدند؟

برای اطمینان از صحت بکاپ‌ها، بهتر است فرآیند بازگردانی آن‌ها را به طور منظم آزمایش کنید. این کار به شما کمک می‌کند تا در صورت نیاز، بتوانید داده‌ها را به درستی بازیابی کنید.