Top Menu

Marquee

Blog chia sẽ kiến thức, kinh nghiệm, thủ thuật và các vấn đề IT.....

Backup And Restore SQL Server

Chiến Lược Phc Hi D Liu (Data Restoration Strategy)

Có mt điu mà chúng ta phi chú ý là hu như bt kỳ database nào cũng cn được phc hi vào mt lúc nào đó trong sut chu kỳ sng ca nó. Là mt người Database Administrator bn cn phi
gim ti đa s ln phi phc hi d liu, luôn theo dõi, kim tra thường xuyên đ phát hin các trc trc trước khi nó xy ra. Phi d phòng các biến c có th xy ra và bo đm rng có th nhanh chóng phc hi d liu trong thi gian sm nht có th được.

Các dng biến c hay tai ha có th xy ra là:

Ðĩa cha data file hay Transaction Log File hay system file b mt
Server b hư hng
Nhng thm ha t nhiên như bão lt, đng đt, ha hon
Toàn b server b đánh cp hoc phá hy
Các thiết b dùng đ backup - restore b đánh cp hay hư hng
Nhng li do vô ý ca user như l tay delete toàn b table chng hn
Nhng hành vi mang tính phá hoi ca nhân viên như c ý đưa vào nhng thông tin sai lc.
B hack (nếu server có kết ni vi internet).
Bn phi t hi khi các vn đ trên xy ra thì bn s làm gì và phi luôn có bin pháp đ phòng c th cho tng trường hp c th. Ngoài ra bn phi xác đnh thi gian ti thiu cn phc hi d liu và đưa server tr li hot đng bình thường.

Các Loi Backup

Ð có th hiu các kiu phc hi d liu khác nhau bn phi biết qua các loi backup trong SQL Server

Full Database Backups : Copy tt c data files trong mt database . Tt c nhng user data và database objects như system tables, indexes, user-defined tables đu được backup.
Differential Database Backups : Copy nhng thay đi trong tt c data files k t ln full backup gn nht.
File or File Group Backups : Copy mt data file đơn hay mt file group.
Differential File or File Group Backups : Tương t như differential database backup nhưng ch copy nhng thay đi trong data file đơn hay mt file group.
Transaction Log Backups : Ghi nhn mt cách th t tt c các transactions cha trong transaction log file k t ln transaction log backup gn nht. Loi backup này cho phép ta phc hi d liu tr ngược li vào mt thi đim nào đó trong quá kh mà vn đm bo tính đng nht (consistent).
Trong lúc backup SQL Server cũng copy tt c các hot đng ca database k c hot đng xy ra trong quá trình backup cho nên ta có th backup trong khi SQL đang chy mà không cn phi ngưng li.

Recovery Models

Full Recovery Model : Ðây là model cho phép phc hi d liu vi ít ri ro nht. Nếu mt database trong mode này thì tt c các hot đng không ch insert, update, delete mà k c insert bng Bulk Insert, hay bcp đu được log vào transaction log file. Khi có s c thì ta có th phc hi li d liu ngược tr li ti mt thi đim trong quá kh. Khi data file b hư nếu ta có th backup được transaction log file thì ta có th phc hi database đến thi đim transaction gn nht được commited.
Bulk-Logged Recovery Model : mode này các hot đng mang tính hàng lot như Bulk Insert, bcp, Create Index, WriteText, UpdateText ch được log minimum vào transaction log file đ đ cho biết là các hot đng này có din ra mà không log toàn b chi tiết như trong Full Recovery Mode. Các hot đng khác như Insert, Update, Delete vn được log đy đ đ dùng cho vic phc hi sau này.
Simple Recovery Model : mode này thì Transaction Log File được truncate thường xuyên và không cn backup. Vi mode này bn ch có th phc hi ti thi đim backup gn nht mà không th phc hi ti mt thi đim trong quá kh.
Mun biết database ca bn đang mode nào bn có th Right-click lên mt database nào đó trong SQL Server Enterprise Manager chn Properties->Options->Recovery

Tuy nhiên có th ti đây bn cm thy rt khó hiu v nhng điu trình bày trên. Chúng ta hãy dùng mt ví d sau đ làm rõ vn đ.

Ví d:

Chúng ta có mt database được áp dng chiến lược backup như hình v sau:



Trong ví d này ta schedule mt Full Database Backup vào ngày Ch Nht và Differential Backup vào các ngày th Ba và Th Năm. Transaction Log Backup được schedule hng ngày. Vào mt ngày Th Sáu "đen ti" mt s c xy ra đó là đĩa cha data file ca database b hư và là mt DBA bn được yêu cu phi phc hi d liu và đưa database tr li hot đng bình thường. Bn phi làm sao?

Trước hết bn phi backup ngay Transaction Log File (Trong ví d này Transaction Log File được cha trong mt đĩa khác vi đĩa cha Data File nên không b hư và vn còn hot đng). Người ta còn gi file backup trong trường hp này là " the tail of the log" (cái đuôi). Nếu Log File được cha trên cùng mt đĩa vi Data file thì bn có th s không backup được "cái đuôi" và như vy bn phi dùng đến log file backup gn nht. Khi backup "cái đuôi" này bn cn phi dùng option NO_TRUNCATE bi vì thông thường các Transaction Log Backup s truncate(xoá) nhng phn không cn dùng đến trong transaction log file, đó là nhng transaction đã được commited và đã được viết vào database (còn gi là inactive portion of the transaction log) đ gim kích thước ca log file. Tuy nhiên khi backup phn đuôi không được truncate đ đm bo tính consistent (nht quán) ca database.

Kế đến bn phi restore database t Full Backup File ca ngày Ch Nht. Nó s làm 2 chuyn : copy data, log, index... t đĩa backup vào Data Files và sau đó s ln lượt thc thi các transaction trong transaction log. Lưu ý ta phi dùng option WITH NORECOVERY trong trường hp này (tc là option th 2 "Leave database nonoperational but able to restore additional transaction logs" trong Enterprise Manager). Nghĩa là các transaction chưa hoàn tt (incomplete transaction) s không được roll back. Như vy database lúc này s trong tình trng inconsistent và không th dùng được. Nếu ta chn WITH RECOVERY (hay "Leave database operational. No additional transaction logs can be restored " trong Enterprise Manager) thì các incomplete transaction s được roll back và database trng thái consistent nhưng ta không th nào restore các transaction log backup được na.

Tiếp theo bn phi restore Differential Backup ca ngày Th Năm. Sau đó ln lượt restore các Transaction Log Backup k t sau ln Differential Backup cui cùng nghĩa là restore Transaction Log Backup ca ngày Th Năm và "Cái Ðuôi". Như vy ta có th phc hi data tr v trng thái trước khi biến c xy ra. Quá trình này gi là Database Recovery.

Cũng xin làm rõ cách dùng t Database Restoration và Database Recovery trong SQL Server. Hai t này nếu dch ra tiếng Vit đu có nghĩa là phc hi cơ s d liu nhưng khi đc sách tiếng Anh phi cn thn vì nó có nghĩa hơi khác nhau.

Nh
ư trong ví d trên Khi ta restore database t mt file backup nghĩa là ch đơn gin tái to li database t nhng file backup và thc thi li nhng transaction đã được commit nhưng database có th trong trng thái inconsistent và không s dng được. Nhưng khi nói đến recover nghĩa là ta không ch phc hi li data mà còn bo đm cho nó trng thái consistent và s dng được (usable).

Có th bn s hi consistent là thế nào? Phn này s được nói rõ trong bài sau v Data Integrity. Nhưng cũng xin dùng mt ví d đơn gin đ gii thích. Trong ví d v thế nào là mt transaction bài 3 : Gi s s tin $500 được tr khi account A nhưng li không được cng vào account B và nếu database không được quá trình khôi phc d liu t đng (automatic recovery process) ca SQL rollback thì nó s trng thái inconsistent. Nếu database trng thái ging như trước khi tr tin hoc sau khi đã cng $500 thành công vào account B thì gi là consistent.

Cho nên vic backup Transaction Log File s giúp cho vic recovery data ti bt kỳ thi đim nào trong quá kh. Ði vi Simple Recovery Model ta ch có th recover ti ln backup gn nht mà thôi.

Như vy khi restore database ta có th chn option WITH RECOVERY đ roll back các transaction chưa được commited và database có th hot đng bình thường nhưng ta không th restore thêm backup file nào na, thường option này được chn khi restore file backup cui cùng trong chui backup. Nếu chn option WITH NORECOVERY các transaction chưa được commited s không được roll back do đó SQL Server s không cho phép ta s dng database nhưng ta có th tiếp tc restore các file backup kế tiếp, thường option này được chn khi sau đó ta còn phi restore các file backup khác.

