Share via


Manage a SQL Server failover cluster from command line or powershell

Manage a SQL Server failover cluster from command line or powershell

使用Command line或PowerShell管理SQL Server failover Cluster


1.1 目前的Cluster Name

c:\Windows\system32\cluster /prop

PS C:\Users\Administrator.domain>Get-Cluster | fl *

1.2 顯示目前的網域裡的所有Cluster

c:\Winodws\system32>cluster /list

  

PS C:\Users\Administrator.domain>Get-Cluster

PS.Windows 2008 R2必須先Import failover cluster module

PS C:\Windows\system32>Import-Module FailoverClusters

 

2.顯示目前的cluster的所有節點狀態

c:\Winodws\system32>cluster node

 

PS C:\Users\Administrator.domain>Get-ClusterNode

3.顯示Quorum狀態

c:\Winodws\system32>cluster /quorum

PS C:\Users\Administrator.domain>Get-ClusterQuorum

4.顯示所有叢集群組

c:\Winodws\system32>cluster group

 

PS C:\Users\Administrator.domain>Get-ClusterGroup

PS.可以查看目前Quorum在哪一個節點

 

顯示叢集群組(叢集應用程式)屬性

PS C:\Users\Administrator.domain>Get-ClusterGroup "叢集群組" | fl *

 

 

5.顯示所有叢集資源

c:\Winodws\system32>cluster resource

 

PS C:\Users\Administrator.domain>Get-ClusterResource

 

顯示Cluster IP Address

 c:\Winodws\system32>cluster resource "叢集 IP 位址" /priv

 

PS C:\Users\Administrator.domain>Get-ClusterResource "叢集 IP 位址" | Get-ClusterParameter

PS C:\Users\Administrator.domain>Get-ClusterResource "SQL Server" | Get-ClusterParameter

 

6.執行離線與上線

安裝SQL Server Cluster時若沒有指定具名的執行個體,則此SQL Cluster instance的叢集群組名稱為SQL Server (MSSQLSERVER)

以下範例將SQL Server (MSSQLSERVER)叢集群組離線

c:\Winodws\system32>cluster group "SQL Server (MSSQLSERVER)" /Offline

以下範例將SQL Server (MSSQLSERVER)叢集群組上線

c:\Winodws\system32>cluster group "SQL Server (MSSQLSERVER)" /Online

 

PS C:\Users\Administrator.domain>Stop-ClusterGroup "叢集群組"

PS C:\Users\Administrator.domain>Start-ClusterGroup "叢集群組"

 

PS C:\Users\Administrator.domain>Stop-ClusterGroup "SQL Server (MSSQLSERVER)"

PS C:\Users\Administrator.domain>Start-ClusterGroup "SQL Server (MSSQLSERVER)"

 

 

7.執行手動容錯移轉Failover

(1)以下範例將名稱為"叢集群組"的叢集群組failover到另一個節點SQL2K8R2C2。

英文版作業系統預設第一個叢集群組名稱為cluster group

中文版作業系統預設第一個叢集群組名稱為叢集群組

c:\Winodws\system32>cluster group "叢集群組" /move:SQL2K8R2C2
c:\Winodws\system32>cluster group "cluster group" /move:SQL2K8R2C2

PS.以上範例會將Quorum搬移到另一個節點

PS C:\Users\Administrator.domain>Move-ClusterGroup -name "叢集群組" -Node "LAB25SQL2C2"

 

(2)以下範例將名稱為SQL Server (MSSQLSERVER)的叢集群組failover到另一個節點SQL2K8R2C2。

c:\Winodws\system32>cluster group "SQL Server (MSSQLSERVER)" /move:SQL2K8R2C2

 

PS C:\Users\Administrator.domain>Move-ClusterGroup -name "SQL Server (MSSQLSERVER)" -Node "LAB25SQL2C1"

 

(3)以下範例將名稱為 [可用存放裝置] failover到另一個節點SQL2K8R2C2,此範例可以將可用叢集磁碟機的擁有者移到另一個節點。

通常用在,當您希望先在第二個節點SQL2K8R2C2安裝SQL Cluster Instance時,則必須先將可用叢集磁碟機搬移到這個節點。

c:\Winodws\system32>cluster group "可用存放裝置" /move:SQL2K8R2C2

 

顯示叢集網路

PS C:\Users\Administrator.domain>Get-ClusterNetwork

 

列出登陸檢查點(Registry Checkpoint),以下範例是AlwaysOn

c:\Winodws\system32>cluster res /checkpoints

 

Cluster Log

[Windows Server 2012]

使用Powershell。

Run "powershell" as Administrator(也就是以[系統管理員身分]來啟動Windows PowerShell ISE,執行以下PowerShell指令來產生Cluster Log)

import-module failoverclusters

Get-ClusterLog -Destination D:\temp\

Get-ClusterLog

Log會產生在預設路徑:C:\Windows\Cluster\Reports

請到每一個節點的這個路徑下找到log(例如node1_cluster.log and node2_cluster.log)

 

[Windows Server 2008 / 2008 R2]

  1. 登入其中一個節點Node。
  2. 以管理員身分啟動command Line(命令提示字元),輸入以下指令:
  3. CLUSTER LOG /GEN /COPY:"c:\clusterlog"
  4. 命令完成後,會在c:\clusterlog\目錄裡面出現所有節點的Cluster Log檔。(例如node1_cluster.log and node2_cluster.log)

 

[Windows Server 2003]

每個節點的Windows Server 2003 Cluster Log:

預設路徑:

C:\Windows\Cluster\cluster.log

C:\Windows\Cluster\cluster.oml

 

[Windows 2008 Cluster Log Size] 因為使用ETL方式記錄,預設3個100MB

 -- Cluster log Default 100MB (3個100MB,reboot才換檔)
Get-Cluster | fl * 

-- 若為了疑難排解,可以考慮增加為3個300MB
Set-ClusterLog –Size 300

 

[Reference]

Appendix A - Cluster.exe Commands

https://technet.microsoft.com/en-us/library/cc723245.aspx

Failover Clusters Cmdlets in Windows PowerShell
https://technet.microsoft.com/en-us/library/hh847239.aspx
PowerShell for Failover Clustering: Getting Started
https://blogs.msdn.com/b/clustering/archive/2009/05/21/9633316.aspx

Mapping Cluster.exe Commands to Windows PowerShell Cmdlets for Failover Clusters
https://technet.microsoft.com/en-us/library/ee619744(v=ws.10).aspx

Understanding the Cluster Debug Log in 2008
https://blogs.technet.microsoft.com/askcore/2010/04/13/understanding-the-cluster-debug-log-in-2008/

Get-Cluster
https://technet.microsoft.com/en-us/library/ee461012.aspx