Backup và Restore trong SQL Server
· 3 min read
Trong bài viết này, chúng ta sẽ tìm hiểu về các phương pháp backup và restore database trong SQL Server.
Các loại Backup
Full Backup
-- Tạo Full Backup
BACKUP DATABASE TenDatabase
TO DISK = 'C:\Backup\TenDatabase_Full.bak'
WITH INIT, NAME = 'TenDatabase-Full Database Backup';
Differential Backup
-- Tạo Differential Backup
BACKUP DATABASE TenDatabase
TO DISK = 'C:\Backup\TenDatabase_Diff.bak'
WITH DIFFERENTIAL, INIT,
NAME = 'TenDatabase-Differential Database Backup';
Transaction Log Backup
-- Tạo Transaction Log Backup
BACKUP LOG TenDatabase
TO DISK = 'C:\Backup\TenDatabase_Log.trn'
WITH INIT, NAME = 'TenDatabase-Transaction Log Backup';
Restore Database
Restore Full Backup
-- Restore Full Backup
RESTORE DATABASE TenDatabase
FROM DISK = 'C:\Backup\TenDatabase_Full.bak'
WITH REPLACE, RECOVERY;
Restore với Differential
-- Restore Full Backup
RESTORE DATABASE TenDatabase
FROM DISK = 'C:\Backup\TenDatabase_Full.bak'
WITH NORECOVERY;
-- Restore Differential Backup
RESTORE DATABASE TenDatabase
FROM DISK = 'C:\Backup\TenDatabase_Diff.bak'
WITH RECOVERY;
Restore Transaction Log
-- Restore Full Backup
RESTORE DATABASE TenDatabase
FROM DISK = 'C:\Backup\TenDatabase_Full.bak'
WITH NORECOVERY;
-- Restore Differential Backup
RESTORE DATABASE TenDatabase
FROM DISK = 'C:\Backup\TenDatabase_Diff.bak'
WITH NORECOVERY;
-- Restore Transaction Log
RESTORE LOG TenDatabase
FROM DISK = 'C:\Backup\TenDatabase_Log.trn'
WITH RECOVERY;
Backup Strategy
Full Backup Strategy
-- Tạo Full Backup hàng ngày
BACKUP DATABASE TenDatabase
TO DISK = 'C:\Backup\TenDatabase_Full_' +
CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'
WITH INIT, NAME = 'TenDatabase-Full Database Backup';
Differential Backup Strategy
-- Tạo Differential Backup hàng ngày
BACKUP DATABASE TenDatabase
TO DISK = 'C:\Backup\TenDatabase_Diff_' +
CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'
WITH DIFFERENTIAL, INIT,
NAME = 'TenDatabase-Differential Database Backup';
Transaction Log Backup Strategy
-- Tạo Transaction Log Backup mỗi giờ
BACKUP LOG TenDatabase
TO DISK = 'C:\Backup\TenDatabase_Log_' +
CONVERT(VARCHAR(8), GETDATE(), 112) + '_' +
CONVERT(VARCHAR(2), DATEPART(HOUR, GETDATE())) + '.trn'
WITH INIT, NAME = 'TenDatabase-Transaction Log Backup';
Maintenance Plan
Tạo Maintenance Plan
- Mở SQL Server Management Studio
- Mở Maintenance Plans
- Tạo New Maintenance Plan
- Thêm các task:
- Check Database Integrity
- Shrink Database
- Reorganize Index
- Rebuild Index
- Update Statistics
- Clean Up History
- Backup Database
Best Practices
- Lên lịch backup tự động
- Lưu trữ backup ở nhiều vị trí
- Kiểm tra tính toàn vẹn của backup
- Theo dõi dung lượng backup
- Tài liệu hóa quy trình restore
Monitoring và Maintenance
Kiểm tra Backup History
SELECT
database_name,
backup_start_date,
backup_finish_date,
backup_size,
backup_type
FROM msdb.dbo.backupset
ORDER BY backup_start_date DESC;
Kiểm tra Backup Files
RESTORE FILELISTONLY
FROM DISK = 'C:\Backup\TenDatabase_Full.bak';
Kiểm tra Backup Header
RESTORE HEADERONLY
FROM DISK = 'C:\Backup\TenDatabase_Full.bak';
Kết luận
Backup và Restore là những chức năng quan trọng trong việc bảo vệ dữ liệu. Một chiến lược backup tốt sẽ giúp đảm bảo tính liên tục của hệ thống và khả năng phục hồi dữ liệu khi cần thiết. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu về Bảo mật trong SQL Server.