如何做好完善的 SQL Server 2000 資料庫系統備援 與提昇高可用度 資策會教育訓練中心講師 許致學 個人簡介  現任      台灣微軟 特約顧問 詮力科技 商業智慧顧問 環保署廢棄物管制系統 資料庫顧問 資策會教育訓練中心 講師 經歷               認證  MCP  MCP+I  MCSA  MCSE  MCDBA  MCT  PMP 國立中央大學 資訊管理碩士 RUN!PC雜誌 MIS實戰專欄作者 Microsoft 資訊安全日活動 講師 Microsoft EMBA 系列課程 講師 Microsoft TechNet 技術研討會 講師 Microsoft TechEd 2000 /

Download Report

Transcript 如何做好完善的 SQL Server 2000 資料庫系統備援 與提昇高可用度 資策會教育訓練中心講師 許致學 個人簡介  現任      台灣微軟 特約顧問 詮力科技 商業智慧顧問 環保署廢棄物管制系統 資料庫顧問 資策會教育訓練中心 講師 經歷               認證  MCP  MCP+I  MCSA  MCSE  MCDBA  MCT  PMP 國立中央大學 資訊管理碩士 RUN!PC雜誌 MIS實戰專欄作者 Microsoft 資訊安全日活動 講師 Microsoft EMBA 系列課程 講師 Microsoft TechNet 技術研討會 講師 Microsoft TechEd 2000 /

Slide 1

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 2

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 3

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 4

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 5

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 6

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 7

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 8

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 9

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 10

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 11

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 12

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 13

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 14

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 15

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 16

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 17

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 18

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 19

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 20

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 21

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 22

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 23

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 24

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 25

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 26

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 27

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 28

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 29

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 30

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 31

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 32

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 33

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 34

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 35

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 36

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 37

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 38

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 39

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 40

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 41

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 42

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 43

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 44

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 45

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 46

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 47

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 48

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 49

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 50

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 51

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 52

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 53

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 54

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 55

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 56

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 57

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 58

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 59

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 60

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 61

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 62

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 63

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 64

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 65

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 66

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 67

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 68

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 69

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 70

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 71

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 72

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 73

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 74

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 75

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 76

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A


Slide 78

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
資策會教育訓練中心講師
許致學

個人簡介


現任








台灣微軟 特約顧問
詮力科技 商業智慧顧問
環保署廢棄物管制系統 資料庫顧問
資策會教育訓練中心 講師

經歷
















認證

MCP

MCP+I

MCSA

MCSE

MCDBA

MCT

PMP

國立中央大學 資訊管理碩士
RUN!PC雜誌 MIS實戰專欄作者
Microsoft 資訊安全日活動 講師
Microsoft EMBA 系列課程 講師
Microsoft TechNet 技術研討會 講師
Microsoft TechEd 2000 / 2002 / 2003 / 2004 講師
Microsoft Windows Server 2003 上市全省發表會活動 講師
Microsoft SQL Server 2000 High Availability 行易課程 講師
Oracle to SQL Server Migration 研討會 講師
Microsoft MSDN Trend 開發技術戰情高峰會活動 講師
Microsoft SQL Server 2000 安全性管理資源與教學光碟 製作
Microsoft Virtual Server 2005 快速建置營 講師
Microsoft SQL Server 2005 實作一日營 講師

2

本場次內容



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

3

高可用度的要求取決於商業需求


商業需求決定了高可用度的要求






醫院有相對高的停機成本

需要仰賴多種軟硬體的技術
產品或服務的可用度
需要持續不斷地改善產品、服務和流程

4

高可用度的定義


何謂 99.999%?


目標:





提供使用者全年無休 (24X7) 的服務
每年只能有小於 5 分鐘 16 秒的停機時間

思考:




到底需要達到多少個 9?

高可用度的計算公式


(5個9)

2個? 3個?
5個?

A = (F – R) / F





A = 可用度
F = 平均發生毀損的時間 (MTBF)
R = 平均所需的修復時間

5






99999
Unmanaged

< 3 days and 15.6 hours

Well-managed Nodes

< 8.76 hours

Masks some hardware failures

Well-managed Packs and Clones
Masks hardware failures,
< 52.56 minutes
operations tasks (e.g. software upgrades)
Masks some software failures

Well-managed Geoplex

< 5.26 minutes

Masks site failures (power, network, fire, move…)
Masks some operations failures

6

10 9 8 7 6 5 4 3 2 1 0

Cost

為了達到高可用度的成本

99

99.1

99.2

99.3

99.4

99.5

99.6

99.7

99.8

99.9

100

Availability

7

高可用度的時間和成本
擁有總成本的影響因素
1: 硬體和軟體
7: 最終使用者

2: 管理成本或程序
成本

3: 支援

4: 開發

6: 停機

5: 通訊費用
8

SQL 2000 高可用度的成功案例
 Windows 2000 Datacenter Server:
FreeMarkets.com

99.999%

 Windows 2000 Server & Advanced Server:
Nasdaq.com
99.97%
CommerceOne.net
99.97%
HotBot.com
99.99%
DataReturn.com
99.93%
Buy.com
99.98%
Barnes&Noble.com
99.98%
CBSMarketWatch.com
99.98%
9

備援待命選項之比較


Hot Standby


備援伺服器亦擁有主要伺服器的資料







不一定能提供與主要伺服器一致的資料
可能需要手動偵測主要伺服器毀損或停機狀況與手動接續服


Cold Standby


交易記錄檔傳送和複寫

備援伺服器亦擁有主要伺服器的資料,不過…




提供與主要伺服器交易一致的資料
能自動偵測主要伺服器故障狀況與自動接續服務

Warm Standby


結合作業系統叢集服務

備份與還原

還原資料之備份



必須有正確的作業系統和相關軟體等的備份
必須考慮繼續恢復正常服務的延遲狀況是否能接受

10

SQL 2000 之備援待命選項
功能
自動偵測服務中斷

Hot Standby

Warm Standby

Cold Standby

叢集服務

交易式複寫

交易記錄檔傳送

備份/還原















(需搭配NLB)

(需搭配NLB)

(> 20 Sec)
自動容錯接續服務



資料遺失



可能會有部分資
料尚未複寫

可能會有部分資
料尚未傳送

可能會有部分資
料尚未備份

共用儲存磁碟組













備援主機可支援
報表之資料來源

(唯讀)

伺服器登入帳戶
是否同步









資料庫權限
是否同步









備援主機資料表結
構異動是否同步








11

Hot Standby--叢集服務




Windows Server 的叢集服務
自動偵測主要伺服器故障狀況與自動接續
服務
如何自動偵測主要伺服器故障狀況與自動
接續服務

12

Windows Server 的叢集服務


虛擬伺服器




從使用者或是應用程式來看,是以虛擬伺服器
的名稱或是共用 IP 來存取

叢集服務所需要的硬體





伺服器主機(2~8部)
外部網路卡(供用戶端存取)
內部網路卡(Heartbeat)
叢集的共用磁碟陣列

Public Network

Server Cluster
Heartbeat
Node B

Node A
Shared
Disk
Array

13

自動偵測主要伺服器故障狀況
與自動接續服務
用戶端電腦

Node A

Node B
SQL Server

SQL Server
Heartbeat

共用之磁碟陣列

14

如何自動偵測主要伺服器故障
狀況與自動接續服務


作業系統的檢查




透過內部網路卡 (Heartbeat) 檢查另一部主機是否正常

SQL Server 的檢查


每隔五秒執行 LooksAlive 檢查




執行 SELECT @@SERVERNAME 查詢

另一部主機如何自動接續服務






Windows 叢集服務會嘗試在同一部主機重新啟動服務,或是移
轉至另一部主機繼續提供服務
啟動 SQL Server 服務,master 資料庫重新上線
資料庫復原
使用者與應用程式必須重新連線
15

Warm Standby--複寫









發行者、散發者和訂閱者
散發資料的方式
複寫的基本類型
集中式發行者和散發者
建立再度發行者(Republisher)
複寫與其他分散資料方式之比較

16

發行者、散發者和訂閱者
發行者



散發者



訂閱者



資料可以複寫至其他伺服器,
擁有一個或以上的發行集,每
個發行集代表一組相關的資料
包含散發資料庫和儲存歷程記
錄資料及交易與中繼資料的伺
服器
接收複寫資料的伺服器,也可
將資料變更傳回給發行者,或
將資料重新發行到其他的訂閱

17

散發資料的方式

自主性愈高
時間差愈長
合併式複寫

快照式複寫
較適於高可用度
之複寫機制
允許訂閱者立即更新或
佇列更新發行者的快照式複寫
交易式複寫

允許訂閱者立即更新或
佇列更新發行者的交易式複寫
分散式交易

自主性愈低
時間差愈短

18

複寫的基本類型


快照式複寫




交易式複寫





資料及資料庫物件在某一時間點的情狀,完整即時複
製及散發給訂閱者端
資料初始快照集會被傳用至訂閱者端
當發行者端有資料異動,交易會傳送至訂閱者端

合併式複寫




允許發行者端和訂閱者端獨立運作,稍後再將發行者
端和訂閱者端的資料更新合併為相同的結果
資料初始快照集會被傳用至訂閱者端
SQL Server 會追蹤發行者端與訂閱者端已發行資料的
變更
19

集中式發行者和散發者
Berlin
headquarters

London

Moscow

集中式發行者和
遠端散發者
散發者
Paris
Rome
Athens

1

2

3

20

建立再度發行者 (Republisher)
Tokyo republishes
to Beijing, Hong Kong,
and Sydney
Tokyo

Seattle
San Francisco

Beijing

Dallas
Hong Kong

San Francisco
publishes to Seattle,
Dallas, and Tokyo

Sydney
21

複寫與其他分散資料方式之比較
方式

自主性

時間差

複寫

隨複寫類型而異

隨複寫類型而異

分散式交易





分散式查詢





備份和還原





資料轉換服務

特殊用途

特殊用途

22

Warm Standby--交易記錄檔傳送









什麼是交易記錄檔傳送?
交易記錄檔傳送的運作方式
交易記錄檔傳送之相關設定
SQL Server 版本之設定差異
變更伺服器電腦名稱的步驟
交易記錄檔傳送結合網路平衡負載

23

什麼是交易記錄檔傳送?

備份
資料庫

主要伺服器

還原
傳送交易記錄檔備份

資料庫

待命伺服器

24

交易記錄檔傳送的運作方式
監控伺服器

待命伺服器

主要伺服器

1. 備份
交易記錄檔

2. 複製交易記
錄檔之備份

交易記錄檔
備份

3. 還原
交易記錄檔
交易記錄檔
備份

傳送登入帳戶
25

交易記錄檔傳送之相關設定


復原模型





完整復原模型
大量記錄復原模型

安全性



建議採用 Windows 驗證
主要伺服器和待命伺服器需要對監控伺服器有
寫入事件的權限

26

SQL Server 版本之設定差異


交易記錄檔傳送功能之版本差異


企業版




內建於資料庫維護計劃精靈之設定步驟

其他版本


必須自行設定所有相關之備份、還原與監控機制

27

變更伺服器電腦名稱的步驟



變更伺服器的電腦名稱,重新啟動電腦
SELECT @@SERVERNAME







回傳舊的電腦名稱

sp_dropserver '舊的電腦名稱'
sp_addserver '新的電腦名稱' , LOCAL
重新啟動 MSSQLSERVER 服務
SELECT @@SERVERNAME


回傳新的電腦名稱

注意:上述步驟不適用於叢集服務之 SQL Server 虛擬伺服器
28

交易記錄檔傳送結合網路平衡負載
Client

VIP
DIP1

DIP1

NLB Cluster
DIP2

DIP2
Primary
SQL Server

Log Shipping

Secondary
SQL Server

29

Cold Standby--備份與還原











備份簡介
備份時機
如何執行備份
備份方式
備份策略的規劃
還原簡介
如何進行還原
還原毀損的系統資料庫
30

 備份簡介






避免資料遺失
資料庫異動與交易日誌檔
設定資料庫復原模型
SQL Server 的備份

31

避免資料遺失


依據下列事項制定備份策略








如何讓遺失的資料最少
如何復原遺失的資料
如何以最小的花費和時間復原遺失的資料
備份媒體的存放與測試
備份對系統效能的影響

備份週期



線上交易處理系統:較常
線上分析處理系統:不常
32

資料庫異動與交易日誌檔
1

藉由應用程式異動資料

用戶端

緩衝區快取

3 將異動資料寫入
交易記錄檔磁碟
交易記錄檔磁碟

SQL Server
2 將資料讀出並寫入
緩衝區快取,然後修改

資料檔磁碟
4 當 Checkpoint
發生,將已完成的
交易寫入資料庫

33

以備份還原資料之回復情況
試著回答下列狀況:
資料庫最後一次完整備份於週一晚上十點順
利完成,但於週二下午二點毀損,請問資料
庫可以回復至何時的狀態?

