摘要:[SQL SERVER] Always On Step by Step ~ 三. Always On 唯讀路由、其他備註、注意事項
唯讀路由須用以下語法建立
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'節點一主機名稱' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'節點一主機名稱' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://節點一主機名稱:1433'));
//設定節點一允許ALL CONNECTIONS,設定Read Only Routin URL為 TCP://xxx:1433
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'節點二主機名稱' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'節點二主機名稱' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://節點二主機名稱:1433'));
//設定節點二允許ALL CONNECTIONS,設定Read Only Routin URL為 TCP://xxx:1433
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'節點一主機名稱' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('節點二主機名稱','節點一主機名稱')));
//設定若節點一收到ReadOnly請求,則先連到第二台,失敗在連第一台
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'節點二主機名稱' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('節點一主機名稱','節點二主機名稱')));
GO
//設定若節點二收到ReadOnly請求,則先連到第一台,失敗在連第二台
唯讀路由ReadOnly Intent
驅動程式 |
多重子網路容錯移轉 |
應用程式的意圖 |
唯讀路由 |
多重子網路容錯移轉:快速單一子網路端點容錯移轉 |
多重子網路容錯移轉:SQL 叢集執行個體的具名執行個體解析 |
SQL Native Client 11.0 ODBC |
是 |
是 |
是 |
是 |
是 |
SQL Native Client 11.0 OLEDB |
否 |
是 |
是 |
否 |
否 |
具有連接修補程式的 ADO.NET 與 .NET Framework 4.0* |
是 |
是 |
是 |
是 |
是 |
具有連接修補程式的 ADO.NET 與 .NET Framework 3.5 SP1** |
是 |
是 |
是 |
是 |
是 |
Microsoft JDBC Driver 4.0 for SQL Server |
是 |
是 |
是 |
是 |
是 |
需要使用 .net framework 3.5 以上版本才支援
ApplicationIntent=ReadOnly
MultiSubnetFailover=True
這兩個連線字串屬性
備份喜好設定
慣用次要
指定應該在次要複本上進行備份,但是主要複本是唯一線上複本的情況例外。 在此情況下,應該在主要複本上進行備份。 這是預設選項。
僅次要
指定絕對不能在主要複本上執行備份。 如果主要複本是唯一的線上複本,不應該進行備份。
主要
指定備份一定要在主要複本上進行。
任何複本
指定當您選擇要執行備份的複本時,您希望備份作業忽略可用性複本的角色。 請注意,備份作業可能會評估其他因素,例如每個可用性複本的備份優先權,連同其操作狀態和連接狀態。
設定後,若使用維護計畫備份,會依照所選的備份喜好設定判斷是否為設定的備份複本
是否慣用備份的函數
SELECT sys.fn_hadr_backup_is_preferred_replica('DB1')
若是為1則為慣用的備份複本,不是慣用備份複本則為0
Always On相關檢視表
sys.dm_hadr_auto_page_repair (Transact-SQL)
sys.dm_hadr_availability_group_states (Transact-SQL)
sys.dm_hadr_availability_replica_cluster_nodes (Transact-SQL)
sys.dm_hadr_availability_replica_cluster_states (Transact-SQL)
sys.dm_hadr_availability_replica_states (Transact-SQL)
sys.dm_hadr_cluster (Transact-SQL)
sys.dm_hadr_cluster_members (Transact-SQL)
sys.dm_hadr_cluster_networks (Transact-SQL)
sys.dm_hadr_database_replica_cluster_states (Transact-SQL)
sys.dm_hadr_database_replica_states (Transact-SQL)
sys.dm_hadr_instance_node_map (Transact-SQL)
sys.dm_hadr_name_id_map (Transact-SQL)
sys.dm_tcp_listener_states (Transact-SQL)
「仲裁模式」(Quorum Mode) 是在 WSFC 叢集層級設定,指出仲裁投票所使用的方法。 容錯移轉叢集管理員公用程式會根據叢集中的節點數來建議仲裁模式。
下列仲裁模式可用於決定何者構成投票仲裁:
- 節點多數:叢集中超過一半的投票節點必須投票肯定,叢集才是狀況良好。
- 節點與檔案共用多數:類似於節點多數仲裁模式,不過遠端檔案共用也會設定為投票見證,而且從任何節點至該共用的連接也會列入肯定投票。 超過一半的可能投票必須是肯定,叢集才是狀況良好。
最佳作法是,見證檔案共用不應位於叢集中的任何節點,而且它對叢集中的所有節點都應該是可見的。
- 節點與磁碟多數:類似於節點多數仲裁模式,不過共用磁碟叢集資源也會指定為投票見證,而且從任何節點至該共用磁碟的連接也會列入肯定投票。 超過一半的可能投票必須是肯定,叢集才是狀況良好。
- 僅限磁碟:共用磁碟叢集資源會指定為見證,而且從任何節點至該共用磁碟的連接會列入肯定投票。
須將異地投票權重改為0
以系統管理員身分執行命令提示字元輸入
Cluster.exe XXXXX node ZZZZZZ /prop NodeWeight=0
初始化方式
· 完整
只有在您的環境符合自動啟動初始資料同步處理的需求時,才選取此選項 (如需詳細資訊,請參閱本主題稍早的<必要條件、限制和建議>)。
如果您選取 [完整],在建立可用性群組之後,精靈會將每個主要資料庫及其交易記錄備份至網路共用,並在裝載次要複本的每個伺服器執行個體上還原這些備份。然後精靈會將每個次要資料庫聯結至可用性群組。
在 [指定所有複本可存取的共用網路位置:] 欄位中,指定裝載複本之伺服器執行個體有權讀寫的備份共用。 如需詳細資訊,請參閱本主題前面的<必要條件>。
· 僅聯結
如果您已經在將裝載次要複本的伺服器執行個體上手動備妥次要資料庫,就可以選取此選項。 然後精靈會將現有的次要資料庫聯結至可用性群組。
· 略過初始資料同步處理
如果要使用您自己的主要資料庫的資料庫和記錄備份,請選取此選項。 如需詳細資訊,請參閱<於 AlwaysOn 次要資料庫啟動資料移動 (SQL Server)��。
注意事項、必要條件
1. 可用性群組的機器不可為網域控制站
2. 可用性群組的SQL SERVER啟動帳號需要相同
3. 共用帳號加入Administrator群組,並要有建立電腦物件權限
4. 可用性群組的機器皆須安裝容錯移轉叢集,但只須在一台設定即可
5. 可用性群組伺服器要相同定序
6. 必須為使用者資料庫,系統資料庫不能加入可用性群組
7. 必須為完整復原模式,且至少完成一次完整備份
8. 一個資料庫只能有一個群組,一個群組只能有一個listener
9. 不可為鏡像資料庫
10. 其他複本的LOGIN帳號要建立
步驟
1. 於AD SERVER新增一個共用使用者帳號,加入admin群組,並於Computers內加入該帳號權限
(Computers內容>安全性>進階>新增>建立電腦物件)
2. 於要加入AlwaysOn的機器上加入AD並安裝容錯移轉叢集
3. 於其中一台建立叢集 > 把要加入AlwaysOn的伺服器都加入節點 > 輸入叢集名稱與IP
4. SQL SERVER組態管理員 >選取SQL SERVER內容 >AlwaysOn頁面 >啟用 (可以看到剛建立的叢集)
5. 於SSMS上點選AlwaysOn >新增>輸入AG名稱>選取要加入資料庫>選取要加入的INSTANCE
6. 選擇初始資料同步方式( FULL , JOIN ONLY , SKIP )
7. 設定仲裁
8. 設定LISTENER