2012年6月25日 星期一

如何透過T-SQL進行Database Mirroring的節點角色切換

        之前的文章已有介紹到許多關於Database Mirroring的部份,相信大家都有一定的了解,本篇這次再來介紹,在Database Mirroring的架構下,如果要有自動 Failover 的功能時,就必須要有第三台Witness進行監控的動作,但是實際的情況下,可以只能有兩台進行,這時就必須以手動的方式進行 Failover 的動作。

        但是當 Principal 的主機無法提供服務時,該如何透過第二個節點(Mirror)接任Principal的角色,由於當第一個節點無法服務時,此時無法透過GUI的方式進行切換,所以本篇就來介紹該如何進行。

前導文章:
SQL Server - 如何建立 Database Mirroring
http://caryhsu.blogspot.tw/2011/12/sql-server-database-mirroring.html
SQL Server 2012 AlwaysOn vs. Database Mirroring
http://caryhsu.blogspot.tw/2012/04/sql-server-2012-alwayson-vs-database.html


第一台(Principal)無法服務時,如何進行手動的Failover的方式。

當第一台(Principal)無法服務時,無法透過GUI進行切換的動作,所以必須透過下列的方法進行。

1、您的Database Mirroring只有兩台,但是建議您先將作業模式更改為 [不具有自動容錯移轉的高安全性(同步)],藉以減少日後手動進行容錯移轉時,造成資料遺失的可能性。
ALTER DATABASE [Database Name] SET SAFETY FULL
GO



2、當Principal 的主機無法服務時,請執行下列的語法進行 Principal 與 Mirror角色的對換。
ALTER DATABASE [Database Name] SET PARTNER
FORCE_SERVICE_ALLOW_DATA_LOSS


3、當原本的Principal上線時,您可以透過下列的指令讓Database Mirroring繼續進行同步。
ALTER DATABASE [Database Name] SET PARTNER RESUME



參考網址:
ALTER DATABASE Database Mirroring (Transact-SQL)
http://msdn.microsoft.com/en-us/library/bb522476.aspx

關鍵字:SQL ServerDatabase Mirroring

沒有留言:

張貼留言