若資料庫選項為完整復原模
型,資料庫的資料檔和交易
記錄檔分別儲存於不同的磁
碟組上,且交易記錄檔並未
毀損,則可以還原至下午二


若資料庫選項為簡易復原模
型,或資料庫的資料檔和交
易記錄檔儲存於相同的磁碟
組已經毀損,則僅可以還原
至週一晚上十點

34

以備份還原資料之回復情況
假設備份週期如下圖所示,試著回答下列狀況:
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log

Log

Data

差異備份
Log

Log

Monday

如果下午二點有個 UPDATE 忘了指定
WHERE,而三點的交易記錄檔已經
備份了,請問資料庫可以回復至何時
的狀態?

Log



Log

...

Tuesday

35

設定資料庫復原模型


建立新資料庫時,新資料庫會繼承 model
資料庫的復原模型




完整復原模型
大量記錄復原模型
簡易復原模型

ALTER DATABASE Northwind
SET RECOVERY BULK_LOGGED

36

完整復原模型




資料庫備份與交易記錄檔備份提供完整的媒體錯
誤保護
如果一或多個資料檔毀損的話,媒體復原可以還
原所有已確認的交易,未確認的交易則不會還原
完全復原能將資料庫復原至系統毀損時的情況或
特定時間點




包括 SELECT INTO、CREATE INDEX 與 BULK
INSERT 等大量作業在內的所有作業都會完整記錄下

交易記錄檔所需的空間較大,需要定期備份或是清除
交易記錄檔
37

大量記錄復原模型



當記錄備份包含大量變更時,大量記錄復原模型
只允許資料庫復原至交易記錄檔備份結束時
下列作業不會逐一記錄每一筆異動






SELECT INTO、bcp、BULK INSERT、CREATE
INDEX(包括索引檢視表)、WRITETEXT 與
UPDATETEXT

若要執行資料庫的大量變更時,可以先變更為大
量記錄模型,完成後再變更回完整復原模型,如
此可以提高效能與減少所需的交易記錄檔空間,
同時又能維護伺服器的防護
無法支援特定時間點的復原
38

簡易復原模型





藉由簡單復原模式,可將資料庫復原至最
後一次備份時
交易記錄檔所需的空間較小
無法將資料庫復原至系統毀損時的情況或
特定時間點
類似 SQL Server 7.0 或更早版本的 trunc.
log on chkpt. 資料庫選項

39

SQL Server 的備份




允許使用者可以在備份期間繼續存取資料

備份資料庫原始的檔案位置與資料內容
備份過程的資料庫異動情況會一併記錄至
備份中




發動一個 checkpoint 並記錄目前交易記錄檔
所在的位置(LSN)
將資料庫的所有頁寫入備份媒體
將備份過程期間所發生的全部交易記錄一併寫
入備份媒體中
40

 備份時機





備份系統資料庫的時機
備份使用者資料庫的時機
備份執行期間的限制

41

備份系統資料庫的時機


master 資料庫異動後



CREATE DATABASE、ALTER DATABASE
或 DROP DATABASE
執行系統預存程序




msdb 資料庫異動後




sp_addmessage、sp_grantlogin、
sp_addlogin、sp_addumpdevice…

新增或修改作業、警示和操作員

model 資料庫異動後
42

備份使用者資料庫的時機





新建資料庫之後
新建索引之後
清除交易記錄檔之後





BACKUP LOG WITH NO_LOG 或是
BACKUP LOG WITH TRUNCATE_ONLY

執行 WRITETEXT 或 UPDATETEXT 之後
執行 SELECT...INTO 之後

43

備份執行期間的限制


下列動作於備份期間無法執行






新建或修改資料庫
執行資料庫自動成長
新建索引
壓縮資料庫
執行非日誌之操作

44

 如何執行備份








建立備份裝置
直接備份至檔案
使用多個備份檔案執行備份
常用的 BACKUP 選項
用 BACKUP 選項保護備份內容
如何備份至磁帶機

45

建立備份裝置


建立備份裝置的好處



可以重複使用
方便設定自動備份

備份裝置類型
備份裝置名稱
USE master
EXEC sp_addumpdevice 'disk', 'mybackupfile',
'C:\Backup\MyBackupFile.bak'
備份裝置實體檔案
46

直接備份至檔案





只執行一次的備份
測試備份作業
直接用 BACKUP DATABASE 陳述式


指定媒體類型 (disk, tape, pipe)




磁碟機、磁帶機、具名管道

