تفاوت Full، Differential و Transaction Log Backup
SQL Server سه نوع اصلی Backup دارد که هرکدام هدف متفاوتی دارند. یک استراتژی خوب معمولاً هر سه را با هم ترکیب میکند، نه فقط یکی از آنها.
Full Backup
یک نسخهی کامل از کل پایگاهداده در لحظهی گرفتن Backup. این نوع، پایه و اساس هر استراتژی بازیابی است — هر Restore ای با یک Full Backup شروع میشود.
BACKUP DATABASE ShopDB TO DISK = N'D:\Backups\ShopDB_full.bak' WITH INIT, COMPRESSION;
Differential Backup
فقط تغییرات نسبت به آخرین Full Backup را ذخیره میکند (نه نسبت به آخرین Differential). چون معمولاً حجمش خیلی کمتر از Full است، سریعتر گرفته میشود و فضای کمتری اشغال میکند.
BACKUP DATABASE ShopDB TO DISK = N'D:\Backups\ShopDB_diff.bak' WITH DIFFERENTIAL, COMPRESSION;
Transaction Log Backup
فقط قابل استفاده روی Recovery Model های FULL یا BULK_LOGGED است. تمام تراکنشهای ثبتشده از آخرین Log Backup را ذخیره میکند و بهطور همزمان، Log را Truncate میکند (توضیح کامل در این راهنما). این تنها روشی است که امکان بازیابی تا لحظهی دقیق (Point-in-Time Recovery) را فراهم میکند.
BACKUP LOG ShopDB TO DISK = N'D:\Backups\ShopDB_log.trn';
مقایسهی سریع
| نوع Backup | چه چیزی ذخیره میکند | حجم | سرعت Restore |
|---|---|---|---|
| Full | کل پایگاهداده | زیاد | پایهی همیشه لازم |
| Differential | تغییرات از آخرین Full | متوسط | سریعتر از Log های زیاد |
| Transaction Log | همهی تراکنشها از آخرین Log Backup | کم (ولی تعداد زیاد) | امکان Point-in-Time Recovery |
یک استراتژی رایج و عملی
ترتیب Restore کردن
برای بازگرداندن کامل پایگاهداده، باید Backup ها را به همان ترتیبی که گرفته شدهاند Restore کنی:
-- ۱. بازگرداندن آخرین Full Backup (بدون بازکردن پایگاهداده هنوز) RESTORE DATABASE ShopDB FROM DISK = N'D:\Backups\ShopDB_full.bak' WITH NORECOVERY; -- ۲. بازگرداندن آخرین Differential Backup RESTORE DATABASE ShopDB FROM DISK = N'D:\Backups\ShopDB_diff.bak' WITH NORECOVERY; -- ۳. بازگرداندن Log Backup ها بهترتیب، تا لحظهی موردنظر RESTORE LOG ShopDB FROM DISK = N'D:\Backups\ShopDB_log.trn' WITH RECOVERY;
برای جزئیات بیشتر و رفع خطاهای رایج این فرآیند، راهنمای رفع خطاهای رایج هنگام Restore کردن Database را ببین.
جمعبندی
- Full Backup پایهی هر استراتژی است.
- Differential حجم کمتری دارد و روی آخرین Full ساخته میشود.
- Transaction Log Backup تنها راه Point-in-Time Recovery است و Log را هم Truncate میکند.
- ترتیب Restore باید دقیقاً مطابق ترتیب گرفتن Backup ها باشد.
سوالات متداول دربارهی این موضوع
Differential Backup چه چیزی را ذخیره میکند؟
تمام تغییرات انجامشده از آخرین Full Backup. برای Restore به آخرین Full و آخرین Differential نیاز داری.
برای Point-in-Time Restore چه چیزهایی لازم است؟
پایگاهداده باید در Full Recovery Model باشد و زنجیرهی Full، (اختیاری) Differential و همهی Log Backupها تا لحظهی موردنظر را داشته باشی.
هر چند وقت Log Backup بگیرم؟
به حداکثر دادهای که میتوانی از دست بدهی (RPO) بستگی دارد؛ مثلاً هر ۱۵ دقیقه یا هر ساعت.
میخوای مفاهیم تراکنش و بازیابی را کامل یاد بگیری؟
دورهی رایگان SQLFarsi را با درس تراکنشها ادامه بده.
ادامهی یادگیری