適用於:SQL Server - Linux
本教學課程說明如何為 Linux 上的 SQL Server 建立和設定可用性群組 (AG)。 不同於 Windows 上的 SQL Server 2016 (13.x) 和更早版本,不論是否先建立基礎 Pacemaker 叢集,您都可以啟用 AG。 如果需要整合叢集,則會在稍後才進行。
本教學課程包含下列工作:
- 啟用可用性群組。
- 建立可用性群組端點和憑證。
- 使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 來建立可用性群組。
- 建立 Pacemaker 的 SQL Server 登入和權限。
- 在 Pacemaker 叢集(僅限外部類型)中建立可用性群組資源。
必要條件
部署 Pacemaker 高可用性叢集,如為 Linux 上的 SQL Server 部署 Pacemaker 叢集中所述。
啟用可用性群組功能
不同於在 Windows 上,您無法使用 PowerShell 或 SQL Server 組態管理員來啟用可用性群組 (AG) 功能。 在 Linux 底下,您必須使用 mssql-conf 來啟用此功能。 有兩種方式可啟用可用性群組功能:使用 mssql-conf 公用程式,或手動編輯 mssql.conf 檔案。
重要
即使在 SQL Server Express 上,也必須針對僅限組態複本啟用 AG 功能。
使用 mssql-conf 公用程式
在命令提示字元中,發出下列命令:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
編輯 mssql.conf 檔案
您也可以修改位在 mssql.conf 檔案夾下的 /var/opt/mssql 檔案,新增下列幾行:
[hadr]
hadr.hadrenabled = 1
重新啟動 SQL Server
如同在 Windows 上,啟用可用性群組之後必須使用下列命令重新啟動 SQL Server:
sudo systemctl restart mssql-server
建立可用性群組端點和憑證
可用性群組會使用 TCP 端點進行通訊。 在 Linux 底下,只有在使用憑證來進行驗證時,才支援 AG 的端點。 您必須將某個執行個體的憑證還原到在相同 AG 中作為複本參與的所有其他執行個體上。 即使是僅限配置的複本,也需要憑證程序。
建立端點和還原憑證只能透過 Transact-SQL 完成。 您也可以使用非 SQL Server 產生的憑證。 您也需要一個處理序來管理和取代任何過期的憑證。
重要
如果您打算使用 SQL Server Management Studio 精靈來建立 AG,您仍然需要在 Linux 上使用 Transact-SQL 來建立和還原憑證。
如需各種命令可用選項的完整語法 (包括額外的安全性),請參閱:
注意
雖然您將建立可用性群組,但端點類型是使用 FOR DATABASE_MIRRORING 的,因為某些基礎層面曾經與現在已淘汰的功能共用。
此範例會建立三節點設定的憑證。 執行個體名稱稱為 LinAGN1、LinAGN2 與 LinAGN3。
在
LinAGN1上執行下列指令碼,以建立主要金鑰、憑證和端點,以及備份憑證。 在此範例中,會針對端點使用一般的 TCP 通訊埠 5022。CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN1_Cert WITH SUBJECT = 'LinAGN1 AG Certificate'; GO BACKUP CERTIFICATE LinAGN1_Cert TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN1_Cert, ROLE = ALL ); GO在
LinAGN2上執行相同的動作:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN2_Cert WITH SUBJECT = 'LinAGN2 AG Certificate'; GO BACKUP CERTIFICATE LinAGN2_Cert TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN2_Cert, ROLE = ALL ); GO最後,在
LinAGN3上執行相同的順序:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN3_Cert WITH SUBJECT = 'LinAGN3 AG Certificate'; GO BACKUP CERTIFICATE LinAGN3_Cert TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN3_Cert, ROLE = ALL ); GO使用
scp或其他公用程式,將憑證的備份複製到將成為 AG 一部分的每個節點。針對此範例:
- 複製
LinAGN1_Cert.cer到LinAGN2與LinAGN3。 - 複製
LinAGN2_Cert.cer到LinAGN1與LinAGN3。 - 複製
LinAGN3_Cert.cer到LinAGN1與LinAGN2。
- 複製
將擁有權以及與所複製憑證檔案相關聯的群組變更為
mssql。sudo chown mssql:mssql <CertFileName>在
LinAGN2上建立與LinAGN3和LinAGN1相關聯的執行個體層級登入和使用者。CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GO警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
在
LinAGN2_Cert上還原LinAGN3_Cert和LinAGN1。 擁有其他複本的憑證是 AG 通訊和安全性的重要方面。CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO請授予與
LinAG2和LinAGN3相關的登入以連接至LinAGN1之端點的權限。GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO在
LinAGN1上建立與LinAGN3和LinAGN2相關聯的執行個體層級登入和使用者。CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GO在
LinAGN1_Cert上還原LinAGN3_Cert和LinAGN2。CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO請授予與
LinAG1和LinAGN3相關的登入以連接至LinAGN2之端點的權限。GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO在
LinAGN1上建立與LinAGN2和LinAGN3相關聯的執行個體層級登入和使用者。CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO在
LinAGN1_Cert上還原LinAGN2_Cert和LinAGN3。CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO請授予與
LinAG1和LinAGN2相關的登入以連接至LinAGN3之端點的權限。GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
建立可用性群組
本節說明如何使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 來建立 SQL Server 的可用性群組。
使用 SQL Server Management Studio
本節顯示如何使用 SSMS 搭配 [新增可用性群組精靈],建立叢集類型為「外部」的 AG。
在 SSMS 中,展開 [Always On 高可用性],使用滑鼠右鍵按一下 [可用性群組],然後選取 [新增可用性群組精靈]。
在 [簡介] 對話方塊上,選取 [下一步]。
在 [指定可用性群組選項] 對話方塊中,輸入可用性群組的名稱,然後在下拉式清單中選取
EXTERNAL或NONE的叢集類型。 應在部署 Pacemaker 時使用外部方法。 「None」適用於特定情境,例如讀取擴展。此外,選擇資料庫層級健康情況偵測的選項是可選的。 如需此選項的詳細資訊,請參閱可用性群組資料庫層級健康狀態偵測容錯移轉選項。 選取 [下一步]。在 [選取資料庫] 對話方塊中,選取將參與 AG 的資料庫。 每個資料庫都必須有完整備份,才能將它加入可用性群組(AG)。 選取 [下一步]。
在 [指定複本] 對話方塊中,選取 [新增複本]。
在 [連線到伺服器] 對話方塊中,輸入將作為次要複本之 SQL Server 的 Linux 執行個體名稱,以及要連線的認證。 選取 [連線]。
針對將包含僅設定用複本或其他次要複本的實例,重複前兩個步驟。
三個執行個體現在應該都會列在 [指定複本] 對話方塊中。 如果針對真正的次要複本使用 [外部] 叢集類型,請確定 [可用性模式] 與主要複本相符,而且容錯移轉模式設定為 [外部]。 對於僅用作設定的複本,請選擇「僅限設定」可用性模式。
下列範例顯示的 AG 包含兩個複本、一個「外部」類型叢集,以及一個僅限設定複本。
下列範例顯示的 AG 包含兩個複本、一個「無」類型叢集,以及一個僅限設定複本。
如果您想要變更備份喜好設定,請選取 [備份喜好設定] 索引標籤。如需 AG 的備份喜好設定詳細資訊,請參閱設定 Always On 可用性群組的次要複本上的備份。
如果針對讀取縮放使用可讀取次要複本,或建立叢集類型為「無」的 AG,您可以選取 [接聽程式] 索引標籤來建立接聽程式。您也可以稍後再新增接聽程式。 若要建立接聽程式,請選擇 [建立可用性群組接聽程式] 選項,然後輸入名稱、TCP/IP 連接埠,以及要使用靜態或自動指派的 DHCP IP 位址。 請記住,對於叢集類型為「無」的 AG,IP 應為靜態,並設定為主要的 IP 位址。
如果接聽程式是為可讀取的案例建立,SSMS 17.3 或更新版本允許在精靈中建立唯讀路由。 您也可以在稍後透過 SSMS 或 Transact-SQL 新增它。 現在設定唯讀路由:
選取 [唯讀路由] 索引標籤。
輸入唯讀複本的 URL。 這些 URL 與端點相似,不同之處在於它們使用執行個體的連接埠,而不是端點。
選取每個 URL,然後從底部選取可讀取複本。 若要複選,請按住 SHIFT 或選取並拖曳。
選取 [下一步]。
選擇次要複本將如何初始化。 預設值是使用自動播種,這需要參與 AG 的所有伺服器上具有相同的路徑。 您也可以讓精靈執行備份、複製和還原 (第二個選項);如果您已在複本上手動備份、複製及還原資料庫,請將它加入 (第三個選項);或者,稍後再新增資料庫 (最後一個選項)。 如同憑證,如果您要手動建立備份並複製它們,則必須在其他複本上設定備份檔案上的權限。 選取 [下一步]。
在 [驗證] 對話方塊中,如果所有項目都未傳回為 [成功],請進行調查。 有些警告是可接受且不致命的,例如如果您未建立監聽器。 選取 [下一步]。
在 [摘要] 對話方塊上,選取 [完成]。 現在開始建立 AG 的程序。
當 AG 建立完成時,在結果中按 [關閉]。 您現在可以在複本上的動態管理檢視,以及 SSMS 中的 [Always On 高可用性] 資料夾底下看到 AG。
使用 Transact-SQL
本節顯示使用 Transact-SQL 建立 AG 的範例。 建立 AG 之後,可以設定接聽程式和唯讀路由。 您可以使用 ALTER AVAILABILITY GROUP 來修改 AG 本身,但無法在 SQL Server 2017 (14.x) 中變更叢集類型。 如果您無意建立叢集類型為「外部」的 AG,則必須刪除它並重新建立成叢集類型為「無」。 如需詳細資訊和其他選項,請參閱下列連結:
範例 A:兩個複本與一個僅限設定的複本(外部叢集類型)
此範例示範如何建立使用僅配置複本的雙副本可用性群組 (AG)。
在將作為主要複本的節點上執行,此主要複本包含資料庫的完整可讀寫版本。 此範例使用自動植入。
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATIC), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', AVAILABILITY_MODE = CONFIGURATION_ONLY); GO在連線到另一個複本的查詢視窗中,執行下列命令,將複本加入至 AG,並起始從主要複本到次要複本的植入程序。
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO在連接到僅限設定複本的查詢視窗中,將它加入可用性群組(AG)。
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
範例 B - 使用唯讀路由的三個複本 (外部叢集類型)
此範例顯示三個完全複本,以及如何將唯讀路由設定為 AG 初始建立過程的一部分。
在將作為主要複本的節點上執行,此主要複本包含資料庫的完整可讀寫版本。 此範例使用自動植入。
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE < DBName > REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN2.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433') ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433') ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433') ) LISTENER '<ListenerName>' ( WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433 ); GO關於此設定的一些注意事項:
-
AGName是可用性群組的名稱。 -
DBName是與可用性群組搭配使用之資料庫的名稱。 它也可以是以逗號分隔的名稱清單。 -
ListenerName是不同於任何基礎伺服器/節點的名稱。 它將會和IPAddress一起註冊在 DNS 中。 -
IPAddress是與ListenerName相關聯的 IP 位址。 它也是唯一的,且不與任何伺服器/節點相同。 應用程式和使用者使用ListenerName或IPAddress來連線到 AG。 -
SubnetMask是IPAddress的子網掩碼。 在 SQL Server 2019 (15.x) 及舊版中,其為255.255.255.255。 在 SQL Server 2022 (16.x) 及更新版本中,其為0.0.0.0。
-
在連線到另一個複本的查詢視窗中,執行下列命令,將複本加入至 AG,並起始從主要複本到次要複本的植入程序。
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO針對第三個複本重複步驟 2。
範例 C:使用唯讀路由的兩個複本 (無叢集類型)
此範例示範如何使用「無」叢集類型建立兩個複本設定。 它用於不需要容錯移轉的讀取擴展場景。 這會使用循環法功能,建立實際作為主要副本的接聽程式,以及唯讀路由。
在將作為主要複本的節點上執行,此主要複本包含資料庫的完整可讀寫版本。 此範例使用自動植入。
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = NONE) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name')) ), SECONDARY_ROLE( ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>' ) ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>', FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ('LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name') )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>') ), LISTENER '<ListenerName>' (WITH IP = ( '<PrimaryReplicaIPAddress>', '<SubnetMask>'), Port = <PortOfListener> ); GO位置:
-
AGName是可用性群組的名稱。 -
DBName是將會與可用性群組搭配使用之資料庫的名稱。 它也可以是以逗號分隔的名稱清單。 -
PortOfEndpoint是所建立端點使用的連接埠號碼。 -
PortOfInstance是 SQL Server 執行個體使用的連接埠號碼。 -
ListenerName是一個與任何基礎複本都不同的名稱,但實際上並不會被使用。 -
PrimaryReplicaIPAddress是主要複本的 IP 位址。 -
SubnetMask是IPAddress的子網掩碼。 在 SQL Server 2019 (15.x) 及舊版中,其為255.255.255.255。 在 SQL Server 2022 (16.x) 及更新版本中,其為0.0.0.0。
-
將次要複本加入 AG,並起始自動植入。
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
建立 Pacemaker 的 SQL Server 登入和權限
在 Linux 上運行的 SQL Server 下的 Pacemaker 高可用性叢集,需要存取 SQL Server 執行個體,並獲得可用性群組本身的許可。 這些步驟會建立登入和相關聯的權限,以及說明 Pacemaker 如何登入 SQL Server 的檔案。
在連線到第一個複本的查詢視窗中,執行下列指令碼:
CREATE LOGIN PMLogin WITH PASSWORD ='<password>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GO在節點 1 上,輸入命令
sudo emacs /var/opt/mssql/secrets/passwd這會開啟 Emacs 編輯器。
在編輯器中輸入下列兩行:
PMLogin <password>按住
Ctrl鍵,然後按X,再按C,以離開並儲存檔案。執行
sudo chmod 400 /var/opt/mssql/secrets/passwd以鎖定檔案。
在將會作為複本的其他伺服器上,重複步驟 1-5。
在 Pacemaker 叢集 (僅限外部) 中建立可用性群組資源
在 SQL Server 中建立可用性群組之後,如果指定「外部」叢集類型,就必須在 Pacemaker 中建立對應的資源。 有兩個與 AG 相關聯的資源:AG 本身和 IP 位址。 如果您未使用接聽程式功能,則設定 IP 位址資源是選擇性的,但建議您這麼做。
所建立的 AG 資源是稱為「複製品」的資源類型。 AG 資源基本上在每個節點上都有複本,而且有一個稱為「主資源」的控制資源。 主伺服器與裝載主要複本的伺服器相關聯。 其他伺服器會裝載次要複本(一般或僅限設定),並且在故障轉移時可以提升為主節點。
使用下列語法建立 AG 資源:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=true其中
NameForAGResource是指定給 AG 之叢集資源的唯一名稱,而AGName是所建立 AG 的名稱。建立將與接聽程式功能相關聯之 AG 的 IP 位址資源。
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>其中
NameForIPResource是 IP 資源的唯一名稱,而IPAddress是指派給資源的靜態 IP 位址。為了確保 IP 位址和 AG 資源在相同的節點上執行,必須設定共置限制式。
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITY其中
NameForIPResource是 IP 資源的名稱,而NameForAGResource是 AG 資源的名稱。建立排序限制式,以確保 AG 資源會在 IP 位址之前啟動並執行。 雖然共置限制隱含了排序限制,但這一步驟將強制執行該限制。
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>其中
NameForIPResource是 IP 資源的名稱,而NameForAGResource是 AG 資源的名稱。
後續步驟
在本教學課程中,您已了解如何為 Linux 上的 SQL Server 建立和設定可用性群組。 您已了解如何:
- 啟用可用性群組。
- 建立 AG 端點和憑證。
- 使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 來建立 AG。
- 建立 Pacemaker 的 SQL Server 登入和權限。
- 在 Pacemaker 叢集中建立 AG 資源。
對於大部分的 AG 管理工作(例如升級和故障轉移),請參閱: