Windows故障轉移群集 和 SQLServer AlwaysOn 搭建教程

来源:https://www.cnblogs.com/heige/archive/2023/03/03/17174564.html
-Advertisement-
Play Games

資料庫系統概論—基礎篇(1) 一、緒論 1.資料庫系統概述 1.1資料庫四個基本概念 數據:描述事物的符號記錄 資料庫(DB):存放數據的倉庫 資料庫管理系統(DBMS):位於用戶與操作系統之間的一層數據管理軟體 資料庫系統(DBS):由資料庫,資料庫管理系統,應用程式和資料庫管理員組成 1.2數管 ...


一、準備工作:

1準備域控:伺服器都在同一個域控(以下假設所在域控為 AAA.COM)。

2開啟服務:域控要開啟Remote Procedure Call (RPC)服務。

3安裝角色和服務:納入群集節點的伺服器必須先添加角色和功能 .NET3.5 和 故障轉移群集,防火牆開啟兩個共用埠135445,和端點埠5022,要開啟Remote Registry服務

4建專用域賬號:在域控新建資料庫服務專用賬號 wsfc[email protected],密碼:********

5配置仲裁共用文件夾:去域控下非資料庫節點伺服器上建立一個共用文件夾(如:\\10.0.XXX.XXX\WIN故障轉移群集\共用仲裁盤專用),專門用於仲裁共用文件,授予wsfc[email protected]所有共用許可權。

6資料庫相關

6.1為新建域賬號授權:在各節點伺服器將此wsfc[email protected]加入管理員組,併在服務中將其設置為 SQLSERVER服務的登錄身份,並賦予SQLSERVERsysadmin角色(後邊就用這個賬號登錄SQLSERVER配置AlwaysOn)。

USE master
CREATE LOGIN [AAA\wsfc_sqlserver] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
ALTER SERVER ROLE [sysadmin] ADD MEMBER [AAA\wsfc_sqlserver]
go

6.2整理節點伺服器數據文件夾:每台節點伺服器的資料庫都要放到相同的位置,文件夾路徑要全部相同,副本伺服器上要先按照主伺服器建好文件夾。

6.3設置節點伺服器數據備份共用文件夾:每台節點伺服器建一個專門用於存放資料庫備份及同步文件的文件夾,設置共用,並加上 管理員組 的所有共用許可權(在之前[email protected]已加入管理員組)(註意幹掉預設的EveryOne許可權)。

6.4同步資料庫賬號:在同步之前,在輔助副本伺服器資料庫上先建立好與主副本資料庫一樣的資料庫賬號(用EXEC sp_help_revlogin; 進行導出導入,確保所有副本上的賬號完全一致(包括SID要一致))。

  

二、搭建故障轉移群集

1、選擇節點伺服器

 

2、下一步驗證配置,選“否”。

3、定義群集名稱和虛擬地址。

 

4、下麵就是按你的設置進入自動配置,配置完成如圖。同時域控中會自動生成一條以群集名稱和IP的主機(A)記錄,和電腦。

 

 

 

5、群集創建完成後,本機會自動生成一個用戶CLIUSR,此用戶是用來啟動和運行群集服務的,千萬不要動它,否則會導致群集服務中斷。

 

 

 6、配置群集仲裁(右鍵創建好的群集 >> 更多操作 >> 配置群集仲裁設置)

 

 

 

 

  

三、搭建資料庫AlwaysOn

1、做好第一節第6點的相關準備6、資料庫相關)

2、建立SQL別名(32位):在每台節點伺服器都加上所有節點資料庫別名(實例名稱+IP+),確保可以通過別名訪問對應資料庫。

  

3啟用 AlwaysOnSQLSERVER配置管理器)

  

4、創建資料庫證書(一定要配,否則 AlwaysOn可用性組建好了,但是副本會連接不上(顯示一把紅色的×),)

4.1、在每台節點資料庫,創建並安裝證書:

USE master;
GO
--創建主密鑰。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '******************';
--創建證書。 把CERT_xxx_x1換成自己要的名字。
CREATE CERTIFICATE CERT_xxx_x1 WITH SUBJECT = 'CERT_xxx_x1', START_DATE = '2022-01-01',EXPIRY_DATE = '2099-12-30';
--把剛纔創建的證書備份到文件。 把CERT_xxx_x1換成自己要的名字。
BACKUP CERTIFICATE CERT_xxx_x1 TO FILE = 'D:\DataBase\cert\CERT_xxx_x1.cer';
--創建終結點,設為證書驗證。 把CERT_xxx_x1換成自己要的名字。
CREATE ENDPOINT [Hadr_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT_xxx_x1, ENCRYPTION = REQUIRED ALGORITHM AES)
GO

4.2、在每台節點資料庫,載入群集內其他節點資料庫的證書:

USE master;
CREATE CERTIFICATE CERT_xxx_x1 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x1.cer';
CREATE CERTIFICATE CERT_xxx_x2 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x2.cer';
CREATE CERTIFICATE CERT_xxx_x3 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x3.cer';

5、創建AlwaysOn高可用組(資料庫 >>  Always On高可用性 >> 可用性組 >> 右鍵新建)

5.1、指定主副本&輔助副本

 

5.2、端點(不用配置,預設即可)

 

5.3、偵聽器

 

5.4、只讀路由

 

