標籤:
原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html
這一篇是從0開始搭建SQL Server AlwaysOn 的第三篇,這一篇才真正開始搭建AlwaysOn,前兩篇是為搭建AlwaysOn 做準備的
步驟
這一篇依然使用step by step的方式介紹怎麽搭建AlwaysOn
請先使用本機使用者Administrator登入這兩個叢集節點並執行下面的操作,先不要用域使用者DCADMIN登入
1、兩個叢集節點都需先安裝.NET Framework 3.5(在Windows Server 2012 R2中使用添加功能來安裝)。
2、安裝sqlserver
注意: 一定要用 administrator 賬戶登入 windows server 安裝, 而不是 域賬戶 DCADMIN
選擇全新SQL Server獨立安裝,不要選擇新的SQL Server容錯移轉叢集安裝
至於安裝過程,預設下一步下一步就可以了,跟單機安裝SQL Server沒有區別,這裡就忽略安裝過程了
注意:因為本人的安裝包已經內建SP1補丁包,為了後續避免踩坑,如果沒有安裝SP1或以上補丁包的,請先安裝
注意:如果一開始使用域使用者DCADMIN來登入叢集節點機器,並安裝SQL Server的時候會遇到一個坑,SQL Server安裝程式會串連容錯移轉叢集,但是實際上單機安裝SQL Server根本不需要串連容錯移轉叢集
3、登出叢集節點電腦,然後使用域使用者DCADMIN登入,然後設定SQL Server的啟動賬戶為域使用者DCADMIN
開啟服務管理員,先修改SQL代理的啟動賬戶為域使用者DCADMIN,然後再修改SQL 引擎的啟動賬戶為域使用者DCADMIN
點擊“位置”,修改尋找位置,選中abc.com
點擊“進階”
點擊“立即尋找”,選中DCADMIN
點擊“確定”
輸入欄位使用者DCADMIN的密碼
重啟一下SQL代理服務
重啟之後可以看到登入使用者為[email protected]
同樣,SQL引擎服務也需要同樣的設定
這樣,SQL引擎服務和SQL代理服務都用域使用者DCADMIN啟動
另一個叢集節點的SQL Server也需要做同樣的操作
注意:在叢集節點脫離域之後,SQL引擎服務和SQL代理服務都要用本地服務帳號來啟動,不能再用域使用者來啟動
4、將DCADMIN域使用者加入到兩個叢集節點的SQL Server登入使用者中,伺服器角色選擇sysadmin
先用sa登入SQL Server
添加登入使用者,跟SQL 服務添加啟動賬戶的步驟一樣,將DCADMIN域使用者添加為登入使用者
給予sysadmin許可權
兩個叢集節點都可以用DCADMIN域使用者來登入SQL Server
5、回到SQL Server組態管理員,啟用AlwaysOn可用性群組
注意:叢集節點一定要能進行通訊,如果叢集節點之間斷開通訊,那麼啟用AlwaysOn的時候會報錯
重啟SQL Server
如果AlwaysOn啟用成功,在伺服器屬性裡可以看到啟用HADR為True
6、在其中一個叢集節點的SQL Server中驗證各節點的投票數 ,在其中一個叢集節點的SQL Server上執行
使用下面SQL語句
SELECT * FROM sys.dm_hadr_cluster_members;
SELECT * FROM SYS.[dm_hadr_cluster]
7、再次確保各節點已經關閉防火牆,如果防火牆沒有關閉,那麼在建立可用性群組的時候會彈出下面錯誤
無法將資料庫“test”聯結到可用性複本“xxx”的可用性群組“xx”
針對主副本的串連未處於活動狀態。無法處理該命令(錯誤:35250)
8、在各個節點建立初始資料庫
先備份一個你要在所有節點用的資料庫 AnuoApc.bak , 然後在各個節點還原, 用如下sql:
--注意一定要用NORECOVERY來還原備份USE [master]RESTORE DATABASE [test] FROM DISK = N‘C:\DBBackup\AnuoApc.bak‘ WITH FILE = 1, NOUNLOAD,NORECOVERY, REPLACE, STATS = 5GO
在WIN-5PMSDHUI0KQ上還原記錄備份之後的樣子
9、在“Alwayson高可用性”節點上右鍵選擇“建立可用性群組嚮導
注意:加入到AlwaysOn可用性群組的資料庫必須符合下面要求
(1)資料庫的復原模式必須是“完整”復原模式
(2)資料庫已進行了一次完整備份
(3)需要是使用者庫,系統庫不能加入可用性群組
(4)資料庫可以讀寫,唯讀庫不能加入到可用性群組
(5)資料庫處於多使用者模式
(6)資料庫沒有使用AUTO_CLOSE
(7)不屬於任何其他的可用性群組
(8)資料庫沒有設定資料庫鏡像
一個可用性群組最大支援100個資料庫
10、點擊“下一步”,輸入一個從未使用過的高可用性群組名稱 testAG
11、點擊下一步,選擇要添加的資料庫
12、點擊“下一步”,使用添加副本來將其他節點添加到可用性群組中,並選擇自動容錯移轉節點和同步提交節點,因為我們只有兩個節點
我們將輔助副本設定為可讀,能夠自動容錯移轉,同步提交模式
13、點擊“端點”tab版面設定端點
注意:端點URL使用IP的方式,不要用FQDN長名的方式,因為伺服器通常會有兩個網卡,一個public網卡,一個private網卡,端點建議使用private網卡地址
這樣在端點直接傳送的資料就會經由private網卡來傳送,使用TCP://test.abc.com:5022 這種FQDN長名的方式是不能保證端點資料通過private網卡來傳送
SQL Server服務賬戶使用域使用者DCADMIN來進行身分識別驗證,避免使用認證的方式
14、“備份喜好設定”和“接聽程式”不需要設定,保持預設就行,可用性接聽程式我們後面再添加,可以直接點擊“下一步”
點擊“是”
15、選擇初始資料同步,這裡選擇“僅聯結”模式
16、點擊“下一步”來驗證配置,對應接聽程式配置警告可以忽略,後期來添加接聽程式
因為使用的是“僅聯結”資料庫初始化方式,驗證跳過像可用磁碟空間這樣的檢查
17、點擊“下一步”來檢查並確認之前的配置資訊,若無誤,點擊“完成”。另外,此處也可儲存建立可用性群組指令碼,以便分步診斷故障之用。
18、所有摘要均成功完成,顯示綠色對勾。如果出現黃色警告,則需進行進一步判斷是否成功。若出現紅色錯誤,表示AG建立不成功
注意:如果大家使用奇數叢集節點,並且仲裁配置使用的是節點多數,那麼在建立可用性群組完畢的時候,WSFC仲裁投票配置會顯示警告
點擊警告連結會彈出下面的對話方塊,這個警告其實可以不用理會
19、查看伺服器和資料庫的變化
主副本
資料庫變為已同步
輔助副本
輔助副本這時候是可讀的,在主副本上對test1表做的更改都能同步到輔助副本上的test1表
再看一下容錯移轉叢集管理器
可用性群組變為一個叢集角色
點擊顯示面板可以顯示可用性面板
20、在建立可用性群組後,在“可用性群組接聽程式”上右鍵添加接聽程式來建立接聽程式,選擇靜態IP的網路模式(盡量不要選擇DHCP網路模式),
輸入一個從未使用過的名稱(該名稱將被用來建立網路名稱資源)和訪問連接埠
點擊確定
建立成功
在域控的DNS管理器上會註冊一條A記錄
在AD裡的Computers容器裡會添加一個容錯移轉叢集虛擬網路名稱賬戶
在容錯移轉叢集管理器裡的角色節點,可以看到用戶端訪問名稱和IP地址,用戶端通過這個訪問名稱進行訪問資料庫
使用接聽程式名稱進行登入SQL Server
當然也可以用listener IP來串連SQL Server
在輔助副本添加登入使用者,讓主副本上的登入使用者也可以讀取輔助副本資料
步驟1:查看主庫上該帳號的sid [test]為庫名
SELECT * FROM [test]..sysusers
比如:dalogin 0x99AD266AFD26F841B3E49EF9633B0D4B
步驟2:在副本資料庫上建立對應帳號,其中 sid對應的值是主庫上所查到的sid的值
CREATE LOGIN [dalogin] WITH PASSWORD=N‘xxxxxxx‘,
SID =0x99AD266AFD26F841B3E49EF9633B0D4B, DEFAULT_DATABASE=[test],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
可用性群組的基本管理
注意:盡量用SSMS的UI或TSQL語句來操作可用性群組,不要用容錯移轉叢集管理器來操作
容錯移轉
首先使用 接聽程式名稱來登入SQL Server,查看當前是在主副本是在哪個機器
手動容錯移轉
選中testAG這個可用性群組,右鍵-》容錯移轉
點擊“下一步”
點擊“下一步”
串連到 WIN-5PMSDHUIOKQ這台輔助副本機器
點擊“完成”
開始進行容錯移轉
再一次執行查詢
已經容錯移轉到WIN-5PMSDHUIOKQ這台機
查看一下testAG可用性群組的屬性
執行下面SQL語句,將WIN-7107JJJ2BCC機器設定為可讀副本
USE [master]GOALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N‘WIN-7107JJJ2BCC‘ WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL))GO
執行下面SQL語句測試一下
在當前主副本執行
insert into test1 select 3, ‘test3‘
可以看到資料已經同步過來WIN-7107JJJ2BCC機器,並且資料庫可讀
可讀輔助副本是唯讀,如果要對它進行資料更改則會報錯
print ‘servername: ‘[email protected]@SERVERNAME insert into [test].[dbo].[test1] select 4, ‘test4‘
AlwaysOn相關視圖
--通過這兩個視圖可以查詢AlwaysOn延遲SELECT b.replica_server_name , a.*FROM sys.dm_hadr_database_replica_states a INNER JOIN sys.availability_replicas b ON a.replica_id = b.replica_id --可用性群組所在Windows容錯移轉叢集SELECT * FROM sys.dm_hadr_cluster;SELECT * FROM sys.dm_hadr_cluster_members ;SELECT * FROM sys.dm_hadr_cluster_networks;SELECT * FROM sys.dm_hadr_instance_node_map;SELECT * FROM sys.dm_hadr_name_id_map--可用性群組SELECT * FROM sys.availability_groups;SELECT * FROM sys.availability_groups_cluster;SELECT * FROM sys.dm_hadr_availability_group_states ;--可用性複本SELECT * FROM sys.availability_replicas;SELECT * FROM sys.[availability_read_only_routing_lists]SELECT * FROM sys.dm_hadr_availability_replica_cluster_nodes;SELECT * FROM sys.[dm_hadr_availability_replica_cluster_states]SELECT * FROM sys.[dm_hadr_availability_replica_states]--可用性資料庫SELECT * FROM sys.availability_databases_cluster;SELECT * FROM sys.dm_hadr_database_replica_cluster_states;SELECT * FROM sys.[dm_hadr_auto_page_repair]SELECT * FROM sys.[dm_hadr_database_replica_states]--可用性群組listenerSELECT * FROM sys.availability_group_listener_ip_addresses;SELECT * FROM sys.availability_group_listeners;SELECT * FROM sys.dm_tcp_listener_states;--添加唯讀路由列表ALTER AVAILABILITY GROUP [agtest2]MODIFY REPLICA ON N‘WIN-5PMSDHUI0KQ‘ WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS= READ_ONLY));ALTER AVAILABILITY GROUP [agtest2]modify REPLICA ON N‘WIN-5PMSDHUI0KQ‘ WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N‘TCP://192.168.66.157:1433‘))ALTER AVAILABILITY GROUP [agtest2]MODIFY REPLICA ON N‘WIN-4AE61RVA6UV‘ WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS= READ_ONLY));ALTER AVAILABILITY GROUP [agtest2]modify REPLICA ON N‘WIN-4AE61RVA6UV‘ WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N‘TCP://192.168.66.158:1433‘))
總結
AlwaysOn搭建步驟就介紹到這裡,希望大家跟著我來體驗一下AlwaysOn的強大
同樣的,添加一個輔助副本的操作: 加域、加入容錯移轉叢集、更改仲裁配置、添加輔助副本
按照文章的來操作相信添加輔助副本也不難
還有一個就是遇到問題多看看SQL Server errorlog和WSFC的事件記錄
對於更多資訊可以參考《SQLSERVER2012實施與管理實戰指南》書本
地址: http://product.dangdang.com/1419881008.html
相關文章
http://www.cnblogs.com/stswordman/p/3821538.html
http://www.cnblogs.com/stswordman/p/3850570.html
http://www.cnblogs.com/stswordman/p/3936584.html
http://www.cnblogs.com/stswordman/p/3252549.html#3229105
http://blogs.msdn.com/b/psssql/archive/2012/09/07/how-it-works-sql-server-alwayson-lease-timeout.aspx
http://blogs.msdn.com/b/alwaysonpro/archive/2014/11/26/diagnose-unexpected-failover-or-availability-group-in-resolving-state.aspx
https://msdn.microsoft.com/zh-cn/library/ff878308%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396
http://www.bubuko.com/infodetail-930336.html 建立了一個弱事件,但它位於錯誤對象上 下載補丁解決 (https://www.microsoft.com/en-us/download/details.aspx?id=36468)
http://blogs.msdn.com/b/alwaysonpro/archive/2013/10/30/errors-while-trying-to-create-an-availability-group-listener.aspx 19471錯誤
建立接聽程式錯誤19471,19476 問題
http://blogs.msdn.com/b/alwaysonpro/archive/2013/10/30/errors-while-trying-to-create-an-availability-group-listener.aspx
http://blogs.msdn.com/b/alwaysonpro/archive/2014/03/25/create-listener-fails-with-message-the-wsfc-cluster-could-not-bring-the-network-name-resource-online.aspx
如有不對的地方,歡迎大家拍磚o(∩_∩)o
2015-11-13補充
兩個節點的AlwaysOn ,用共用資料夾做見證磁碟
當自動故障切換的時候,有時候出現,輔助副本正在解析的現象,之前以為是仲裁丟失(WSFC與檔案共用見證失去聯絡),導致WSFC掛掉,後來發現原因是WSFC控制台裡的角色屬性裡面的最大故障數的問題而導致的
推薦將指定時段內的最大故障數設定為10
View Code
2015-12-9補充
卸載叢集
1、先逐個逐出節點
2、叢集node(隨便一個叢集node)上執行下面命令,不能在DC上執行,因為DC沒有安裝容錯移轉叢集,sqltestdemo1為叢集名
Get-Cluster sqltestdemo1 | Remove-Cluster -Force -CleanupAD
3、叢集最後一個節點不能逐出,只能銷毀叢集
4、銷毀叢集後在每個叢集上的powershell裡運行下面命令,以清除一些垃圾
Clear-ClusterNode
5、在域控的AD使用者和電腦介面裡面把叢集虛擬名稱刪除掉
6、重新啟用和禁用alwayson,在alwayson的各個節點上都要操作一遍
刪除可用性群組
1、刪除輔助副本
USE [master]GOALTER AVAILABILITY GROUP [HAGroup01]REMOVE REPLICA ON N‘SQLSVR2‘;GO
2、刪除可用性資料庫
USE [master]GOALTER AVAILABILITY GROUP [HAGroup01]REMOVE DATABASE [SQLDB02];GO
3、刪除接聽程式
USE [master]GOALTER AVAILABILITY GROUP [HAGroup01]REMOVE LISTENER N‘SQLAG01‘;GO
4、刪除可用性群組
USE [master]GODROP AVAILABILITY GROUP [HAGroup01];GO
5、在域控的AD使用者和電腦介面裡面把接聽程式虛擬名稱刪除掉
alwayson注意問題
http://www.cnblogs.com/lyhabc/articles/5310781.html
關於AlwaysOn備份
msdn上和《SQL Server2012實施與管理實戰指南》上都沒有說道主副本所支援的備份類型
經過測試,主副本跟單一實例的SQL Server一樣,完整備份、差異備份、記錄備份都支援
故障切換判斷條件
第一步
lookalive 5秒/次 telnet 1433連接埠 逾時30秒
第二步
isalive 60秒/次 sp_server_diagnoist 逾時60秒 逾時後再執行3次以防誤判
從sql server2012開始使用sp_server_diagnoist比select @@servername判斷更準確
防止sqlserver壓力大導致的誤判
《SQL Server2012實施和管理實戰指南》 P42 P50 P53
副本之間 10秒/次 相互ping,如果不通,比如輔助副本不通,會顯示為disconnect
AlwaysOn注意問題:http://www.cnblogs.com/lyhabc/articles/5310781.html
關於仲裁:http://www.tech-coffee.net/understand-failover-cluster-quorum/
(轉) 從0開始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)