指定完整路徑和檔案名稱
USE master
BACKUP DATABASE Northwind
TO DISK = 'C:\Temp\Mycustomers.bak'
47

使用多個備份檔案執行備份
Database A

Database B

Media Set
Backup Set

File 1

File 2

File 3

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupA2
BackupA3
BackupB1

BackupA1
BackupB1
BackupA2
BackupA3
BackupB1

48

常用的 BACKUP 選項


指定 INIT 或 NOINIT 選項





NOINIT 選項:附加至備份檔案
INIT 選項:覆寫現有的備份檔案

指定 FORMAT



覆寫備份檔案的內容
將原先媒體集的備份檔案拆開

49

用 BACKUP 選項保護備份內容


指定 PASSWORD 選項





為備份集設定密碼,則執行該備份集的任何還
原都必須提供備份集的密碼
有密碼保護的備份集只有在重新格式化時才會
被覆寫

指定 MEDIAPASSWORD 選項




為媒體集設定密碼,要執行從媒體集還原之作
業時,也必須提供該媒體集的密碼
有密碼保護的媒體集只有在重新格式化時才會
被覆寫
50

如何備份至磁帶機





磁帶機必須安裝於 SQL Server 的本機上
會在磁帶標籤上記錄備份的摘要資訊
磁帶可以同時存放 SQL Server 和非 SQL
Server 的備份


採用 Microsoft Tape Format

51

 備份方式





完整備份
差異備份
交易記錄檔備份






使用 NO_TRUNCATE 選項
清除交易記錄檔

檔案及檔案群組備份

52

完整備份





提供後續其他備份的基準
備份原始檔案、物件和資料
備份部分的交易記錄檔
USE master
EXEC sp_addumpdevice 'disk', 'NwindBac',
'D:\MyBackupDir\NwindBac.bak'
BACKUP DATABASE Northwind TO NwindBac
D:\

Northwind

Data

Log

Backup

NwindBac

53

差異備份







適用於異動頻繁的資料庫
必須先做完整備份
備份自從最後一次完整備份之後所有異動
過的資料
節省備份和還原的時間
BACKUP DATABASE Northwind
TO DISK = 'D:\MyData\MyDiffBackup.bak'
WITH DIFFERENTIAL

54

交易記錄檔備份







必須先做完整備份
不可以設定為簡易復原模型
備份自從最後一次交易記錄檔備份之後,
到目前為止交易記錄檔內所有的資料
截斷(清除)交易記錄檔之中已經寫入資
料庫的交易


如果經常備份交易記錄檔,就可以確保交易記
錄檔不至於太大

USE master
EXEC sp_addumpdevice 'disk', 'NwindBacLog',
'D:\Backup\NwindBacLog.bak'
BACKUP LOG Northwind TO NwindBacLog

55

使用 NO_TRUNCATE 選項





儲存整個交易記錄檔,即使資料庫已經無
法存取
不會截斷(清除)交易記錄檔之中已經寫
入資料庫的交易
將資料庫回復至系統有問題時


可以使資料損失最少

56

清除交易記錄檔


用 BACKUP LOG 陳述式清除交易記錄檔




搭配 TRUNCATE_ONLY 或 NO_LOG 選項

將資料庫設定為簡易復原模型




等同於舊版的 trunc. log on chkpt. 選項
當 checkpoint 發生時,自動將已經完成交易
的資料寫入資料庫

57

檔案及檔案群組備份







適用於超大型資料庫
針對資料庫檔案分別備份
要確定每個資料庫檔案都有備份
搭配交易記錄檔備份,確保資料的一致性
資料表和所屬的索引要一起備份
BACKUP DATABASE Phoneorders
FILE = Orders2 TO OrderBackup2
BACKUP LOG PhoneOrders to OrderLog

58

 備份策略的規劃







完整備份的策略
交易記錄檔備份的策略
差異備份的策略
檔案及檔案群組備份的策略
備份的效能考量

59

完整備份的策略
建立資料庫
和完整備份

Data

Log

Sunday

完整備份

Data

Log

Monday

完整備份

Data

Log

Tuesday

60

交易記錄檔備份的策略
完整備份

Data

Log
Log

Sunday

完整備份

交易記錄檔備份

Log

Log

Log

Data

Log

Monday

61

差異備份的策略
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

62

以交易記錄檔備份還原
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Log



Data

