Có một điều mà chúng ta phải chú ý là hầu như bất kỳ database nào cũng cần được phục hồi vào một lúc nào đó trong suốt chu kỳ sống của nó. Là một người Database Administrator bạn cần phải giảm tối đa số lần phải phục hồi dữ liệu, luôn theo dõi, kiểm tra thường xuyên để phát hiện các trục trặc trước khi nó xảy ra. Phải dự phòng các biến cố có thể xảy ra và bảo đảm rằng có thể nhanh chóng phục hồi dữ liệu trong thời gian sớm nhất có thể được....
“Chuyên trang dành cho kỹ thuật viên tin học” CHIA SẺ - KINH NGHIỆM - HỌC TẬP - THỦ THUẬT Sao Lưu Phục Hồi Dữ Liệu Có điều mà phải ý database cần phục hồi vào lúc suốt chu kỳ sống Là người Database Administrator bạn cần phải giảm tối đa số lần phải phục hồi liệu, theo dõi, kiểm tra thường xuyên để phát trục trặc trước xảy Phải dự phịng biến cố xảy bảo đảm nhanh chóng phục hồi liệu thời gian sớm Chiến Lược Phục Hồi Dữ Liệu (Data Restoration Strategy) Có điều mà phải ý database cần phục hồi vào lúc suốt chu kỳ sống Là người Database Administrator bạn cần phải giảm tối đa số lần phải phục hồi liệu, theo dõi, kiểm tra thường xuyên để phát trục trặc trước xảy Phải dự phịng biến cố xảy bảo đảm nhanh chóng phục hồi liệu thời gian sớm Các dạng biến cố hay tai họa xảy là: Ðĩa chứa data file hay Transaction Log File hay system file bị Server bị hư hỏng Những thảm họa tự nhiên bão lụt, động đất, hỏa hoạn Toàn server bị đánh cắp phá hủy Các thiết bị dùng để backup - restore bị đánh cắp hay hư hỏng Những lỗi vơ ý user lỡ tay delete tồn table chẳng hạn Những hành vi mang tính phá hoại nhân viên cố ý đưa vào thơng tin sai lạc Bị hack (nếu server có kết nối với internet) Bạn phải tự hỏi vấn đề xảy bạn làm phải ln có biện pháp đề phịng cụ thể cho trường hợp cụ thể Ngoài bạn phải xác định thời gian tối thiểu cần phục hồi liệu đưa server trở lại hoạt động bình thường Các Loại Backup Ðể hiểu kiểu phục hồi liệu khác bạn phải biết qua loại backup SQL Server Full Database Backups : Copy tất data files database Tất user data database objects system tables, indexes, user-defined tables backup Differential Database Backups : Copy thay đổi tất data files kể từ lần full backup gần File or File Group Backups : Copy data file đơn hay file group Differential File or File Group Backups : Tương tự differential database backup copy thay đổi data file đơn hay file group Transaction Log Backups : Ghi nhận cách thứ tự tất transactions chứa transaction log file kể từ lần transaction log backup gần Loại backup cho phép ta phục hồi liệu trở ngược lại vào thời điểm q khứ mà đảm bảo tính đồng (consistent) Trong lúc backup SQL Server copy tất hoạt động database kể hoạt động xảy trình backup ta backup SQL chạy mà khơng cần phải ngưng lại of Recovery Models Full Recovery Model : Ðây model cho phép phục hồi liệu với rủi ro Nếu database mode tất hoạt động không insert, update, delete mà kể insert Bulk Insert, hay bcp log vào transaction log file Khi có cố ta phục hồi lại liệu ngược trở lại tới thời điểm khứ Khi data file bị hư ta backup transaction log file ta phục hồi database đến thời điểm transaction gần commited Bulk-Logged Recovery Model : Ở mode hoạt động mang tính hàng loạt Bulk Insert, bcp, Create Index, WriteText, UpdateText log minimum vào transaction log file đủ biết hoạt động có diễn mà khơng log tồn chi tiết Full Recovery Mode Các hoạt động khác Insert, Update, Delete log đầy đủ để dùng cho việc phục hồi sau Simple Recovery Model : Ở mode Transaction Log File truncate thường xuyên không cần backup Với mode bạn phục hồi tới thời điểm backup gần mà phục hồi tới thời điểm khứ Muốn biết database bạn mode bạn Right-click lên database SQL Server Enterprise Manager chọn Properties->Options->Recovery Tuy nhiên tới bạn cảm thấy khó hiểu điều trình bày Chúng ta dùng ví dụ sau để làm rõ vấn đề Ví dụ: Chúng ta có database áp dụng chiến lược backup hình vẽ sau: Trong ví dụ ta schedule Full Database Backup vào ngày Chủ Nhật Differential Backup vào ngày thứ Ba Thứ Năm Transaction Log Backup schedule ngày Vào ngày Thứ Sáu "đen tối" cố xảy đĩa chứa data file database bị hư DBA bạn yêu cầu phải phục hồi liệu đưa database trở lại hoạt động bình thường Bạn phải làm sao? Trước hết bạn phải backup Transaction Log File (Trong ví dụ Transaction Log File chứa đĩa khác với đĩa chứa Data File nên không bị hư hoạt động) Người ta gọi file backup trường hợp " the tail of the log" (cái đuôi) Nếu Log File chứa đĩa với Data file bạn không backup "cái đuôi" bạn phải dùng đến log file backup gần Khi backup "cái đi" bạn cần phải dùng option NO_TRUNCATE thơng thường Transaction Log Backup truncate(xố) phần không cần dùng đến transaction of log file, transaction commited viết vào database (còn gọi inactive portion of the transaction log) để giảm kích thước log file Tuy nhiên backup phần đuôi không truncate để đảm bảo tính consistent (nhất quán) database Kế đến bạn phải restore database từ Full Backup File ngày Chủ Nhật Nó làm chuyện : copy data, log, index từ đĩa backup vào Data Files sau thực thi transaction transaction log Lưu ý ta phải dùng option WITH NORECOVERY trường hợp (tức option thứ "Leave database nonoperational but able to restore additional transaction logs" Enterprise Manager) Nghĩa transaction chưa hoàn tất (incomplete transaction) không roll back Như database lúc tình trạng inconsistent khơng thể dùng Nếu ta chọn WITH RECOVERY (hay "Leave database operational No additional transaction logs can be restored " Enterprise Manager) incomplete transaction roll back database trạng thái consistent ta restore transaction log backup Tiếp theo bạn phải restore Differential Backup ngày Thứ Năm Sau restore Transaction Log Backup kể từ sau lần Differential Backup cuối nghĩa restore Transaction Log Backup ngày Thứ Năm "Cái Ðuôi" Như ta phục hồi data trở trạng thái trước biến cố xảy Quá trình gọi Database Recovery Cũng xin làm rõ cách dùng từ Database Restoration Database Recovery SQL Server Hai từ dịch tiếng Việt có nghĩa phục hồi sở liệu đọc sách tiếng Anh phải cẩn thận có nghĩa khác Như ví dụ Khi ta restore database từ file backup nghĩa đơn giản tái tạo lại database từ file backup thực thi lại transaction commit database trạng thái inconsistent khơng sử dụng Nhưng nói đến recover nghĩa ta khơng phục hồi lại data mà cịn bảo đảm cho trạng thái consistent sử dụng (usable) Có thể bạn hỏi consistent nào? Phần nói rõ sau Data Integrity Nhưng xin dùng ví dụ đơn giản để giải thích Trong ví dụ transaction Bài : Giả sử số tiền $500 trừ khỏi account A lại không cộng vào account B database không q trình khơi phục liệu tự động (automatic recovery process) SQL rollback trạng thái inconsistent Nếu database trạng thái giống trước trừ tiền sau cộng $500 thành công vào account B gọi consistent Cho nên việc backup Transaction Log File giúp cho việc recovery data tới thời điểm khứ Ðối với Simple Recovery Model ta recover tới lần backup gần mà Như restore database ta chọn option WITH RECOVERY để roll back transaction chưa commited database hoạt động bình thường ta khơng thể restore thêm backup file nữa, thường option chọn restore file backup cuối chuỗi backup Nếu chọn option WITH NORECOVERY transaction chưa commited không roll back SQL Server khơng cho phép ta sử dụng database ta tiếp tục restore file backup kế tiếp, thường option chọn sau ta cịn phải restore file backup khác Khơng lẽ chọn hai option mà thơi hay sao? Khơng hồn tồn ta chọn option trung lập option WITH STANDBY (tức option "Leave database read-only and able to restore additional transaction logs" Enterprise Manager) Với option ta có ln đặc tính hai option : incomplete transaction roll back để đảm bảo database consistent sử dụng dạng Read-only mà thơi, đồng thời sau ta tiếp tục restore file backup lại (SQL Server log transaction roll back undo log file ta restore backup file SQL Server trả lại trạng thái no recovery từ ghi of undo file) Người ta dùng option muốn restore database trở lại thời điểm (a point in time) khơng rõ có phải thời điểm mà họ muốn không, họ restore backup file dạng Standby kiểm chứng số data xem có phải thời điểm mà họ muốn restore hay không (chẳng hạn trước bị delete hay trước transaction thực thi) trước chuyển sang Recovery option Backup Database Trong phần bàn cách backup database Nhưng trước hết làm quen với số thuật ngữ dùng q trình backup restore Có từ ta để nguyên tiếng Anh mà không dịch Thuật Ngữ Giải Thích Backup Q trình copy tồn hay phần database, transaction log, file hay file group hình thành backup set Backup set chứa backup media (tape or disk) cách sử dụng backup device (tape drive name hay physical filename) Backup Device Một file vật lý (như C:\SQLBackups\Full.bak) hay tape drive cụ thể (như \\.\Tape0) dùng để record backup vào backup media Backup File File chứa backup set Backup Media Disk hay tape sử dụng để chứa backup set Backup media chứa nhiều backup sets (ví dụ từ nhiều SQL Server 2000 backups từ nhiều Windows 2000 backups) Backup Set Một backup từ lần backup đơn chứa backup media Chúng ta tạo backup device cố định (permanent) hay tạo backup file cho lần backup Thông thường tạo backup device cố định để dùng dùng lại đặc biệt cho việc tự động hóa cơng việc backup Ðể tạo backup device dùng Enterprise Manager bạn chọn Management->Backup Right-click->New Backup Device Ngồi bạn dùng sp_addumpdevice system stored procedure ví dụ sau: USE Master Go Sp_addumpdevice 'disk' , 'FullBackupDevice' , 'E:\SQLBackups\Full.bak' Ðể backup database bạn dùng Backup Wizard click lên database muốn backup sau Rightclick->All Tasks->Backup Database window hình vẽ sau: of Sau dựa tùy theo yêu cầu database mà chọn option thích hợp Ta schedule cho SQL Server backup định kỳ Restore Database Trước restore database ta phải xác định thứ tự file cần restore Các thông tin SQL Server chứa msdb database cho ta biết backup device nào, backup vào thời điểm Sau ta tiến hành restore Ðể restore bạn Right-click->All Tasks->Restore database thấy window hình vẽ sau: of Nếu bạn restore từ instance khác SQL Server hay từ server khác bạn có chọn From device option chọn backup device (file backup) tương ứng Lưu ý bạn muốn overwrite database có sẵn với data backup bạn chọn option Force restore over existing database hình vẽ sau: Bạn chọn leave database operational hay nonoperational tùy theo trường hợp giải thích of Tóm lại tìm hiểu chút lý thuyết backup restore database SQL Server Ðể hiểu rõ bạn cần phải thực tập hay làm thử để có thêm kinh nghiệm Trong sau bàn đề tài Data Integrity nghĩa để đảm bảo data chứa database đáng tin cậy không bị "lũng lỗ" cách nói bình dân mà tơi thường hay dùng Công ty TNHH đầu tư phát triển tin học GC Com Chuyên trang kỹ thuật máy vi tính cho kỹ thuật viên tin học Điện thoại: (073) - 3.511.373 - 6.274.294 Website: http://www.gccom.net of ... cho phép phục hồi liệu với rủi ro Nếu database mode tất hoạt động không insert, update, delete mà kể insert Bulk Insert, hay bcp log vào transaction log file Khi có cố ta phục hồi lại liệu ngược... để dùng cho việc phục hồi sau Simple Recovery Model : Ở mode Transaction Log File truncate thường xuyên không cần backup Với mode bạn phục hồi tới thời điểm backup gần mà phục hồi tới thời điểm... Backup vào ngày Chủ Nhật Differential Backup vào ngày thứ Ba Thứ Năm Transaction Log Backup schedule ngày Vào ngày Thứ Sáu "đen tối" cố xảy đĩa chứa data file database bị hư DBA bạn yêu cầu phải phục