# 🔄 آموزش دستورات بکاپ و ریستور پایگاهداده در MySQL
پشتیبانگیری منظم از پایگاهدادهها یکی از حیاتیترین وظایف مدیر سیستم است. MySQL ابزارهای خط فرمانی مانند `mysqldump` و `mysql` را برای این منظور فراهم میکند که در تمام سیستمعاملهای لینوکسی قابل استفاده هستند.
---
## 🔐 پیشنیازها
قبل از شروع، مطمئن شوید که:
* به سرور MySQL دسترسی دارید.
* کاربر شما مجوزهای لازم را برای خواندن و نوشتن دیتابیس دارد.
* ابزارهای `mysqldump` و `mysql` نصب هستند (بخشی از بسته MySQL/MariaDB هستند).
---
## 📦 بخش اول: پشتیبانگیری (Backup)
### ✅ ۱. بکاپ کامل از یک پایگاهداده
```bash
mysqldump -u root -p mydb > mydb_backup.sql
```
---
### ✅ ۲. بکاپ از چند دیتابیس خاص
```bash
mysqldump -u root -p --databases db1 db2 db3 > multi_backup.sql
```
---
### ✅ ۳. بکاپ از تمام دیتابیسها
```bash
mysqldump -u root -p --all-databases > all_backup.sql
```
---
### ✅ ۴. بکاپ فقط از ساختار (بدون داده)
```bash
mysqldump -u root -p --no-data mydb > mydb_schema.sql
```
---
### ✅ ۵. بکاپ فقط از دادهها (بدون ساختار جداول)
```bash
mysqldump -u root -p --no-create-info mydb > mydb_data_only.sql
```
---
### ✅ ۶. بکاپ با فشردهسازی gzip
```bash
mysqldump -u root -p mydb | gzip > mydb_backup.sql.gz
```
---
## 🔁 بخش دوم: بازیابی (Restore)
### ✅ ۷. بازیابی یک پایگاهداده از فایل SQL
```bash
mysql -u root -p mydb < mydb_backup.sql
```
> ⚠️ قبل از ریستور، پایگاهداده باید ایجاد شده باشد (اگر در فایل `CREATE DATABASE` موجود نیست):
```bash
mysql -u root -p -e "CREATE DATABASE mydb;"
```
---
### ✅ ۸. بازیابی چند دیتابیس با دستور `--databases`
```bash
mysql -u root -p < multi_backup.sql
```
---
### ✅ ۹. بازیابی فایل فشردهشده gzip
```bash
gunzip < mydb_backup.sql.gz | mysql -u root -p mydb
```
---
### ✅ ۱۰. بازیابی دیتابیس از فایل `all_backup.sql`
```bash
mysql -u root -p < all_backup.sql
```
---
## 🧰 ابزارهای کمکی و نکات پیشرفته
### 🔄 بررسی جدولهای خاص
برای بکاپ فقط یک جدول:
```bash
mysqldump -u root -p mydb users > users_table.sql
```
---
### 📅 زمانبندی بکاپ با `cron`
ویرایش Cronjob:
```bash
crontab -e
```
افزودن بکاپ روزانه:
```bash
0 2 * * * mysqldump -u root -pYourPass mydb > /backup/mydb_$(date +\%F).sql
```
> توجه: برای امنیت، بهتر است رمز عبور را در فایل `.my.cnf` ذخیره کرده و از آن استفاده کنید.
---
## 🛡️ امنیت بکاپها
* بکاپها را در سرور جداگانه یا فضای ابری (مثل S3, FTP یا Google Drive) نگه دارید.
* دسترسی به فایل بکاپ را محدود کنید (`chmod 600`).
* حتماً از رمزنگاری در بکاپهای حساس استفاده کنید (مثلاً با `gpg` یا `openssl`).
---
## ✅ جمعبندی
با استفاده از ابزارهای `mysqldump` و `mysql` میتوانید به سادگی از دیتابیسهای MySQL بکاپ گرفته و در مواقع نیاز، آنها را بازیابی کنید. انجام منظم این عملیات به شما کمک میکند از **از دست رفتن دادهها در زمان بحران جلوگیری** نمایید.