Computer >> 컴퓨터 >  >> 체계 >> Windows Server

SQL Server에서 Always-On 고가용성 그룹 구성

이 문서에서는 항상 켜짐을 설치하고 구성하는 방법에 대한 단계별 가이드를 안내합니다. Windows Server 2019에서 실행되는 SQL Server의 가용성 그룹, 장애 조치 시나리오 및 기타 관련 항목에 대해 설명합니다.

Always On 가용성 그룹 Microsoft SQL Server에서 고가용성을 제공합니다. Always On은 MSSQL 2012 릴리스에 등장했습니다.

SQL Server의 Always On 가용성 그룹 기능

SQL Server 가용성 그룹은 무엇에 사용할 수 있습니까?

  • MS SQL 고가용성 및 자동 장애 조치
  • 노드 간 SELECT 쿼리의 부하 분산(보조 복제본을 읽을 수 있음)
  • 보조 복제본에서 백업
  • 데이터 중복. 각 복제본은 가용성 그룹 데이터베이스의 복사본을 유지합니다.

Always On은 Windows Server 장애 조치 클러스터를 기반으로 합니다. (WSFC). WSFC는 가용성 그룹 노드를 모니터링하고 자동 장애 조치를 제공합니다. MS SQL Server 2017부터 Always On을 WSFC 없이 사용할 수 있습니다. 및 Linux에서 호스트도 마찬가지입니다. Linux 기반 클러스터를 구축할 때 WSFC 대신 Pacemaker를 사용할 수 있습니다.

Always On은 표준에서 사용할 수 있습니다. 에디션이지만 몇 가지 제한 사항이 있습니다.

  • 복제본은 2개로 제한됩니다(기본 및 보조).
  • 보조 복제본을 사용하여 데이터를 읽을 수 없습니다.
  • 보조 복제본은 MS SQL을 백업하는 데 사용할 수 없습니다.
  • 가용성 그룹당 하나의 데이터베이스만 지원됩니다.

엔터프라이즈에는 제한이 없습니다. 판.

여기에서 MS SQL Server 라이선스 측면에 대해 읽을 수 있습니다.

약관을 살펴보겠습니다.

  • Always On 가용성 그룹 복제본 및 데이터베이스 세트입니다.
  • 복제본 가용성 그룹의 SQL Server 인스턴스입니다. 복제본은 기본 또는 보조일 수 있습니다. 각 복제본에는 하나 이상의 데이터베이스가 포함될 수 있습니다.

Always On은 WSFC를 기반으로 합니다. 각 가용성 그룹 노드는 Windows 장애 조치(failover) 클러스터의 구성원이어야 합니다. 각 SQL Server 인스턴스에는 여러 가용성 그룹이 있을 수 있습니다. 각 가용성 그룹에는 최대 8개의 보조 복제본이 있을 수 있습니다.

주 복제본이 실패하면 클러스터는 새 주 복제본에 투표하고 Always On은 보조 복제본 중 하나를 주 복제본으로 만듭니다. 사용자가 리스너에 연결하기 때문에 (특수 클러스터 IP 주소 및 해당 DNS 이름) Always On으로 작업할 때 쓰기 쿼리를 다시 실행할 수 있습니다. 리스너는 보조 복제본 간의 SELECT 쿼리 균형을 조정하는 역할도 합니다.

Always On 가용성 그룹에 대한 Windows 장애 조치 클러스터 구성

먼저 Always On에서 사용하는 모든 노드에 장애 조치 클러스터를 구성해야 합니다.

내 구성은 다음과 같습니다.

  • Windows Server 2019를 실행하는 가상 머신 2개
  • 2개의 SQL Server 2019 Enterprise 인스턴스
  • 노드 호스트 이름은 testnode1 및 testnode2입니다. SQL Server 인스턴스 이름은 node1 및 node2입니다.

장애 조치 클러스터링 추가 서버 관리자를 사용하거나 PowerShell을 통해 설치:

Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools

SQL Server에서 Always-On 고가용성 그룹 구성

설치는 자동이며 아직 구성할 필요가 없습니다. 장애 조치 클러스터 관리자 실행 스냅인(FailoverClusters.SnapInHelper.msc ) 새 클러스터를 생성합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

클러스터에 가입하려는 호스트의 이름을 추가합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

그런 다음 마법사가 몇 가지 테스트를 제안합니다. 그렇게 하려면 첫 번째 항목을 선택하십시오.

SQL Server에서 Always-On 고가용성 그룹 구성

클러스터 이름을 지정하고 네트워크와 클러스터 IP 주소를 선택합니다. 클러스터 이름은 DNS에 자동으로 나타납니다. DNS 레코드를 수동으로 만들 필요가 없습니다. 제 경우에는 클러스터 이름이 ClusterAG입니다. .

SQL Server에서 Always-On 고가용성 그룹 구성

클러스터에 적합한 모든 스토리지 추가 옵션을 선택 취소합니다. 나중에 디스크를 추가할 수 있기 때문입니다.

SQL Server에서 Always-On 고가용성 그룹 구성

클러스터에는 노드가 두 개뿐이므로 클러스터 쿼럼을 구성해야 합니다. . 클러스터 쿼럼은 캐스팅 투표입니다. 예를 들어 클러스터 노드 중 하나를 사용할 수 없게 되면 클러스터는 실제로 온라인 상태이고 서로를 볼 수 있는 노드를 감지해야 합니다. 클러스터 쿼럼은 클러스터 일관성을 제공합니다(클러스터 -> 추가 작업 -> 클러스터 쿼럼 설정 구성).

SQL Server에서 Always-On 고가용성 그룹 구성

쿼럼 감시 옵션을 선택합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

그런 다음 감시 유형:파일 공유 감시를 선택합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

공유 폴더에 대한 UNC 경로를 지정합니다. 디렉토리를 직접 만드십시오. 장애 조치 클러스터 외부의 서버에 있어야 합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

클러스터를 구성할 때 다음 오류가 표시될 수 있습니다.

There was an error configuring the file share witness. Unable to save property changes for File Share Witness. The system cannot find the file specified.

클러스터가 실행 중인 사용자 계정에 공유 폴더에 액세스할 수 있는 NTFS 권한이 없을 수 있습니다. 기본적으로 클러스터는 로컬 사용자 계정으로 실행됩니다. 폴더에 대한 권한을 모든 클러스터 컴퓨터에 부여하거나 클러스터 서비스에 대한 계정을 변경하고 관련 권한을 부여할 수 있습니다.

기본 Windows 장애 조치 클러스터 구성이 끝났습니다.

MS SQL Server에서 Always On 가용성 그룹 구성

일반적인 SQL Server 인스턴스 설치 후 Always On 가용성 그룹을 사용하도록 설정하고 구성할 수 있습니다. SQL Server 구성 관리자의 인스턴스 속성에서 활성화 . 스크린샷에서 볼 수 있듯이 SQL Server는 이미 WSFC 클러스터에 속해 있음을 감지했습니다. Always On 가용성 그룹 사용을 선택합니다. MSSQL 인스턴스 서비스를 다시 시작합니다. 두 번째 인스턴스에 대해서도 동일한 작업을 수행합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

도움말. Always On을 구성하기 전에 SQL Server 서비스가 로컬 시스템 계정으로 실행되고 있지 않은지 확인하십시오. 그룹 관리 서비스 계정 또는 일반 도메인 계정을 사용하는 것이 좋습니다. 그렇지 않으면 Always-On 구성을 완료할 수 없습니다.

SQL Server Management Studio를 실행하고 호스트에 연결한 다음 항상 고가용성을 클릭합니다. 새 가용성 그룹 마법사를 실행합니다.

SQL Server 2017 및 SQL Server 2019용 SQL Server Management Studio 18.x에는 T-SQL에서만 사용할 수 있는 일부 Always On 설정이 나타나므로 최신 SSMS 버전을 사용하는 것이 좋습니다.

SQL Server에서 Always-On 고가용성 그룹 구성

Always On 가용성 그룹의 이름을 지정하고 데이터베이스 수준 상태 감지를 선택합니다. . 이 옵션을 사용하면 데이터베이스가 비정상일 때 Always On이 감지할 수 있습니다.

SQL Server에서 Always-On 고가용성 그룹 구성

Always On 가용성 그룹에 추가할 SQL Server 데이터베이스를 선택하십시오.

SQL Server에서 Always-On 고가용성 그룹 구성

복제본 추가 를 클릭하십시오. 두 번째 SQL 서버를 연결합니다. 따라서 최대 8개의 서버를 추가할 수 있습니다.

  • 초기 역할 그룹이 생성될 때의 복제본 역할입니다. 기본 또는 보조일 수 있습니다.
  • 자동 장애 조치 – 데이터베이스를 사용할 수 없게 되면 Always On은 기본 역할을 다른 복제본으로 이동합니다. 이 항목을 확인하십시오.
  • 가용성 모드 동기 커밋 또는 비동기 커밋을 선택할 수 있습니다. 동기 모드를 선택하면 주 복제본으로 오는 트랜잭션은 동기 모드를 사용하여 다른 모든 보조 복제본으로 전송됩니다. 주 복제본은 다른 복제본이 디스크에 트랜잭션을 작성한 후에만 트랜잭션을 완료합니다. 따라서 주 복제본이 실패할 경우 데이터 손실이 제거됩니다. 비동기 모드에서 주 복제본은 다른 복제본의 응답을 기다리지 않고 즉시 변경 사항을 씁니다.
  • 가독성 있는 보조 보조 복제본에 대해 SELECT 쿼리를 실행할 수 있는 매개변수입니다. 값이 yes이면 클라이언트는 ApplicationIntent=readonly 없이 연결하더라도 읽기 전용 액세스 권한을 얻을 수 있습니다. .
  • 커밋을 위해 필요한 동기화된 보조 장치 트랜잭션을 완료하기 위해 동기화된 보조 복제본의 수입니다. 레플리카 개수에 따라 설정하면 1로 설정하겠습니다.

SQL Server에서 Always-On 고가용성 그룹 구성

Endpoint에서 아무 것도 수정하지 마세요. 탭.

백업 환경설정에서 탭에서 백업을 만들 위치를 선택할 수 있습니다. 여기에 기본 설정을 그대로 둡니다. 보조 사용 .

SQL Server에서 Always-On 고가용성 그룹 구성

가용성 그룹 수신기의 이름, 포트 및 IP 주소를 지정합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

읽기 전용 라우팅 나가기 설정이 변경되지 않았습니다.

복제본 동기화 유형을 선택합니다. 나는 첫 번째 항목(자동 시드 ) 체크했습니다.

SQL Server에서 Always-On 고가용성 그룹 구성

그런 다음 설정을 확인해야 합니다. 오류가 없으면 마침을 클릭하여 변경 사항을 적용합니다.

제 경우에는 모든 테스트가 성공했지만 설치 후 결과 단계에서 마법사가 가용성 그룹 수신기를 만드는 오류를 표시했습니다. 클러스터 이벤트 로그에 오류 EVENTID 1194가 나타났습니다.

Cluster network name resource failed to create its associated computer object in the domain.

클러스터에 리스너를 생성할 수 있는 충분한 권한이 없음을 의미합니다. 설명서에는 클러스터의 개체에 컴퓨터 유형 개체를 생성할 수 있는 권한을 부여하는 것으로 충분하다고 나와 있습니다. AD에서 권한 위임을 사용하는 것이 더 쉽습니다(또는 빠르지만 안전하지 않은 변형은 CLUSTERAG$ 개체를 Domain Admins 그룹에 임시로 추가하는 것입니다).

