Linux에서 always On 가용성 그룹 장애 조치Always On Availability Group failover on Linux

이 항목 적용 대상: 예(Linux에만 해당) SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스없습니다 병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

가용성 그룹 (AG)의 컨텍스트 내에서 주 역할과 보조 역할의 가용성 복제본은 장애 조치로 알려진 프로세스에서 서로 바꿀 수 있습니다.Within the context of an availability group (AG), the primary role and secondary role of availability replicas are typically interchangeable in a process known as failover. 자동 장애 조치(데이터가 손실되지 않음), 계획된 수동 장애 조치(데이터가 손실되지 않음)와 강제 장애 조치(failover) 라고 불리는 강제 수동 장애 조치(데이터가 손실될 수 있음)의 세 가지 형태가 있습니다.Three forms of failover exist: automatic failover (without data loss), planned manual failover (without data loss), and forced manual failover (with possible data loss), typically called forced failover. 자동 및 계획 된 수동 장애 조치는 모든 데이터를 보존 합니다.Automatic and planned manual failovers preserve all your data. 가용성 복제본의 수준에서 장애 조치 AG 됩니다.An AG fails over at the availability-replica level. 즉, AG 장애 조치 (현재 장애 조치 대상) 보조 복제본 중 하나로 됩니다.That is, an AG fails over to one of its secondary replicas (the current failover target).

장애 조치에 대 한 배경 정보를 참조 하십시오. 장애 조치 및 장애 조치 모드합니다.For background information about failover, see Failover and failover modes.

수동 장애 조치Manual failover

장애 조치는 외부 클러스터 관리자에서 관리 하는 AG 클러스터 관리 도구를 사용 합니다.Use the cluster management tools to fail over an AG managed by an external cluster manager. 예를 들어 Pacemaker를 사용 하 여 Linux 클러스터를 관리 하는 솔루션을 사용 하 여 pcs RHEL 또는 Ubuntu에서 수동 장애 조치를 수행할 수 있습니다.For example, if a solution uses Pacemaker to manage a Linux cluster, use pcs to perform manual failovers on RHEL or Ubuntu. SLES에서 사용 하 여 crm합니다.On SLES use crm.

중요

정상 작업에서 장애 조치 하지 마십시오 SSMS 또는 PowerShell과 같은 TRANSACT-SQL 또는 SQL Server 관리 도구를 사용 합니다.Under normal operations, do not fail over with Transact-SQL or SQL Server management tools like SSMS or PowerShell. CLUSTER_TYPE = EXTERNAL만 사용 가능한 값에 대 한 FAILOVER_MODEEXTERNAL합니다.When CLUSTER_TYPE = EXTERNAL, the only acceptable value for FAILOVER_MODE is EXTERNAL. 이러한 설정을 사용 하 여 모든 수동 또는 자동 장애 조치 작업이 외부 클러스터 관리자에서 실행 됩니다.With these settings, all manual or automatic failover actions are executed by the external cluster manager. 데이터 손실 될 가능성이 있는 장애 조치를 강제로 지침은 강제 장애 조치합니다.For instructions to force failover with potential data loss, see Force failover.

수동 장애 조치 단계Manual failover steps

장애 조치, 보조 복제본은 주 복제본을 동기 복제본 이어야 합니다.To fail over, the secondary replica that will become the primary replica must be synchronous. 보조 복제본이 비동기 가용성 모드 변경합니다.If a secondary replica is asynchronous, change the availability mode.

수동 장애 조치 두 단계를 수행에서 합니다.Manually fail over in two steps.

첫째, AG 리소스 이동를 하나씩 수동으로 장애 새 노드는 리소스를 소유 하 고 클러스터 노드에서 합니다.First, manually fail over by moving AG resource from the cluster node that owns the resources to a new node.

클러스터 AG 리소스를 장애 조치 되 고 위치 제약 조건을 추가 합니다.The cluster fails the AG resource over and adds a location constraint. 이 제약 조건은 새 노드에서 실행 하는 리소스를 구성 합니다.This constraint configures the resource to run on the new node. 성공적으로 장애 조치 이후에 하기 위해이 제약 조건을 제거 합니다.Remove this constraint in order to successfully fail over in the future.

두 번째, 위치 제약 조건을 제거합니다.Second, remove the location constraint.

1 단계입니다.Step 1. 가용성 그룹 리소스 이동를 하나씩 수동으로 실패Manually fail over by moving availability group resource

수동 장애 조치 라는 AG 리소스를 ag_cluster 라는 클러스터 노드로 nodeName2, 배포에 필요한 적절 한 명령을 실행:To manually fail over an AG resource named ag_cluster to cluster node named nodeName2, run the appropriate command for your distribution:

  • RHEL/Ubuntu 예제RHEL/Ubuntu example

    sudo pcs resource move ag_cluster-master nodeName2 --master
    
  • SLES 예제SLES example

    crm resource migrate ag_cluster nodeName2
    

중요

리소스에 대해 수동으로 장애 후 자동으로 추가 된 위치 제약 조건부 터 제거 해야 합니다.After you manually fail over a resource, you need to remove a location constraint that is automatically added.

2 단계입니다. Step 2. 위치 제약 조건 제거Remove the location constraint

수동 장애 조치 동안는 pcs 명령 move 또는 crm 명령 migrate 새 대상 노드에 배치 될 리소스에 대 한 위치 제약 조건을 추가 합니다.During a manual failover, the pcs command move or crm command migrate adds a location constraint for the resource to be placed on the new target node. 새 제약 조건을 확인하려면 리소스를 수동으로 이동한 후 다음 명령을 실행합니다.To see the new constraint, run the following command after manually moving the resource:

  • RHEL/Ubuntu 예제RHEL/Ubuntu example

    sudo pcs constraint list --full
    
  • SLES 예제SLES example

    crm config show
    

수동 장애 조치 때문에 생성 하는 제약 조건의 예입니다.An example of the constraint which gets created becuase of a manual failover. Enabled on: Node1 (score:INFINITY) (role: Master) (id:cli-prefer-ag_cluster-master)

  • RHEL/Ubuntu 예제RHEL/Ubuntu example

    다음 명령에서 cli-prefer-ag_cluster-master는 제거해야 하는 제약 조건의 ID입니다.In the following command cli-prefer-ag_cluster-master is the ID of the constraint that needs to be removed. sudo pcs constraint list --full은 이 ID를 반환합니다.sudo pcs constraint list --full returns this ID.

    sudo pcs constraint remove cli-prefer-ag_cluster-master  
    
  • SLES 예제SLES example

    다음 명령에서 cli-prefer-ms-ag_cluster 제약 조건의 ID입니다.In the following command cli-prefer-ms-ag_cluster is the ID of the constraint. crm config show은 이 ID를 반환합니다.crm config show returns this ID.

    crm configure
    delete cli-prefer-ms-ag_cluster 
    commit
    

참고

자동 장애 조치(failover)는 위치 제약 조건을 추가하지 않으므로 정리가 필요하지 않습니다.Automatic failover does not add a location constraint, so no cleanup is necessary.

자세한 내용은 다음을 참조하세요.For more information:

강제 장애 조치Force failover

강제 장애 조치는 재해 복구에 엄격 하 게 사용 됩니다.A forced failover is intended strictly for disaster recovery. 이 경우 없습니다 장애 조치 클러스터 관리 도구와 기본 데이터 센터 다운 이므로 합니다.In this case, you cannot fail over with cluster management tools because the primary datacenter is down. 동기화되지 않은 보조 복제본으로 강제 장애 조치(failover)를 수행하면 데이터 손실이 발생할 수 있습니다.If you force failover to an unsynchronized secondary replica, some data loss is possible. AG에 서비스 즉시 복원 해야 하 고 데이터 손실을 감수할지 하는 경우에 장애 조치를 강제로 합니다.Only force failover if you must restore service to the AG immediately and are willing to risk losing data.

클러스터 주 데이터 센터에서 재해 이벤트로 인해 응답 하지 않으면 클러스터-예를 들어 상호 작용 하기 위한 클러스터 관리 도구를 사용할 수 없으면, 강제 장애를 외부 클러스터 관리자를 사용 하지 않을 해야 합니다.If you cannot use the cluster management tools for interacting with the cluster - for example, if the cluster is unresponsive due to a disaster event in the primary data center, you might have to force failover to bypass the external cluster manager. 데이터가 손실 될 위험이 있으므로 일반 작업을 위해이 절차를 권장 되지 않습니다.This procedure is not recommended for regular operations because it risks data loss. 장애 조치 작업을 실행 하는 클러스터 관리 도구에 실패 하는 경우 사용 합니다.Use it when the cluster management tools fail to execute the failover action. 이 절차는 비슷합니다 기능적으로 강제 수동 장애 조치를 수행 Windows의 AG에 있습니다.Functionally, this procedure is similar to performing a forced manual failover on an AG in Windows.

강제 장애 조치에 대 한이 프로세스는 Linux에서 SQL Server에만.This process for forcing failover is specific to SQL Server on Linux.

  1. AG 리소스 관리 되지 않도록 클러스터에서 더 이상 확인 합니다.Verify that the AG resource is not managed by the cluster any more.

    • 대상 클러스터 노드에서 리소스 관리 되지 않는 모드로 설정 합니다.Set the resource to unmanaged mode on the target cluster node. 이 명령은 리소스 에이전트를 중지 리소스 모니터링 및 관리를 알립니다.This command signals the resource agent to stop resource monitoring and management. 예를 들어:For example:

      sudo pcs resource unmanage <resourceName>
      
    • 관리 되지 않는 모드로 리소스 모드를 설정 하 고 시도가 실패 하는 경우에 리소스를 삭제 합니다.If the attempt to set the resource mode to unmanaged mode fails, delete the resource. 예를 들어:For example:

      sudo pcs resource delete <resourceName>
      

      참고

      리소스를 삭제 하는 경우 또한 삭제 모든 관련된 제약 조건을 합니다.When you delete a resource, it also deletes all of the associated constraints.

  2. 보조 복제본을 호스팅하는 SQL Server의 인스턴스에서 세션 컨텍스트 변수 설정 external_cluster합니다.On the instance of SQL Server that hosts the secondary replica, set the session context variable external_cluster.

    EXEC sp_set_session_context @key = N'external_cluster', @value = N'yes';
    
  3. TRANSACT-SQL과 함께 AG 장애 조치할 합니다.Fail over the AG with Transact-SQL. 다음 예제에서는 대체 <MyAg> 프로그램 AG의 이름으로 합니다.In the following example, replace <MyAg> with the name of your AG. 대상 보조 복제본을 호스팅하는 SQL Server의 인스턴스에 연결 하 고 다음 명령을 실행 합니다.Connect to the instance of SQL Server that hosts the target secondary replica and run the following command:

    ALTER AVAILABILITY GROUP <MyAg> FORCE_FAILOVER_ALLOW_DATA_LOSS;
    
  4. 강제 장애 조치 후 클러스터 리소스 모니터링 및 관리를 다시 시작 하거나 AG 리소스를 다시 만들기 전에 정상 상태로 AG 상태로 전환 합니다.After a forced failover, bring the AG to a healthy state before either restarting the cluster resource monitoring and management or recreating the AG resource. 검토는 강제 장애 조치 후 필수 태스크합니다.Review the Essential Tasks After a Forced Failover.

  5. 다시 시작 하거나 클러스터 리소스 모니터링 및 관리:Either restart cluster resource monitoring and management:

    클러스터 리소스 모니터링 및 관리를 다시 시작 하려면 다음 명령을 실행 합니다.To restart the cluster resource monitoring and management, run the following command:

    sudo pcs resource manage <resourceName>
    sudo pcs resource cleanup <resourceName>
    

    클러스터 리소스를 삭제 한 경우 다시 만듭니다.If you deleted the cluster resource, recreate it. 지침에 따라 클러스터 리소스를 다시 만들려면 가용성 그룹 리소스를 만들합니다.To recreate the cluster resource, follow the instructions at Create availability group resource.