只讀路由的使用

同一個域AAA:可以使用AG23013,8887 AG23013.AAA.COM,8887 進行訪問。

不同域BBB:可以在BBB域建立一條記錄指向偵聽器的IP進行訪問。

連接字元串預設訪問主副本,可讀寫。如果要只讀,就在連接字元串中添加 ApplicationIntent=ReadOnly;MultiSubnetFailover=true,指定訪問只讀副本實現讀寫分離。

 

5.5、設置數據同步方式

 

5.6、再下一步下一步直到完成就行了,就可以在主副本所在資料庫和輔助副本所在資料庫分別看到下圖:

 

5.7、資料庫裡面的“AlwaysOn高可用組”創建成功後會有如下變化:

5.7.1、在故障轉移群集內會自動產生一個以“可用性組名”命名的角色,角色內已包含偵聽器,如下圖:

 

5.7.2、域控會根據“偵聽器名稱”自動產生一條電腦記錄 和一條主機(A)記錄:

 

 

 

 

四、過程中可能遇到的問題

1、如果要分離資料庫,出現錯誤“無法對資料庫‘XXX‘執行刪除,因為它正用於複製”

解決:先 sp_removedbreplication 'DBNAME';   然後再分離。

2、資料庫“正在還原”

解決:如果後續還要將此資料庫加入到可用性組,就使用:RESTORE DATABASE DBNAME WITH NORECOVERY; 反之使用 WITH RECOVERY

PS:使用WITH RECOVERY後,還要從新添加到可用性組時可能會出現如下錯誤:

  

解決辦法(右鍵資料庫>>所有任務>>還原>>資料庫>>選項菜單>>恢復狀態>>選擇RESTORE WITH NORECOVERY),操作完成後,再去可用性組裡邊的可用性資料庫,右鍵>>聯機:

 

3、執行手動故障轉移後,副本資料庫可能狀態為“未同步”,且無法連接。

解決:在“未同步”的資料庫執行:ALTER DATABASE DBNAME SET HADR RESUME;

4、銷毀群集時,沒有先逐出節點,直接刪群集,導致這個節點加入新的群集時失敗“電腦已加入群集”。

解決:進入註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvcStart項的值應該是2,改為4。

5、在資料庫創建可用性組時,缺少選項“Windows Server 故障轉移群集”,只有兩個選項(EXTERNAL 和 NONE)。

解決:重啟SQLSERVER服務。

6、更改數據的所有者。

解決:ALTER AUTHORIZATION ON DATABASE::DBNAME TO [賬戶]

 

End.  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #!/bin/bash # Author: [王思揚] # Description: [Used to replace multiple files in the program.] start_time=$(date +%s) # Directory for storing new files, ...
  • [暫無答案] 1.硬體中斷號和Linux內核的IRQ號它們是如何映射的?2.當發生硬體中斷之後,ARM64處理器架構做哪些工作?3.為什麼說中斷上下文不能執行睡眠操作?4.一個硬體中斷後,Linux內核如何響應並處理中斷?5.同一類型的軟中斷是否允許多個CPU並行執行?6.軟中斷上下文包括哪幾種情況 ...
  • 上一篇介紹了springboot的代碼壓縮實現,本地調試也是沒有問題,但是當項目部署至伺服器就不行了,還需要Linux配置和下載壓縮所需要的工具ffmpeg,我們伺服器用的是centos7,下麵開始實現步驟。 第一步、先在Linux伺服器配置及下載壓縮插件 一、找到下載目錄 cd /usr/loca ...
  • 環境: DNS伺服器:192.168.10.200 僅主機模式 internet伺服器:192.168.10.123 僅主機模式 web1:10.0.0.100 (安裝apache2)NAT模式 web2:10.0.0.18 (安裝httpd) NAT模式 HAProxy伺服器:10.0.0.8(配 ...
  • 袋鼠雲數棧從2016年發佈第⼀個版本開始,就始終堅持著以技術為核⼼、安全為底線、提效為⽬標、中台為戰略的思想,堅定不移地⾛國產化信創路線,不斷推進產品功能迭代、技術創新、服務細化和性能升級。 在數棧過去的產品迭代中受限於當前組件的版本,積累了很多待解決的問題,隨著新的功能需求不斷增加,很多原先的組件 ...
  • 1.instantclient工具 下載安裝Oracle資料庫的客戶端連接工具“instantclient”,該工具是遠程連接Oracle資料庫的前提,不管是使用PL/SQL或應用程式訪問資料庫都必須安裝該工具。 下載地址:鏈接:https://pan.baidu.com/s/1glZGRJeQ-W ...
  • MySQL主鍵和外鍵知識點 | 主鍵的概念 | 主鍵的創建 | desc 表名 | show create table 表名; | 自增列起 始值設置 | 設置自增列初始值語句 | 自增列步長設置 | 唯一索引知識點 | 創建唯一索引的方式 | 外鍵變種 詳細知識點 | 什麼是外鍵變種 | 外鍵變種... ...
  • 案例需求: 假設用戶需要每個1秒鐘需要統計4秒鐘 視窗中數據的量,然後對統計的結果值進行checkpoint處理 ##### 數據規劃 使用自定義運算元每秒鐘產生大約10000條數據 產生的數據為一個四元組(Long,String,String,Interger)-- (id,name,info,co ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...