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를 입력하고 [확인]을 클릭한다.

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

 

같은 카테고리의 다른 글
SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

만약 공부에 필요한 샘플 데이터베이스가 필요하다면 Micrososft에서 제공하는 AdventureWorks를 사용하자. AdventureWorks 샘플 데이터베이스 페이지에 접속하여 백업 파일을 다운로드한다. AdventureWorks는 OLTP 데이터베이스, AdventureWorksDW는 OLAP 데이터베이스, AdventureWorksLT는 AdventureWorks의 경량 및 축소 버전이다. 디스크 공간이 충분하다면 AdventureWorks와 AdventureWorksDW를 설치하자. SSMS에서 를 선택하고... 마우스 우클릭 후 을 클릭한다. 를 선택하고, 찾아보기 아이콘을 클릭한 후... 를 클릭하고... 다운로드한 파일을 선택하고 을 클릭한다. 을 ...

SQL Server / 데이터베이스 저장 위치 변경하는 방법

SQL Server / 데이터베이스 저장 위치 변경하는 방법

데이터베이스 기본 저장 위치 변경 데이터베이스를 만들거나 복원할 때 기본적으로 저장되는 위치는 SQL Server를 설치할 때 정합니다. 그 위치를 변경하고 싶다면 다음과 같이 합니다. 서버를 선택하고 마우스 우클릭 후 을 클릭합니다. 왼쪽 메뉴에서 을 클릭합니다. 를 원하는 위치로 변경하고... 을 클릭합니다. 서버를 재부팅하거나, 서비스에서 SQL Server를 다시 시작해야 반영됩니다. 데이터베이스 만들 때 저장 위치 ...

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

테이블 만들기 client 테이블을 만든다. 열이 하나도 없으면 만들어지지 않으므로, 적어도 하나의 열은 같이 만들어야 한다. create table client ( id int ); 테이블 삭제하기 client 테이블을 삭제한다. drop table client; 테이블 이름 변경하기 테이블 client의 이름을 account로 변경한다. sp_rename client, account; 테이블 목록 조회하기 방법 1 select * from information_schema.tables; 방법 2 execute sp_tables @table_type = "'table'"; SSMS 테이블 만들기 데이터베이스를 확장하고 을 선택한 다음 ...

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 / Query / ROLLUP

SQL Server / Query / ROLLUP

부분합 등을 구하고 싶다면 ROLLUP을 사용한다. 기본 다음과 같은 sales 테이블이 있다고 하자. team은 소속, man은 직원, sales는 판매액이다. select * from sales ; 다음과 같이 하면 직원별 소계, 팀별 소계, 전체 합계가 출력된다. select id, team, man, sum( sales ) as sales from sales group by rollup ( team, man, id ) ; 다음과 같이 ...

SQL Server / SSMS / 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 설정 변경하는 방법

SQL Server / SSMS / 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 설정 변경하는 방법

SSMS로 테이블 작업을 할 때 다음과 같은 메시지와 함께 저장이 되지 않는 경우가 있다. 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 옵션을 설정했습니다. 테이블 열의 순서를 변경하는 등 특정 ...

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 / SSMS / 도움말 추가하는 방법

SQL Server / SSMS / 도움말 추가하는 방법

SQL Server에 관한 많은 자료가 온라인에 있지만, 웹에서 검색하는 것이 불편하거나 불가능할 수 있다. 그런 경우 SSM에 도움말을 추가하여 쉽게 정보를 얻을 수 있다. 기본 설치를 했다면 도움말이 전혀 없으므로, 수동으로 추가해야 한다. SSMS를 실행하고 를 클릭한다. 추가하려는 도움말을 선택한다. 선택한 도움말을 다운로드할 때 필요한 디스크 용량은 오른쪽 ...

SQL Server / Query / 주석

SQL Server / Query / 주석

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

SQL Server / 열 / 만들기, 삭제하기, 수정하기, 조회하기

열 정보 조회하기 방법 1 client 테이블의 열의 모든 정보를 조회한다. select * from information_schema.columns where table_name = 'client'; client 테이블의 열의 특정 정보만 조회한다. select column_name, ordinal_position, data_type from information_schema.columns where table_name = 'client'; 방법 2 execute sp_columns @table_name = 'city'; 열 추가하기 client 테이블에 client_name 열을 추가한다. 테이터 형식은 varchar, 최대 길이는 50이다. alter table client add ...