Monday
BACKUP LOG Northwind
TO NwindBackLog
WITH NO_TRUNCATE
RESTORE DATABASE Northwind
FROM NwindBac
WITH NORECOVERY
RESTORE DATABASE Northwind
FROM NwindDiff
WITH NORECOVERY

Log

差異備份
Log

Log

Log



Log

...

Tuesday
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 1, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 2, NORECOVERY
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY

63

檔案及檔案群組備份的策略
交易記錄檔
備份
完整備份
Data

Log

Log

Monday

Log

檔案
備份
Data
File 1

交易記錄檔
備份

Log

Tuesday

Log

交易記錄檔
交易記錄檔
備份
備份
檔案
檔案
備份
備份
Data
File 2

Log

Log

Wednesday

Data
File 3

Log

Log

Thursday

64

指定還原的時間點
交易記錄檔備份
完整備份
Data

Log

交易記錄檔備份
差異備份

Log

Log

Monday

Log



Data

Log

差異備份
Log

Log

Log



Log

...

Tuesday

USE master
RESTORE LOG Northwind
FROM NwindBacLog
WITH FILE = 3, RECOVERY,
STOPAT = 'January 3, 2000 1:30 AM'
65

備份的效能考量





利用多個備份裝置同時執行備份
備份裝置的類型會決定備份執行的速度
指定備份排程在系統非尖峰時段

66

 還原簡介





還原過程
確認備份的內容
執行備份前的準備事項

67

還原過程


執行安全檢查






資料庫是否已經存在
資料庫檔案是否不同
資料庫檔案是否不完整

重建資料庫和所有相關檔案

68

確認備份的內容


RESTORE HEADERONLY




RESTORE FILELISTONLY




包含在備份集中的資料庫檔案

RESTORE LABELONLY




回存特定備份裝置上所有備份集的摘要資訊

傳回特定備份所包含備份媒體的資訊

RESTORE VERIFYONLY





驗證備份但不還原備份
檢查備份集是否完整以及所有媒體是否可讀取
但不會嘗試驗證備份媒體所含資料的結構
69

執行備份前的準備事項


限制資料庫存取




只允許 db_owner、dbcreator 或是
sysadmin 角色的成員可以存取資料庫

備份交易記錄檔



確保資料庫的一致性
如果交易記錄檔尚未毀損,利用 BACKUP
LOG WITH NO_TRUNCATE ,備份自從最後
一次交易記錄檔備份之後的所有資料

70

 如何進行還原





RESTORE 陳述式
指定復原選項
常用的 RESTORE 選項

71

RESTORE 陳述式


還原毀損的使用者資料庫



不需要先刪除毀損的資料庫
自動重建資料、資料庫物件和相關檔案

USE master
RESTORE DATABASE Northwind
FROM NwindBac

72

指定復原選項


指定 RECOVERY 選項





用於最後一份的資料庫備份,後面沒有需要再還原其
他備份時
允許使用者可以存取資料庫

指定 NORECOVERY 選項



用於還原最後一份的資料庫備份之前的所有備份
不允許使用者存取資料庫
RECOVERY

NORECOVERY

NORECOVERY
73

常用的 RESTORE 選項


FILE




MOVE … TO …





指定資料庫檔案要移動至新的位置
將資料庫複製到不同的伺服器

REPLACE




指定欲還原的備份集

即使已有相同名稱的資料庫,也會建立指定的資料庫
與其相關檔案,將現存的資料庫刪除

RESTART



指定在還原作業中斷處重新啟動還原
僅適用於磁帶媒體所導向的還原,以及連結多重磁帶
74
媒體的還原

特殊的還原選項
WITH STOPATMARK
WITH PARTIAL, MOVE…TO

還原毀損的系統資料庫


如果 MSSQLSERVER 服務可以正常啟動




master 資料庫正常,但其他系統資料庫有問題,以系
統資料庫的備份進行還原

如果 MSSQLSERVER 服務無法啟動








master 資料庫不正常,先用 rebuildm 重建所有的系
統資料庫
以參數 –m 啟動 MSSQLSERVER 服務
用 master 資料庫的備份進行還原
正常重新啟動 MSSQLSERVER 服務(不用任何參數)
視需要還原 msdb、model、distribution 資料庫
附加或還原所有的使用者資料庫
76

結論



高可用度簡介
如何做好高可用度





叢集服務—虛擬伺服器
交易記錄檔傳送
複寫
備份與還原策略

77

如何做好完善的
SQL Server 2000
資料庫系統備援
與提昇高可用度
Q&A