Không l ch có th chn mt trong hai option trên mà thôi hay sao? Không hoàn toàn như vy ta có th chn mt option trung lp hơn là option WITH STANDBY (tc là option 3 "Leave database read-only and able to restore additional transaction logs" trong Enterprise Manager). Vi option này ta s có luôn đc tính ca hai option trên : các incomplete transaction s được roll back đ đm bo database consistent và có th s dng được nhưng ch dưới dng Read-only mà thôi, đng thi sau đó ta có th tiếp tc restore các file backup còn li (SQL Server s log các transaction được roll back trong undo log file và khi ta restore backup file kế tiếp SQL Server s tr li trng thái no recovery t nhng gì ghi trên undo file). Người ta dùng option này khi mun restore database tr li mt thi đim nào đó (a point in time) nhưng không rõ là đó có phi là thi đim mà h mun không, cho nên h s restore tng backup file dng Standby và kim chng mt s data xem đó có phi là thi đim mà h mun restore hay không (chng hn như trước khi b delete hay trước khi mt transaction nào đó được thc thi) trước khi chuyn sang Recovery option.

Backup Database

Trong phn này chúng ta s bàn v cách backup database. Nhưng trước hết chúng ta hãy làm quen vi mt s thut ng dùng trong quá trình backup và restore. Có nhng t ta s đ nguyên tiếng Anh mà không dch.

Thut Ng Gii Thích
Backup Quá trình copy toàn b hay mt phn ca database, transaction log, file hay file group hình thành mt backup set. Backup set được cha trên backup media (tape or disk) bng cách s dng mt backup device (tape drive name hay physical filename)
Backup Device Mt file vt lý (như C:\SQLBackups\Full.bak) hay tape drive c th (như \\.\Tape0) dùng đ record mt backup vào mt backup media.
Backup File File cha mt backup set
Backup Media Disk hay tape được s dng đ cha mt backup set. Backup media có th cha nhiu backup sets (ví d như t nhiu SQL Server 2000 backups và t nhiu Windows 2000 backups).
Backup Set Mt b backup t mt ln backup đơn được cha trên backup media.

Chúng ta có th to mt backup device c đnh (permanent) hay to ra mt backup file mi cho mi ln backup. Thông thường chúng ta s to mt backup device c đnh đ có th dùng đi dùng li đc bit cho vic t đng hóa công vic backup. Ð to mt backup device dùng Enterprise Manager bn chn Management->Backup ri Right-click->New Backup Device. Ngoài ra bn có th dùng sp_addumpdevice system stored procedure như ví d sau:

USE Master
Go
Sp_addumpdevice 'disk' , 'FullBackupDevice' , 'E:\SQLBackups\Full.bak'
Ð backup database bn có th dùng Backup Wizard hoc click lên trên database mun backup sau đó Right-click->All Tasks->Backup Database... s hin ra window như hình v sau:



Sau đó da tùy theo yêu cu ca database mà chn các option thích hp. Ta có th schedule cho SQL Server backup đnh kỳ.

Restore Database

Trước khi restore database ta phi xác đnh được th t file cn restore. Các thông tin này được SQL Server cha trong msdb database và s cho ta biết backup device nào, ai backup vào thi đim nào. Sau đó ta tiến hành restore. Ð restore bn Right-click->All Tasks->Restore database... s thy window như hình v sau:



Nếu bn restore t mt instance khác ca SQL Server hay t mt server khác bn có chn From device option và chn backup device (file backup) tương ng .

Lưu ý nếu bn mun overwrite database có sn vi data được backup bn có th chn option Force restore over existing database như hình v sau:



Bn có th chn leave database operational hay nonoperational tùy theo trường hp như đã gii thích trên.

Tóm li trong bài này chúng ta đã tìm hiu mt chút lý thuyết v backup và restore database trong SQL Server. Ð có th hiu rõ hơn bn cn phi thc tp hay làm th đ có thêm kinh nghim. Trong bài sau chúng ta s bàn v đ tài Data Integrity nghĩa là làm sao đ đm bo data cha trong database là đáng tin cy và không b "lũng l" như cách nói bình dân mà tôi thường hay dùng.

Không có nhận xét nào: