SQL Server 2022 / Always On 가용성 그룹 만들기

Always On 가용성 그룹을 만들면 한 SQL Server에 장애가 생겼을 때 다른 SQL Server가 대신하도록 할 수 있다. Always On 가용성 그룹은 Windows Server의 장애 조치(Failover) 클러스터를 기반으로 하고, 장애 조치(Failover) 클러스터는 Active Directory 환경에서 사용할 수 있다.

즉, Always On 가용성 그룹을 만드는 것보다 그러한 환경을 구축하는 게 더 어려울 수 있다. Active Active Directory 환경, 장애 조치(Failover) 클러스터 만드는 방법은 아래 링크를 참고하고, 여기서는 Always On 구성에 대해서만 다룬다.

가정

  • MF-AD-01이 도메인 컨트롤러이다. 도메인은 mf.ad, NetBIOS는 MF이다.
  • MF-SQL-01과 MF-SQL-02는 MF-AD-01에 MF\Administrator로 조인되어 있다.
  • MF-SQL-01과 MF-SQL-02에 장애 조치 클러스터를 구성한다. 클러스터 이름은 SQL_Cluster, 클러스터 IP는 192.168.0.221이다.
  • MF-SQL-01과 MF-SQL-02에 MF\Administrator로 로그인하여 SQL Server를 설치한다.
  • 수신기 이름은 SQL_Listener, 수신기 IP는 192.168.222로 만들 것이다.

환경 설정

아래의 작업을 MF-SQL-01, MF-SQL-02에서 한다.

SQL Server

  • SQL Server 구성 관리자를 열고, SQL Server 서비스를 선택한다.
  • SQL Server와 SQL Server 에이전트의 상태가 실행 중, 시작 모드가 자동, 다음 계정으로 로그온이 MF\Administrator가 되도록 설정한다.

  • 설정은 속성으로 들어가서 한다.

  • SQL Server의 속성에서 [Always On 가용성 그룹] 탭을 클릭하고, [Always On 가용성 그룹 사용]에 체크한 후 [확인]을 클릭한다.

  • 서비스를 다시 시작해야 변경 내용이 적용된다는 안내 창이 나온다.

  • SQL Server를 선택하고 우클릭한 후 [다시 시작]을 클릭한다.

방화벽

MF-SQL-01, MF-SQL-02에서 1433, 5022 포트를 열어준다.

Always On 가용성 그룹 만들기

MF-SQL-01에서 다음 작업을 한다.

데이터베이스 만들고 백업하기

  • 데이터베이스를 만든다.

  • 데이터베이스 전체 백업을 한다. 전체 백업을 하지 않으면 가용성 그룹을 만들 수 없다.

가용성 그룹 만들기

  • [Always On 고가용성]을 선택하고 마우스 우클릭 후 [새 가용성 그룹 마법사]를 클릭한다.

  • [다음]을 클릭한다.

  • 적절히 이름을 정하고, 클러스터 유형이 [Windows Server 장애 조치(Failover) 클러스터]가 선택된 것을 확인하고 [다음]을 클릭한다.

  • 데이터베이스를 선택하고 [다음]을 클릭한다.

  • [복제본 추가]를 클릭한다.

  • MF-SQL-02를 입력하고 [연결]을 클릭한다.

  • 자동 장애 조치에 체크하고, 가용성 모드를 동기 커밋으로 설정 후 [다음]을 클릭한다.

  • [다음]을 클릭한다.

  • 가용성 그룹 유효성 검사를 한다. 오류가 없으면 다음 단계로 넘어갈 수 있다.

  • [마침]을 클릭하고 잠시 기다리면...

  • 구성이 완료된다.

  • 가용성 그룹을 확장하면 아래처럼 구성을 볼 수 있다.

  • [장애 조치 클러스터 관리자]을 열면, 아래처럼 역할에서 상태를 볼 수 있다.

테스트

  • MF-SQL-01을 종료한다.
  • MF-SQL-02에서 [장애 조치 클러스트 관리자]를 열어서 소유자 노드가 변경된 것을 확인한다.

  • SSMS에서 데이터베이스가 잘 동기화되었고, MF-SQL-02가 (주)가 되었는지 확인한다.

수신기 만들기

수신기는 SQL Server에 연결할 때 사용할 이름 또는 IP로 생각하면 된다. 수신기로 연결하면 주 서버로 연결을 해준다.

  • [가용성 그룹 수신기]를 선택하고 마우스 우클릭 후 [수신기 추가]를 클릭한다.

  • 이름을 적절히 정하고, 포트는 1433으로 한 후 [추가]를 클릭한다.

  • 수신기로 사용할 IP를 입력하고 [확인]을 클릭한다.

  • [확인]을 클릭하면 수신기가 만들어진다.

 

Related Posts

SQL Server / 논리 연산자 / IN, NOT IN

SQL Server / 논리 연산자 / IN, NOT IN

예제로 사용한 데이터베이스는 AdventureWorks이다. IN 다음은 Person.Person 테이블에서 FirstName, MiddleName, LastName을 10개 추출하는 쿼리이다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person 만약 FirstName이 Syed 또는 Sam 또는 John인 사람을 추출하고 싶다면 아래처럼 쿼리한다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName IN ( 'Syed', 'Sam', 'John' ) 물론 아래와 같이 해도 된다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName ...

SQL Server 2022 / SQL Server 사용자 인증 가능하게 하는 방법

SQL Server 2022 / SQL Server 사용자 인증 가능하게 하는 방법

SQL Server를 설치할 때 별도의 설정을 하지 않았다면, Windows 인증만 가능하다. 만약 SQL Server의 인증도 필요하게 되었다면 설정 변경을 해야 한다. 아래는 SSMS를 이용하여 서버 인증 방식을 변경하는 방법이다. SSMS에서 개체를 선택하고 마우스 우클릭한다. 을 클릭한다. 왼쪽에서 을 선택한다. 오른쪽에 있는 를 선택한다. 을 클릭한다. 이 변경은 SQL Server ...

SQL Server / Query / SELECT / 데이터 조회

SQL Server / Query / SELECT / 데이터 조회

예제로 사용한 데이터베이스는 AdventureWorks이다. SELECT로 원하는 데이터를 조회한다. SELECT FROM 기본 SELECT 뒤에는 조회할 열 이름을, FROM 뒤에는 조회할 테이블 이름을 입력한다. 모든 열을 조회한다면 *를 사용한다. HumanResources.Employee 테이블의 모든 열을 조회한다. select * from HumanResources.Employee ; HumanResources.Employee 테이블에서 BusinessEntityID, JobTitle, BirthDate, HireDate를 조회한다. select BusinessEntityID, JobTitle, BirthDate, HireDate from HumanResources.Employee ; TOP TOP으로 조회 개수를 정한다. 상위 10개를 ...

SQL Server / Query / 주석

SQL Server / Query / 주석

주석으로 처리하면 해당 문자열은 실행되지 않습니다. 코드에 설명을 달거나 특정 쿼리를 잠시 실행시키고 싶지 않을 때 사용합니다. 주석에는 한 줄 주석과 여러 줄 주석이 있습니다. 한 줄 주석은 --로 만듭니다. -- 뒤에 있는 문자열이 주석이 됩니다. -- Commnet SELECT * FROM myDB; -- Comment 여러 줄 주석을 만들고 싶다면 /*와 */로 감쌉니다. 그 사이에 있는 ...

SQL Server / Query / 메모

최근 날짜 가져오기 Name으로 그룹화한 후 최근 날짜를 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name 최근 날짜가 2020년인 것만 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name HAVING MAX( Date ) BETWEEN '2020-01-01' AND '2020-12-31' 모든 데이터베이스 출력하기 EXECUTE sp_helpdb;

SQL Server / 연산자 / 비교 연산자, 논리 연산자

예제로 사용한 데이터베이스는 AdventureWorks이다. 같다 HumanResources.Employee 테이블에서 BusinessEntityID가 10인 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID = 10 ; 같지 않다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 큰, 즉 같지 않은 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID <> 10 ; <> 대신 !=를 사용해도 된다. select * from HumanResources.Employee where BusinessEntityID != 10 ; 크다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 큰 데이터를 출력한다. select ...

SQL Server / 보안 / 사용자 계정 만들고 권한 추가하는 방법

SQL Server / 보안 / 사용자 계정 만들고 권한 추가하는 방법

SQL Server의 사용자 계정은 Windows 인증을 이용한 사용자 계정, SQL Server 자체의 사용자 계정이 있습니다. 그 중 SQL Server 자체의 사용자 계정을 만들고, 권한을 부여하는 방법을 알아보겠습니다. SSMS로 SQL Server에 접속합니다. 을 선택합니다.(확장하면 전체 사용자 목록을 볼 수 있습니다.) 마우스 우클릭하고 을 클릭합니다. 사용자를 추가하는 창이 뜹니다. 을 선택하고... 로그인 ...

SQL Server / SSMS / 탭 설정하는 방법

SQL Server / SSMS / 탭 설정하는 방법

SSMS의 텍스트 에디터의 기본 탭 크기는 4이다. 만약 탭 크기를 변경하고 싶다면 을 열고, 텍스트 편집기 > 모든 언어 > 탭 으로 이동하여, 탭 크기의 수를 조정한다. 그리고 이에 맞게 들여쓰기도 같이 조정한다. 개인적으로 선호하는 설정은 탭 크기 2에 공백 삽입.

SQL Server / 메모

SQL Server / 메모

보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다. (Microsoft SQL Server, 오류: 15517) 데이터베이스를 복원하면 사용자 권한 문제로 다음과 같은 에러가 날 수 있다. 이는 다음과 같이 명령하여 해결할 수 있다. ALTER AUTHORIZATION ON DATABASE:: DBName TO 예를 들어 문제가 ...

SQL Server / 테이블 / 기본 키(PRIMARY KEY)

SQL Server / 테이블 / 기본 키(PRIMARY KEY)

기본 키(PRIMARY KEY) 테이블의 각 행을 고유하게 식별하는 값을 가진 열 또는 열 조합을 기본 키라 한다. 테이블은 하나의 기본 키만 가질 수 있다. 기본 키를 만들면 인덱스가 자동으로 생성되며, 쿼리에서 기본 키를 사용하는 경우 빠르게 액세스할 수 있다. 쿼리로 만들기 기본 키 만들기 테이블을 만들 때 기본 키 만들기     이미 만든 테이블에서 기본 키 만들기       자동으로 증가하는 ...