資料庫系統概論—基礎篇(1) 一、緒論 1.資料庫系統概述 1.1資料庫四個基本概念 數據:描述事物的符號記錄 資料庫(DB):存放數據的倉庫 資料庫管理系統(DBMS):位於用戶與操作系統之間的一層數據管理軟體 資料庫系統(DBS):由資料庫,資料庫管理系統,應用程式和資料庫管理員組成 1.2數管 ...
一、準備工作:
1、準備域控:伺服器都在同一個域控(以下假設所在域控為 AAA.COM)。
2、開啟服務:域控要開啟Remote Procedure Call (RPC)服務。
3、安裝角色和服務:納入群集節點的伺服器必須先添加角色和功能 .NET3.5 和 故障轉移群集,防火牆開啟兩個共用埠135、445,和端點埠5022,要開啟Remote Registry服務。
4、建專用域賬號:在域控新建資料庫服務專用賬號 wsfc[email protected],密碼:********。
5、配置仲裁共用文件夾:去域控下非資料庫節點伺服器上建立一個共用文件夾(如:\\10.0.XXX.XXX\WIN故障轉移群集\共用仲裁盤專用),專門用於仲裁共用文件,授予wsfc[email protected]所有共用許可權。
6、資料庫相關:
6.1、為新建域賬號授權:在各節點伺服器將此wsfc[email protected]加入管理員組,併在服務中將其設置為 SQLSERVER服務的登錄身份,並賦予SQLSERVER的sysadmin角色(後邊就用這個賬號登錄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、啟用 AlwaysOn(SQLSERVER配置管理器)
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\ClusSvc,Start項的值應該是2,改為4。
5、在資料庫創建可用性組時,缺少選項“Windows Server 故障轉移群集”,只有兩個選項(EXTERNAL 和 NONE)。
解決:重啟SQLSERVER服務。
6、更改數據的所有者。
解決:ALTER AUTHORIZATION ON DATABASE::DBNAME TO [賬戶]
End.