(轉) 從0開始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

來源:互聯網
上載者:User

標籤:

原文地址: 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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.