SAO LƯU CSDL: Sao lưu backup 1 cơ sở dữ liệu CSDL là tạo 1 bản sao CSDL , ta có thể dùng bản sao để khôi phục lại CSDL nếu CSDL bị mất.. Khi đến cuối bản sao lưu transaction log, SQL Ser
Trang 1CẤU TRÚC CƠ SỞ DỮ LIỆU CỦA
SQL SERVER 7.0
I.CẤU TRÚC CSDL CỦA SQL SERVER 7.0 :
SQL Server tổ chức dữ liệu lưu trong CSDL thành những thành phần luận lý User làm việc trên những thành phần luận lý này như bảng (table), view, procedure… Thành phần vật lý của những file thì trong suốt (transparent), chỉ có người quản lý CSDL mới được làm việc trên đó
SQL Server có 4 CSDL hệ thống (master, msdb, model, temdb database) và các CSDL của user Hình minh họa
Trang 2• Master database: ghi lại cấu hình hệ thống của SQL Server Nó ghi lại tất cả tài khoản
đăng ký của user và cấu hình hệ thống, những file primary chứa thông tin khởi động của CSDL của user, chứa thông tin khởi động của SQL Server Những thao tác sau gây ra những thay đổi trong master database:
• Tạo , thay đổi, xóa CSDL
• Thay đổi transaction log
• Thêm hay xóa của những sever sử dụng thủ tục hệ thống như sp-addserver (thêm server) and sp-dropserver (bỏ server).
• Temdb database: chứa những bảng tạm và những stored procedure tạm Những bảng
tạm và những stored procedure của user khi nối kết vào hệ thống được lưu trong temdb database Khi SQL khởi động thì tất cả các bảng tạm và các stored procedure trong temdb database đều mất
Stored procedure: là 1 tập hợp biên dịch trước của những câu lệnh của
Transact-SQL được lưu và xử lý như 1 đơn vị (unit) Stored procedure sẵn sàng cho việc quản lý SQL Server và hiển thị thông tin của CSDL, của những người sử dụng SQL Server cung cấp những stored procedure gọi là stored procedure hệ thống
• Model database: được dùng như 1 khuôn mẫu của CSDL trong hệ thống Khi tạo ra 1
CSDL thì phần đầu của CSDL là bản sao của model database, phần còn lại là những trang trống
• Msdb database: SQL Server Agent dùng msdb database để lập kế hoạch alert, job Alert: là 1 định nghĩa của người sử dụng đáp ứng 1 sự kiện của SQL Server Alert có
thể thực thi cả nhiệm vụ định nghĩa hoặc gởi e-mail đến 1 người chỉ định
Job: là sự thực hiện 1 hành động quản lý chứa 1 hoặc nhiều bước, thay thế cho thuật ngữ task của SQL Server 6.5.
II CẤU TRÚC CSDL VẬT LÝ:
Trang 3Cấu trúc trang dữ liệu:
Các hàng dữ liệu (data row) được đưa vào tuần tự ngay sau page header, row offset được bắt đầu từ cuối trang, chỉ đến data row và cho biết byte bắt đầu của data row, kích thước hàng tối đa là 8060 byte
II.2 Extent:
Extent là đơn vị cơ bản chỉ vùng lưu bảng và index Mỗi extent gồm 8 trang liên tục nhau Có 2 loại extent:
• Mixed extent có thể lưu những đối tượng khác nhau
• Uniform extent chỉ có thể lưu 1 đối tượng duy nhất
Trang 4II.3Những loại file trong CSDL:
SQL Server có 3 loại file:
• Primary file: là file bắt đầu của CSDL Mỗi CSDL chỉ có 1 file primary, tên file có phần mở rộng là mdf
• Secondary file: là file lưu những gì còn lại của CSDL mà không chứa trong primary file, có thể có nhiều file secondary, tên file có phần mở rộng là ndf
• Log file: chứa những thông tin trans† tion log , được dùng để khôi phục CSDL, mỗi CSDL có ít nhất 1 log file , tên file có phần mở rộng là ldf
File của SQL Server có 2 tên:
• Logical_file_name: là tên dùng trong những câu lệnh Transact_SQL.
• Os_file _name: là tên file vật lý, chỉ rõ đường dẫn của file
MyDB_primary làtên logical_file_name, c:\Mssql7\Data\MyData1.mdf là tên os_file_name.Những trang trong file được đánh số bắt đầu từ 0 Mỗi file có 1 số ID Mỗi trang trong file gồm cả ID file và số thứ tự trang trong file
Ví dụ: file primary có kích thước 4MB, và secondary có kích thứơc 1 MB
Trang 5Trang đầu tiên trong mỗi file là trang header file chứa thông tin về thuộc tính của file Trang thứ 9 trong primary file là trang khởi động CSDL chứa thông tin về thuộc tính của CSDL.
Trang 6PHẦN VI:
SAO LƯU VÀ KHÔI PHỤC
Trang 7CƠ SỞ DỮ LIỆU (CSDL)
Những nguyên nhân gây ra mất dữ liệu:
I SAO LƯU CSDL:
Sao lưu (backup) 1 cơ sở dữ liệu (CSDL) là tạo 1 bản sao CSDL , ta có thể dùng bản sao để khôi phục lại CSDL nếu CSDL bị mất Bản sao gồm tất cả những file có trong CSDL kể cả transaction log
Transaction log ( hay log file) chứa những dữ liệu thay đổi trong CSDL (Ví dụ như khi
ta thực hiện các lệnh INSERT, UPDATE, DELETE) Transaction log được sử dụng trong suốt quá trình khôi phục để roll forward những transaction hoàn thành và roll back những transaction chưa hoàn thành
Roll back là hủy bỏ giao dịch chưa hoàn thành khi hệ thống xảy ra sự cố,… (hoặc trong
trường hợp sao lưu, khi đã thực hiện xong việc sao lưu mà giao dịch chưa hoàn thành) ( xem chi tiết ở phần Transaction)
Roll forward là khôi phục tất cả giao dịch đã hoàn thành khi hệ thống xảy ra sự cố,…
(hoặc trong trường hợp sao lưu, những giao dịch đã hoàn thành khi đã thực hiện xong việc sao lưu ) ( xem chi tiết ở phần Transaction)
Checkpoint là thời điểm ghi lại tất cả những trang dữ liệu thay đổi lên đĩa.
Ví dụ minh họa roll back và roll forward:
Trang 81 Giao dịch 1 commit trước khi checkpoint, không làm gì cả vì dữ liệu đã được thay đổi trong CSDL ( ứng với số 1 trong hình).
2 Giao dịch 2 và 4 commit sau khi checkpoint nhưng trước khi hệ thống xảy ra sự cố, do đó những giao dịch này được tạo lại từ log file Điều này gọi là roll forward (ứng với số 2 và 4 trong hình)
3 Giao dịch 3 và 5 chưa commit khi hệ thống xảy ra sự cố, do đó những giao dịch này không được thực hiện và trả về CSDL khi chưa xảy ra giao dịch Điề này gọi là roll back (ứng với số 3 và 5 trong hình)
Hình minh họa quá trình khôi phục giao dịch
Checkpoint Hệ thống xảy ra sự cố
Sao lưu 1 transaction log là chỉ sao lưu những thay đổi xảy ra trong transaction log kể từ lần sao lưu transaction log cuối cùng
Sao lưu 1 CSDL ghi lại toàn bộ trạng thái của dữ liệu tại thời điểm thực hiện xong sao lưu
Trong thời gian sao lưu, SQL Server 7.0 cho phép thực hiện việc giao dịch (transaction)
II KHÔI PHỤC (RESTORING) CSDL:
Việc khôi phục 1 bản sao lưu CSDL sẽ trả về CSDL cùng trạng thái của CSDL khi ta thực hiện việc sao lưu Giao dịch (transaction) nào không hoàn thành trong khi sao lưu (backup) CSDL được roll back để đảm bảo tính nhất quán CSDL
Trang 9Khôi phục 1 bản sao lưu transaction log là áp dụng lại tất cả giao dịch (transaction) hoàn thành trong transaction log đối với CSDL Khi áp dụng bản sao lưu transaction log, SQL Server đọc trước transaction log, roll forward tất cả các transaction Khi đến cuối bản sao lưu transaction log, SQL Server roll back tất cả transaction mà không hoàn thành khi ta bắt đầu thực hiện sao lưu, tạo lại trạng thái chính xác của CSDL tại thời điểm bắt đầu thực hiện sao lưu.
Ví dụ minh họa sao lưu (backup) và khôi phục (restore) 1 CSDL có xảy ra giao dịch (transaction) khi thực hiện sao lưu:
1 Bắt đầu backup :giả sử CSDL gồm có các dữ liệu ABC, DEF, GHI, JKL, transaction log file không có dữ liệu vì không có giao dịch nào xảy ra Khi đang thực hiện sao lưu (backup) được một phần dữ liệu thì xảy ra giao dịch, SQL Server 7.0 sẽ ưu tiên cho việc giao dịch trước, việc sao lưu (backup) tạm thời dừng lại
database database backup
ABCDEFGHIJKL
ABCDEF
ABCDEFGHIJKL
ABC=123GHI=456
Trang 103 Khi thực hiện giao dịch (transaction) xong, SQL Server thực hiện tiếp việc sao lưu (backup) , sẽ chép phần còn lại của dữ liệu nhưng dữ liệu đã thay đổi do xảy ra giao dịch database database backup
4 Khi sao lưu xong phần dữ liệu thì sẽ chép tiếp phần transaction log
database database backup
123DEF456JKL
ABC=123GHI=456
ABCDEF456JKL
123DEF456JKL
ABC=123
GHI=456
ABC=123GHI=456
ABCDEF456JKL
ABCDEF456JKL
Trang 11restore database backup
ABCDEFGHIJKL
ABC=123
GHI=456
Trang 12CẤU TRÚC SAO CHÉP DỰ PHÒNG (BACKUP) VÀ
KHÔI PHỤC (RESTORE) CỦA SQL SERVER
7.0
Những thành phần sao lưu và khôi phục của SQL Server cung cấp khả năng tạo 1 bản sao CSDL Bản sao này được lưu ở 1 vị trí xác định để phòng trường hợp SQL Server xảy ra sự cố hay vì 1 trong những lý do đã nêu trên Nếu xảy ra sự cố thì bản sao lưu này được sử dụng để khôi phục lại CSDL SQL Server cải tiến những khả năng sao lưu và khôi phục :
• Chọn lựa cách sao lưu và khôi phục CSDL
- Full database backup: 1 bản sao đầy đủ CSDL
- Transaction log backup: chỉ sao lại transaction log
- Differential backup: chỉ sao lại những trang dữ liệu thay đổi sau lần sao lưu full database backup cuối cùng
- Khôi phục file và filegroup cho phép chỉ khôi phục phần CSDL bị hỏng
• Kiểm tra những phát biểu BACKUP và RESTORE
Người sử dụng có thể thực thi những lệnh này trực tiếp từ những ứng dụng hoặc Script Transact-SQL, stored procedure, và trigger Tuy nhiên, ta thường sử dụng giao diện SQL Server Enterprise Manager để định nghĩa 1 lịch trình (schedule) sao lưu và để SQL Server Agent tự động sao lưu theo lịch trình Database Maintenance Wizard có thể sử dụng để định nghĩa và lên kế hoạch sao lưu cho mỗi CSDL SQL Server tự động làm quá trình sao lưu đến mức nó không cần tác động hoặc cần rất ít sự tác động của người sử dụng hoặc của người quản lý
Script: là 1 tập hợp những câu lệnh của Transact-SQL để thực thi 1 thao tác Script
được lưu như 1 file với phần mở rộng sql
Stored procedure: là 1 tập hợp biên dịch trước của những câu lệnh của Transact-SQL
được lưu và xử lý như 1 đơn vị (unit) Stored procedure sẵn sàng cho việc quản lý SQL Server và hiển thị thông tin của CSDL, của những người sử dụng SQL Server cung cấp những stored procedure gọi là stored procedure hệ thống
Trigger: 1 stored procedure thực thi khi ta thay đổi dữ liệu trong 1 bảng xác định
Trigger thường được tạo ra để ép buộc tính toàn vẹn tham khảo và tính nhất quán giữa những dữ liệu liên quan 1 cách hợp lý trong những bảng khác nhau
• Duy trì tập hợp những bản sao lưu cũ trong msdb database
Msdb database là 1 trong 4 CSDL hệ thống của SQL Server (xem chi tiết msdb database
ở phần Cấu trúc CSDL của SQL Server 7.0)
Trang 13Nếu CSDL nào được khôi phục thì hộp hội thoại Restore Database của SQL Server Enterprise Manager hiện lên danh sách của tất cả các bản backup mới nhất để user lựa chọn Bản backup được chọn sẽ được kiểm tra Nếu user biết được 1 trong những bản backup không có sẵn , ví dụ 1 băng từ bị hư hoặc mất, user có thể chọn lại bản backup đó và SQL Server Enterprise Manager tính toán 1 quá trình khôi phục mới Khi user đồng ý khôi phục thì SQL Server Enterprise Manager tiến hành khôi phục.
Trong hình ta có các bản sao lưu, gồm các loại bản sao, ở đây có bản sao database và các bản sao transaction log, hộp hội thoại Restore Database của SQL Server Enterprise Manager cho phép user chọn bản sao, user muốn khôi phục trạng thái của CSDL đến mức nào thì chọn các bản sao lưu transaction đến mức đó
• Ta có thể thực hiện sao lưu khi CSDL đang sử dụng Quá trình sao lưu và cấu trúc dữ liệu bên trong của SQL Server 7.0 được cải tiến để những bản sao lưu tăng tốc độ truyền dữ liệu lên thiết bị giữ bản sao lưu với ảnh hưởng tối thiểu trên dữ liệu truyền qua giao dịch
• Tốc độ truyền dữ liệu của quá trình sao lưu và khôi phục càng nhanh thì nó càng hỗ trợ cho những CSDL rất lớn Cấu trúc dữ liệu mới trong CSDL của SQL Server 7.0 và giải thuật backup và restore mới tăng đáng kể tốc độ truyền dữ liệu của quá trình sao lưu và khôi phục
• SQL Server 7.0 kiểm tra bản sao lưu trước khi khôi phục
Trang 14• Quá trình sao lưu và khôi phục bị ngắt thì nó sẽ bắt đầu tại thời điểm gần thời điểm bị ngắt khi nó được bắt đầu lại Nếu quá trình sao lưu và khôi phục bị ngắt ( ví dụ: server đang chạy thì mất điện), nó có thể bắt đầu lại từ thời điểm bị ngắt Điều này rất có ích đối với những CSDL lớn
I NHỮNG BACKUP DEVICE:
Backup device: là 1 băng từ (tape), file đĩa, named pipe sử dụng trong quá trình sao lưu hoặc khôi phục
Named pipe: 1 cơ chế giao tiếp giữa các quá trình (interprocess communication – IPC )
mà SQL Server và Open Data Sevices (ODS) sử dụng để cung cấp giao tiếp giữa client và server Named pipe cho phép truy cập tài nguyên chia sẻ trên mạng
Open Data Service: là 1 giao diện trình ứng dụng cho server trong hệ thống
client/server lấy nguồn dữ liệu cung cấp cho client sử dụng
MS SQL Server 7.0 sử dụng Microsoft Tape Format (MSTF) MSTF không chỉ cụ thể những băng từ, nó có thể backup lên cả đĩa hoặc named pipe Mỗi lần SQL Server thực hiện sao lưu, nó sẽ định dạng 1 backup set Backup set được lưu trong 1 đơn vị MSTF gọi là 1 media MSTF media có thể lưu những backup set của những phần mềm khác nhau Ví dụ như 1 media có thể lưu các backup set của WinNT, SQL Server (hình)
Backup set: là đầu ra (output) (toàn bộ CSDL gồm cả những file hệ thống) của 1 lần
thực hiện sao lưu
Backup device gồm đĩa, tape, và named pipe
I.1 Đĩa:
Backup device đĩa là những file trên đĩa cứng hoặc những media lưu trữ đĩa khác Backup device đĩa có thể được định nghĩa trên đĩa cục bộ của server hoặc trên đĩa tài nguyên chia sẻ của mạng
Nếu thực hiện sao lưu trên đĩa của máy tính mạng , sử dụng universal naming convention name (UNC) theo định dạng \\Servername\Sharename\Path\File để chỉ vị trí của file Cũng giống như khi viết file lên đĩa cục bộ, khi ta đọc/ghi file trên đĩa ở xa phải được SQL Server cho phép thông qua tài khoản của user mà SQL Server cấp
Vì sao lưu dữ liệu trên mạng dễ có lỗi ta nên kiểm tra việc sao lưu khi hoàn thành
I.2 Tape:
Backup device tape cũng tương tự như backup device đĩa nhưng
• Tape device phải nối kết với Server đang chạy, không hỗ trợ cho tape device ở xa
Trang 15• Nếu 1 tape đầy nhưng dữ liệu còn thì SQL Server sẽ nhắc chèn vào tape mới.
I.3 Named pipe.
Named pipe cho phép người phát triển phần mềm có thể tạo ra phần mềm của riêng mình có khả năng sao lưu và khôi phục dựa trên SQL Server
SQL Server nhận biết cả tên device vật lý hoặc luận lý
Backup device vật lý là chỉ ra tên backup device cụ thể
Ví dụ:
BACKUP DATABASE accounting
TO DISK = 'C:\Backups\Accounting\Full.Bak'Backup device luận lý là alias (1 tên ngắn ) dùng để chỉ backup device vật lý
Ví dụ:
BACKUP DATABASE accounting
TO Accounting_Backup
II BACKUP MEDIA:
Backup media là 1 vùng lưu trữ vật lý thật sự dùng để lưu backup CSDL, transaction log, file
Backup media: là đĩa, băng từ, named pipe dùng để lưu backup set
Ví dụ, 1 backup device là C:\Backup\Accounting\Full.bak chỉ backup media, nơi đĩa sẽ chứa file này; tương tự cho tape \\.\TAPE0
Khi tạo 1 bản sao, SQL Server có thể chọn 1 trong những cách sau:
• Backup device dùng media (đĩa hay tape) lần đầu
Khi khởi tạo media, SQL Server sẽ tạo ra media header, tất cả các nội dung trên media đều bị xóa, không thể lấy lại được
Media header: là thông tin về media gồm tên của media, tên phần mềm tạo
media, …
Trong 1 media có nhiều backup set, mỗi backup set cũng có backup header Backup header gồm những thông tin về loại backup device, loại sao lưu (full database, transaction log, differential hoặc filebackup), ngày/giờ bắt đầu và kết thúc sao lưu, kích thước của bản sao lưu
Trang 17• Nối tiếp với backup đã tồn tại trên media Một backup set được ghi lên media đã sử dụng thì chỉ có thể ghi nối tiếp backup set cuối cùng Ví dụ: một media có 5 backup set, không thể bỏ qua 3 backup set đầu để ghi đè lên backup set thứ tư , chỉ có thể ghi nối tiếp ở cuối backup thứ năm Mặc định, SQL Server luôn luôn nối backup set mới vào các backup set có trên media.
• Ghi đè lên backup set trước đã ghi lên media
Một media có thể chứa cả các backup set của những phần mềm khác như những backup set của Windows NT, các backup set đều được đánh số Điều này cho phép backup set dùng để khôi phục sẽ được tham khảo dễ dàng Ví dụ media có 4 backup set, có 2 backup set của SQL Server và 2 của WinNT Để khôi phục backup set thứ hai của SQL Server, ta chỉ ra vị trí thứ tư để khôi phục
III QUÁ TRÌNH SAO LƯU VÀ KHÔI PHỤC:
SQL Server 7.0 dùng những giải thuật tiêu chuẩn công nghệ fuzzy (industry-standard fuzzy) Những giải thuật mới này có nhiều ưu điểm cho những user:
• Lệnh BACKUP chạy nhanh hơn và ít ảnh hưởng đến sự thay đổi dữ liệu của user khi phát biểu này đang xử lý
• Lệnh RESTORE nhanh hơn
Quá trình khôi phục sẽ khôi phục lại trạng thái của CSDL đến lúc lệnh BACKUP hoàn tất Trong những bản (version) trước của SQL Server, lệnh LOAD ( tương đương với lệnh RESTORE của SQL Server 7.0) khôi phục lại trạng thái của CSDL đến lúc lệnh DUMP bắt đầu (tương đương với lệnh BACKUP của SQL Server 7.0) Trong quá trình sao lưu và khôi phục của SQL Server:
• Những extent (xem chi tiết extent ở phần Cấu trúc CSDL của SQL Server 7.0) chứa
dữ liệu được ghi vào backup set mà không để ý đến việc user thay đổi những page
dữ liệu (xem chi tiết page ở phần Cấu trúc CSDL của SQL Server 7.0) đồng thời
trong suốt quá trình backup Tuy nhiên , điều này không có nghĩa là những page trong backup được lưu ở trạng thái không khôi phục được và mâu thuẫn nhau Nó cũng cho phép thao tác backup sao chép những page nối tiếp nhau
• Transaction log được sao như 1 phần của backup
Lệnh RESTORE sẽ :
• Tạo lại CSDL nếu nó không tồn tại và khởi tạo những extent trong CSDL Bước này được bỏ qua nếu CSDL tồn tại lúc thực thi lệnh RESTORE