Standard 버전의 AG 이중화 가용성 그룹 개념
Standard 버전은 하나의 가용성 그룹이 여러개의 DB 를 구성할 수 없습니다.
이말은 하나의 가용성 그룹은 하나의 데이터베이스만 가질 수 있다는 부분입니다.
이런 경우에는 가용성 그룹이 DB 별로 각각 구성되어 있다보니
하나의 서버에서 주, 보조 역할이 가용성 그룹마다 다르게 설정되어 있을 수 있습니다.
이 때 어느 한 가용성 그룹에서 Failover 가 발생하면,
다른 가용성 그룹도 같이 Failover 되도록 설정하여
항상 하나의 서버가 주 역할을 하도록 설정할 수 있습니다.
Standard 버전에서 AG 이중화 Auto Failover 설정방법
1. 배치작업을 만든 후 아래 프로시저를 호출하도록 설정합니다.
이 프로시저는, 가용성 그룹 역할이 보조인 그룹명을 테이블에 넣은 후 Failover 를 하는 역할입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | USE [msdb] GO Create Procedure [dbo].[AG_Auto_Failover_SP] as begin DECLARE @cnt SMALLINT DECLARE @sql VARCHAR(8000) DECLARE @seq SMALLINT IF OBJECT_ID('AG_Auto_Failover') IS NOT NULL BEGIN DROP TABLE AG_Auto_Failover END --1. Group Name 을 저장할 임시 테이블 생성 CREATE TABLE AG_Auto_Failover ( cnt SMALLINT IDENTITY(1,1), AGName varchar(30) ) --2.다른 노드에 Online 되어 있는 AG Name Insert INSERT INTO AG_Auto_Failover(AGName) SELECT b.Name FROM sys.dm_hadr_availability_replica_states as a INNER JOIN sys.availability_groups as b on a.group_id = b.group_id WHERE is_local = 1 AND role =2 GROUP by b.name --3.AG Failover 수행 SELECT @cnt = max(cnt) FROM AG_Auto_Failover SET @seq = 1 IF @cnt <> 0 BEGIN WHILE(@seq <= @cnt) BEGIN SET @SQL = '' SET @SQL = 'USE MASTER ' SELECT @SQL = @SQL + 'ALTER AVAILABILITY GROUP ' + '[' + AGName + ']' + ' FAILOVER' FROM AG_Auto_Failover WHERE cnt = @seq EXEC(@sql) SET @seq = @seq + 1 END END --4. 임시 테이블 삭제 DROP TABLE AG_Auto_Failover END GO | cs |
2. SQL Server 에이전트 경고에서 새 이벤트를 생성합니다.
3. 이벤트에서 위에서 만든 배치작업을 호출하도록 설정합니다.
- [일반] Failover 가 발생하면 41074 의 SQL Server 이벤트 경고값이 기록됩니다.
- [응답] 위에서 만든 배치작업을 선택해 줍니다.
'SQL Server > SQL Server 이중화_백업' 카테고리의 다른 글
[MSSQL] flag 3042 백업에 필요한 실제 크기만 디스크로 할당하는 방법 (0) | 2021.04.25 |
---|---|
[MSSQL] 백업파일 압축하기, 압축률 확인하는 방법 (0) | 2020.07.07 |
[MSSQL] 데이터베이스 백업과 복구해보기 (0) | 2019.04.16 |
[MSSQL] 백업장치 만들고 삭제해보기 (0) | 2019.03.21 |
[MsSQL] 데이터베이스 전체 복구, 차등 복구, 로그 복구 알아보기 (0) | 2019.03.20 |