중요

데이터 손실 위험이 때문에 재해 복구 훈련에 대 한 위의 단계를 사용 하지 마십시오.Do not use the preceding steps for disaster recovery drills because they risk data loss. 대신 고 비동기 복제본이 동기, 및에 대 한 지침을 변경할 일반 수동 장애 조치합니다.Instead change the asynchronous replica to synchronous, and the instructions for normal manual failover.

데이터베이스 수준 모니터링 및 장애 조치 트리거Database level monitoring and failover trigger

에 대 한 CLUSTER_TYPE=EXTERNAL, 장애 조치 트리거 의미 체계는 다른 WSFC에 비해 합니다.For CLUSTER_TYPE=EXTERNAL, the failover trigger semantics are different compared to WSFC. AG wsfc에서 SQL Server의 인스턴스로 설정 하면 아웃의 전환을 ONLINE AG 상태는 오류 보고를 사용 하면 데이터베이스에 대 한 상태입니다.When the AG is on an instance of SQL Server in a WSFC, transitioning out of ONLINE state for the database causes the AG health to report a fault. 클러스터 관리자에 대 한 응답에서 한 장애 조치 작업을 트리거합니다.In response, the cluster manager triggers a failover action. Linux에서 SQL Server 인스턴스 클러스터와 통신할 수 없습니다.On Linux, the SQL Server instance cannot communicate with the cluster. 데이터베이스 상태 작업 수행에 대 한 모니터링 간접적인합니다.Monitoring for database health is done outside-in. 데이터베이스 수준 장애 조치 모니터링 및 장애 조치에 대 한 사용자에 옵트인 하는 경우 (옵션을 설정 하 여 DB_FAILOVER=ON AG를 만들 때), 데이터베이스 상태는 클러스터는 확인 ONLINE 모니터링 작업을 실행할 때마다 합니다.If user opted in for database level failover monitoring and failover (by setting the option DB_FAILOVER=ON when creating the AG), the cluster will check if the database state is ONLINE every time it runs a monitoring action. 클러스터의 상태를 쿼리 sys.databases합니다.The cluster queries the state in sys.databases. 다른 모든 상태에 대 한 ONLINE, 자동으로 (자동 장애 조치 조건이 충족 될 경우)는 장애 조치를 트리거합니다.For any state different than ONLINE, it will trigger a failover automatically (if automatic failover conditions are met). 장애 조치의 실제 시간 sys.databases에서 업데이트 되는 데이터베이스 상태 뿐만 아니라 모니터링 작업의 빈도에 따라 달라 집니다.The actual time of the failover depends on the frequency of the monitoring action as well as the database state being updated in sys.databases.

자동 장애 조치 동기 복제본이 하나 이상 필요합니다.Automatic failover requires at least one synchronous replica.

다음 단계Next steps

SQL Server 가용성 그룹 클러스터 리소스에 대 한 Red Hat Enterprise Linux 클러스터를 구성 합니다.Configure Red Hat Enterprise Linux Cluster for SQL Server Availability Group Cluster Resources

SQL Server 가용성 그룹 클러스터 리소스에 대 한 SUSE Linux Enterprise Server 클러스터 구성Configure SUSE Linux Enterprise Server Cluster for SQL Server Availability Group Cluster Resources

SQL Server 가용성 그룹 클러스터 리소스에 대 한 Ubuntu 클러스터 구성Configure Ubuntu Cluster for SQL Server Availability Group Cluster Resources