가용성 그룹에서 Always-On 및 낮은 SQL 성능 문제를 진단할 때 표준 SQL Server 진단 도구를 사용하는 것 외에도 Windows 클러스터 로그를 철저히 연구해야 합니다.

가용성 그룹은 생성했지만 수신기는 생성하지 않았기 때문에 수동으로 추가했습니다. 가용성 그룹에 대한 컨텍스트 메뉴를 열고 리스너 추가를 클릭합니다. .

SQL Server에서 Always-On 고가용성 그룹 구성

리스너의 IP 주소, 포트 및 DNS 이름을 지정합니다.

리스너가 가용성 그룹 리스너에 나타나는지 확인합니다. Always On 그룹의 섹션입니다.

따라서 Always On 가용성 그룹의 기본 구성을 완료했습니다.

SQL Server Always On:작동 확인 및 장애 조치

가용성 그룹 대시보드(대시보드 표시)를 살펴보겠습니다.

SQL Server에서 Always-On 고가용성 그룹 구성

좋습니다. 그룹이 생성되어 작동 중입니다.

SQL Server에서 Always-On 고가용성 그룹 구성

node2를 수동으로 기본 인스턴스로 만들어 보겠습니다. 가용성 그룹을 마우스 오른쪽 버튼으로 클릭하고 장애 조치를 선택합니다. .

SQL Server에서 Always-On 고가용성 그룹 구성

장애 조치 준비의 값을 확인합니다. . 데이터 손실 없음 데이터가 손실되지 않음을 의미합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

node2에 연결합니다.

마침을 클릭합니다.

node2가 가용성 그룹의 기본 복제본(기본 인스턴스)이 되었는지 확인합니다.

리스너가 올바르게 작동하는지 확인하십시오. SSMS에서 수신기 DNS 이름과 포트를 쉼표로 구분하여 지정합니다. ag1-listener-1,1445

SQL Server에서 Always-On 고가용성 그룹 구성

간단한 삽입을 실행하고 SQL 쿼리를 선택하고 데이터베이스에 업데이트하십시오.

SQL Server에서 Always-On 고가용성 그룹 구성

그런 다음 주 복제본의 자동 장애 조치를 확인합니다. TESTNODE2에서 sqlservr.exe 프로세스를 종료하면 됩니다.

나머지 노드 TESTNODE1\NODE1에서 가용성 그룹 상태를 확인합니다.

SQL Server에서 Always-On 고가용성 그룹 구성

testnode2\node2를 사용할 수 없게 된 이후 클러스터는 testnode1\node1 상태를 기본으로 자동 변경했습니다.

클라이언트가 연결에 사용할 리스너 상태를 확인하십시오.

제 경우에는 리스너에 성공적으로 연결했지만 데이터베이스에 액세스하려고 하면 다음 오류가 발생했습니다.

Unable to access database 'TestDatabase' because it lacks a quorum of nodes for high availability. Try the operation again later.

커밋을 위해 동기화된 보조 데이터베이스가 필요함 으로 인해 오류가 나타납니다. 옵션. 구성할 때 값을 1로 설정했기 때문에 기본 복제본이 하나만 남아 있기 때문에 Always On에서는 데이터베이스 연결을 허용하지 않습니다.

SQL Server에서 Always-On 고가용성 그룹 구성

값을 0으로 설정 쿼리를 다시 실행해 보십시오.

Testnode1은 기본 인스턴스 상태를 유지하고 testnode2는 보조 인스턴스가 되었습니다. testnode2의 전원이 꺼졌을 때 testnode1에서 변경한 데이터는 컴퓨터가 켜진 후 성공적으로 동기화되었습니다.

따라서 모든 것이 올바르게 작동하고 치명적인 오류가 발생할 경우 데이터를 읽고 쓸 수 있도록 했습니다.

Always On 가용성 그룹을 쉽게 구성할 수 있습니다. SQL Server 기반 장애 조치 솔루션을 구축하려는 경우 가용성 그룹이 이를 잘 관리합니다.