單一伺服器陣列中鏡像資料庫的容錯移轉及復原
本文說明如何使設定成使用高可用性資料庫鏡像的 Microsoft Office SharePoint Server 2007 伺服器陣列進行容錯移轉並復原;本文是延續<使用 SQL Server 資料庫鏡像設定單一伺服器陣列的可用性>中所述的程序。
本文包含下列章節:
鏡像資料庫的自動容錯移轉程序
鏡像資料庫的手動容錯移轉程序
對鏡像容錯移轉進行監視及發出警示
作業:容錯移轉所有其餘資料庫
作業:更新連線別名
容錯回復
摘要
如果執行鏡像資料庫的 Office SharePoint Server 2007 環境發生容錯移轉,則必須執行下列程序:
主體伺服器上一或多個資料庫需透過自動或手動方式,容錯移轉至鏡像伺服器。
主體伺服器上所有其他資料庫都要強制容錯移轉。
建議您使用 Microsoft SQL Server 2005 警示和作業來監視鏡像,並強制所有資料庫容錯移轉。
所有前端網頁伺服器和參照資料庫的電腦,其中的連線別名都要重設成指向鏡像伺服器。
鏡像資料庫的自動容錯移轉程序
若主體伺服器與其餘資料庫鏡像設定之間失去通訊,但鏡像伺服器和見證伺服器之間仍保持通訊,就會發生自動容錯移轉。
注意
如果所有伺服器執行個體失去通訊,就不會發生自動容錯移轉,即使見證伺服器和鏡像伺服器之間後來又可以彼此通訊。
觸發自動容錯移轉後,會產生下列程序:
如果主體伺服器仍在執行,就會將主體資料庫的狀態變更為 DISCONNECTED,並使所有用戶端與主體資料庫中斷連線。
見證伺服器和鏡像伺服器會將主體伺服器登錄為無法使用。
如果重做佇列中有任何待處理的記錄,鏡像伺服器就會完成向前復原鏡像資料庫。套用記錄所需的時間視系統速度、最近的工作負載,以及重做佇列中的記錄大小而定。
當先前的主體伺服器重新加入工作階段,它會認定其容錯移轉夥伴此時已擁有主體角色。先前的主體伺服器會接替鏡像的角色,並使其資料庫成為鏡像資料庫。新的鏡像伺服器會儘快將新的鏡像資料庫與主體資料庫進行同步處理。新鏡像伺服器在重新同步處理資料庫後,就可以再次容錯移轉,但是方向會相反。
如需自動容錯移轉的詳細說明,請參閱自動容錯移轉 (https://go.microsoft.com/fwlink/?linkid=83690&clcid=0x404)。
鏡像資料庫的手動容錯移轉程序
執行手動容錯移轉,通常是因為主體伺服器和鏡像伺服器都還在執行。管理員需謹慎決定,是否將使用中資料庫從主體資料庫切換成鏡像資料庫。
在手動容錯移轉過程中會發生下列程序:
管理員連線到主體伺服器,並為每個資料庫發出下列 Transact-SQL 命令:
USE master; ALTER DATABASE <database_name> SET PARTNER FAILOVER; -- where database_name is the mirrored database.
這個陳述式會對鏡像伺服器起始立即轉換,將其角色轉換成主體角色。
在先前的主體伺服器上,用戶端會與資料庫中斷連線,也會回復未認可的交易。
若是手動容錯移轉與包含見證伺服器的自動容錯移轉設定合併執行,則主體伺服器和鏡像伺服器就會自動互換角色。
對鏡像容錯移轉進行監視及發出警示
您可以使用 SQL Server 警示來監視鏡像作業,並執行強制容錯移轉作業。這些作業和警示應同時用於 SQL Server 的主體執行個體和鏡像執行個體上。
警示:偵測單一資料庫從主體切換成鏡像
在以下警示中,Transact-SQL 命令是用來偵測是否有任何資料庫切換成對應鏡像資料庫。
SELECT * FROM Database_MIRRORING_STATE_CHANGE
WHERE State=8 AND (databasename='Central Administration' OR databasename='Configuration'
ORdatabasename='SSP'
OR databasename=’SSP Content'
OR databasename='SSP Search'
OR databasename='WSS Search'
OR databasename='Content_<port>' )
作業:容錯移轉所有其餘資料庫
發生偵測警示之後,請執行作業,將所有資料庫容錯移轉到對應鏡像資料庫。
下列範例提供了一個 Transact-SQL 指令碼,您可以在作業執行過程中利用該指令碼,以容錯移轉所有鏡像資料庫。
USE master;
DECLARE i CURSOR
READ_ONLY
FOR
SELECT name FROM sys.databases WHERE database_id IN
(SELECT database_id FROM sys.database_mirroring WHERE mirroring_state=4)
DECLARE @name varchar(255)
DECLARE @cmd varchar(1000)
OPEN i
FETCH NEXT FROM i INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
set @cmd = 'ALTER Database [' + @name + '] SET PARTNER FAILOVER;'
exec (@cmd)
DECLARE @message varchar(100)
SELECT @message = 'Failover for : ' + @name
PRINT @message
END
FETCH NEXT FROM i INTO @name
END
CLOSE i
DEALLOCATE i
GO
作業:更新連線別名
容錯移轉之後,與 SQL Server 連線別名關聯的資料庫伺服器名稱,必須在所有執行 Office SharePoint Server 2007 的電腦上,從主體伺服器變更成鏡像伺服器。
注意
每個 Web 應用程式中的參考並不會有所變更,因此,在容錯移轉後不需要在 Office SharePoint Server 2007 中執行任何工作。
建立要在容錯移轉完成之後執行的 SQL Server 作業。 在該作業中,執行一個使別名值的登錄設定變更成鏡像的命令。
\Registry\Machine\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo
<alias> = REG_SZ DBMSSOCN,DBMirror
注意
用於執行 SQL Server 作業與警示的帳戶必須具備適當的權限,才可變更執行 Office SharePoint Server 2007 之電腦上的登錄值。如需詳細資訊,請參閱將使用權限指派給登錄機碼 (https://go.microsoft.com/fwlink/?linkid=116137&clcid=0x404)。
如需建立此作業的範例,請參閱<使用資料庫鏡像的 SharePoint 高可用性個案研究 (白皮書)>。
容錯回復
若要容錯回復到主體伺服器,您必須以手動方式讓資料庫容錯回復。您可以使用相同 SQL Server 作業,來自動執行容錯回復,並重設 SQL Server 用戶端連線別名。您必須在執行這些作業之前,先在作業中變更值。
摘要
設定單一伺服器陣列環境中所執行的鏡像作業之後,建議您最好測試一下容錯移轉和容錯回復的流程、警示、作業和指令碼。如果有一部資料庫發生容錯移轉,您可以寫些指令碼,在讓所有其他資料庫容錯移轉到鏡像伺服器之前,先嘗試容錯回復到主體伺服器。
下載本書
本主題隨附於下列可下載的叢書中,以便於閱讀與列印: