Linux에서 읽기-배율에 대 한 SQL Server 가용성 그룹 구성Configure a SQL Server Availability Group for read-scale 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

Linux에는 SQL Server 항상에서 AG (가용성 그룹) 읽기-배율 워크 로드를 구성할 수 있습니다.You can configure a SQL Server Always On Availability Group (AG) for read-scale workloads on Linux. AG에 대한 두 가지 종류의 아키텍처가 있습니다.There are two types of architectures for AGs. 고가용성에 대 한 아키텍처를 향상 된 비즈니스 연속성을 제공 하는 클러스터 관리자를 사용 합니다.A architecture for high availability uses a cluster manager to provide improved business continuity. 또한이 아키텍처는 읽기-배율 복제본을 포함할 수 있습니다.This architecture also can include read-scale replicas. 고가용성 아키텍처를 참조 하세요 구성할 SQL Server Always On 가용성 그룹 Linux에서 고가용성을 위해합니다.To create the high-availability architecture, see Configure SQL Server Always On Availability Group for high availability on Linux. 다른 아키텍처는 읽기 배율 작업만을 지원합니다.The other architecture supports only read-scale workloads. 이 문서에서는 읽기 배율 작업에 대한 클러스터 관리자 없이 AG를 만드는 방법을 설명합니다.This article explains how to create an AG without a cluster manager for read-scale workloads. 이 아키텍처는 읽기 배율만을 제공합니다.This architecture provides read-scale only. 고가용성을 제공하지 않습니다.It doesn't provide high availability.

참고

CLUSTER_TYPE = NONE인 가용성 그룹은 다른 운영 체제 플랫폼에서 호스팅되는 복제본을 포함할 수 있습니다.An availability group with CLUSTER_TYPE = NONE can include replicas hosted on different operating system platforms. 고가용성을 지원할 수 없습니다.It cannot support high availability.

필수 구성 요소Prerequisites

가용성 그룹을 만들려면 먼저 다음을 수행해야 합니다.Before you create the availability group, you need to:

  • 가용성 복제본을 호스팅하는 모든 서버에서 통신할 수 있도록 환경을 설정 합니다.Set your environment so that all the servers that will host availability replicas can communicate.
  • SQL Server를 설치합니다.Install SQL Server.

참고

Linux 클러스터에서 관리 되는 클러스터 리소스로 추가 하기 전에 가용성 그룹 있습니다 만들어야 합니다.On Linux, you must create an availability group before you add it as a cluster resource to be managed by the cluster. 이 문서에는 가용성 그룹을 만드는 예제가 나옵니다.This document provides an example that creates the availability group. 클러스터를 만들고 가용성 그룹 클러스터 리소스로 추가 배포 관련 내용은 "다음 단계" 링크를 참조 합니다.For distribution-specific instructions to create the cluster and add the availability group as a cluster resource, see the links under "Next steps."

  1. 각 호스트에 대 한 컴퓨터 이름을 업데이트 합니다.Update the computer name for each host.

    각 SQL Server 이름은 다음과 같아야 합니다.Each SQL Server name must be:

    • 15 자 이하인 합니다.15 characters or less.
    • 네트워크 내에서 고유 합니다.Unique within the network.

    컴퓨터 이름을 설정하려면 /etc/hostname을 편집합니다.To set the computer name, edit /etc/hostname. 다음 스크립트를 사용 하면 편집할 /etc/hostnamevi:The following script lets you edit /etc/hostname with vi:

    sudo vi /etc/hostname
    
  2. 호스트 파일을 구성 합니다.Configure the hosts file.

    참고

    호스트 이름을 해당 ip를 DNS 서버에 등록 되어 있으면 다음 단계를 수행할 필요가 없습니다.If hostnames are registered with their IP in the DNS server, you don't need to do the following steps. 모든 노드는 가용성 그룹 구성의 포함 않습니다 서로 통신할 수 있는지 확인 합니다.Validate that all the nodes intended to be part of the availability group configuration can communicate with each other. (호스트 이름으로 ping 해당 IP 주소와 함께 응답 해야 합니다.) /Etc/hosts 파일 노드의 호스트 이름으로 로컬 호스트 IP 주소 127.0.0.1을 매핑하는 레코드를 포함 되지 않았는지 확인 합니다.(A ping to the hostname should reply with the corresponding IP address.) Also, make sure that the /etc/hosts file doesn't contain a record that maps the localhost IP address 127.0.0.1 with the hostname of the node.

    모든 서버의 호스트 파일에는 가용성 그룹에 참여할 모든 서버의 IP 주소 및 이름이 포함됩니다.The hosts file on every server contains the IP addresses and names of all servers that will participate in the availability group.

    다음 명령은 현재 서버의 IP 주소를 반환합니다.The following command returns the IP address of the current server:

    sudo ip addr show
    

    /etc/hosts를 업데이트합니다.Update /etc/hosts. 다음 스크립트를 사용 하면 편집할 /etc/hostsvi:The following script lets you edit /etc/hosts with vi:

    sudo vi /etc/hosts
    

    다음 예제에서는 node1, node2node3에 대한 항목이 추가된 node1/etc/hosts를 보여 줍니다.The following example shows /etc/hosts on node1 with additions for node1, node2, and node3. 이 문서에서는 node1 주 복제본을 호스팅하는 서버를 참조 합니다.In this document, node1 refers to the server that hosts the primary replica. node2node3 보조 복제본을 호스팅하는 서버를 참조 합니다.And node2 and node3 refer to servers that host the secondary replicas.

    127.0.0.1   localhost localhost4 localhost4.localdomain4
    ::1       localhost localhost6 localhost6.localdomain6
    10.128.18.12 node1
    10.128.16.77 node2
    10.128.15.33 node3
    

SQL Server 설치Install SQL Server

SQL Server를 설치합니다.Install SQL Server. 다음 링크는 다양 한 분포에 대 한 SQL Server 설치 지침을 가리킵니다.The following links point to SQL Server installation instructions for various distributions:

AlwaysOn 가용성 그룹을 사용 하도록 설정 하 고 mssql 서버를 다시 시작Enable AlwaysOn availability groups and restart mssql-server

SQL Server 인스턴스를 호스팅하는 각 노드에서 AlwaysOn 가용성 그룹을 사용 합니다.Enable AlwaysOn availability groups on each node that hosts a SQL Server instance. 다시 시작 mssql-server합니다.Then restart mssql-server. 다음 스크립트를 실행합니다.Run the following script:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1
sudo systemctl restart mssql-server

AlwaysOn_health 이벤트 세션을 사용 하도록 설정Enable an AlwaysOn_health event session

AlwaysOn 가용성 그룹이 가용성 그룹의 문제를 해결할 때 근본 원인을 진단에 도움이 되도록 확장된 이벤트를 선택적으로 사용할 수 있습니다.You can optionally enable AlwaysOn availability groups extended events to help with root-cause diagnosis when you troubleshoot an availability group. SQL Server의 각 인스턴스에 대해 다음 명령을 실행 합니다.Run the following command on each instance of SQL Server:

ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
GO

이 XE 세션에 대 한 자세한 내용은 참조 확장 이벤트 AlwaysOn합니다.For more information about this XE session, see AlwaysOn extended events.

한 데이터베이스 미러링 끝점 사용자 만들기Create a database mirroring endpoint user

다음 TRANSACT-SQL 스크립트 이라는 로그인을 만듭니다 dbm_login 및 라는 사용자 dbm_user합니다.The following Transact-SQL script creates a login named dbm_login and a user named dbm_user. 강력한 암호로 스크립트를 업데이트합니다.Update the script with a strong password. 데이터베이스 미러링 끝점 사용자를 만들려면 모든 SQL Server 인스턴스에서 다음 명령을 실행 합니다.To create the database mirroring endpoint user, run the following command on all SQL Server instances:

CREATE LOGIN dbm_login WITH PASSWORD = '**<1Sample_Strong_Password!@#>**';
CREATE USER dbm_user FOR LOGIN dbm_login;

인증서 만들기Create a certificate

Linux의 SQL Server 서비스는 인증서를 사용하여 미러링 끝점 간의 통신을 인증합니다.The SQL Server service on Linux uses certificates to authenticate communication between the mirroring endpoints.

다음 TRANSACT-SQL 스크립트에는 마스터 키와 인증서를 만듭니다.The following Transact-SQL script creates a master key and a certificate. 인증서를 백업 하 고 개인 키가 있는 파일을 보호 합니다.It then backs up the certificate and secures the file with a private key. 강력한 암호로 스크립트를 업데이트합니다.Update the script with strong passwords. 기본 SQL Server 인스턴스에 연결 합니다.Connect to the primary SQL Server instance. 인증서를 만들려면 다음 Transact SQL 스크립트를 실행 합니다.To create the certificate, run the following Transact-SQL script:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE dbm_certificate
   TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
           ENCRYPTION BY PASSWORD = '**<Private_Key_Password>**'
       );

이 시점에서 기본 SQL Server 복제 데이터베이스에 인증서가에서 /var/opt/mssql/data/dbm_certificate.cer 및 개인 키 at var/opt/mssql/data/dbm_certificate.pvk합니다.At this point, your primary SQL Server replica has a certificate at /var/opt/mssql/data/dbm_certificate.cer and a private key at var/opt/mssql/data/dbm_certificate.pvk. 이러한 두 파일을 가용성 복제본을 호스트할 모든 서버의 동일한 위치로 복사합니다.Copy these two files to the same location on all servers that will host availability replicas. Mssql 사용자를 사용 하거나 이러한 파일에 액세스 하려면 mssql 사용자에 게 권한을 부여 합니다.Use the mssql user, or give permission to the mssql user to access these files.

예를 들어 원본 서버에서 다음 명령을 대상 컴퓨터에 파일 복사합니다.For example, on the source server, the following command copies the files to the target machine. 대체는 **<node2>** 는 복제본을 호스팅하는 SQL Server 인스턴스 이름 사용 하 여 값입니다.Replace the **<node2>** values with the names of the SQL Server instances that will host the replicas.

cd /var/opt/mssql/data
scp dbm_certificate.* root@**<node2>**:/var/opt/mssql/data/

각 대상 서버에서 인증서에 액세스할 mssql 사용자에 게 권한을 부여 합니다.On each target server, give permission to the mssql user to access the certificate.

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

보조 서버에서 인증서 만들기Create the certificate on secondary servers

다음 TRANSACT-SQL 스크립트 기본 SQL Server 복제 데이터베이스에 만든 백업에서 마스터 키와 인증서를 만듭니다.The following Transact-SQL script creates a master key and a certificate from the backup that you created on the primary SQL Server replica. 이 명령은 사용자에게 인증서에 액세스할 권한도 부여합니다.The command also authorizes the user to access the certificate. 강력한 암호로 스크립트를 업데이트합니다.Update the script with strong passwords. 해독 암호는 이전 단계에서 .pvk 파일을 만들 때 사용한 암호와 동일합니다.The decryption password is the same password that you used to create the .pvk file in a previous step. 인증서를 만들려면 모든 보조 서버에서 다음 스크립트를 실행 합니다.To create the certificate, run the following script on all secondary servers:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate   
    AUTHORIZATION dbm_user
    FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
    DECRYPTION BY PASSWORD = '**<Private_Key_Password>**'
            );

모든 복제본에서 데이터베이스 미러링 끝점 만들기Create the database mirroring endpoints on all replicas

데이터베이스 미러링 끝점 (TCP (Transmission Control Protocol)를 사용 하 여 데이터베이스 미러링 세션에에서 참여 하거나 가용성 복제본을 호스팅하는 서버 인스턴스 간에 메시지를 주고받을 수 있습니다.Database mirroring endpoints use the Transmission Control Protocol (TCP) to send and receive messages between the server instances that participate in database mirroring sessions or host availability replicas. 데이터베이스 미러링 끝점은 고유의 TCP 포트 번호에서 수신합니다.The database mirroring endpoint listens on a unique TCP port number.

다음 TRANSACT-SQL 스크립트 라는 수신 대기 끝점을 만듭니다 Hadr_endpoint 가용성 그룹에 대 한 합니다.The following Transact-SQL script creates a listening endpoint named Hadr_endpoint for the availability group. 끝점을 시작 하 고 만든 사용자에 게 연결 권한을 부여 합니다.It starts the endpoint and gives connection permission to the user that you created. 스크립트를 실행하기 전에 **< ... >** 사이의 값을 바꿉니다.Before you run the script, replace the values between **< ... >**. 필요에 따라 IP 주소를 포함할 수 있습니다 LISTENER_IP = (0.0.0.0)합니다.Optionally you can include an IP address LISTENER_IP = (0.0.0.0). 수신기 IP 주소는 IPv4 주소 여야 합니다.The listener IP address must be an IPv4 address. 사용할 수도 있습니다 0.0.0.0합니다.You can also use 0.0.0.0.

모든 SQL Server 인스턴스에서 사용자 환경에 대해 다음 TRANSACT-SQL 스크립트를 업데이트 합니다.Update the following Transact-SQL script for your environment on all SQL Server instances:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_PORT = **<5022>**)
    FOR DATA_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

참고

SQL Server Express Edition 한 노드에서 구성 전용 복제본에 대 한 유일한 유효 값을 호스팅하는 데 사용 하는 경우 ROLEWITNESS합니다.If you use SQL Server Express Edition on one node to host a configuration-only replica, the only valid value for ROLE is WITNESS. SQL Server Express Edition에서 다음 스크립트를 실행 합니다.Run the following script on SQL Server Express Edition:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_PORT = **<5022>**)
    FOR DATA_MIRRORING (
        ROLE = WITNESS,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

방화벽에서 TCP 포트에 대 한 수신기 포트가 열려 있어야 합니다.The TCP port on the firewall must be open for the listener port.

중요

SQL Server 2017 릴리스에 대 한 데이터베이스 미러링 끝점에 대 한 지원 되는 유일한 인증 방법은 CERTIFICATE합니다.For the SQL Server 2017 release, the only authentication method supported for the database mirroring endpoint is CERTIFICATE. WINDOWS 이후 버전에서 옵션 설정 됩니다.The WINDOWS option will be enabled in a future release.

자세한 내용은 참조 데이터베이스 미러링 끝점 (SQL Server)합니다.For more information, see The database mirroring endpoint (SQL Server).

AG 만들기Create the AG

AG를 만듭니다.Create the AG. CLUSTER_TYPE = NONE을 설정합니다.Set CLUSTER_TYPE = NONE. 또한 각 복제본을 FAILOVER_MODE = MANUAL으로 설정합니다.In addition, set each replica with FAILOVER_MODE = MANUAL. 분석 또는 보고 워크로드를 실행하는 클라이언트 응용 프로그램에서 보조 데이터베이스에 직접 연결할 수 있습니다.Client applications running analytics or reporting workloads can directly connect to the secondary databases. 읽기 전용 라우팅 목록을 만들 수도 있습니다.You also can create a read-only routing list. 주 복제본에 대한 연결은 읽기 연결 요청을 라운드 로빈 방식으로 라우팅 목록에서 각 보조 복제본으로 전달합니다.Connections to the primary replica forward read connection requests to each of the secondary replicas from the routing list in a round-robin fashion.

다음 Transact-SQL 스크립트는 ag1이라는 AG를 만듭니다.The following Transact-SQL script creates an AG named ag1. 스크립트는 SEEDING_MODE = AUTOMATIC으로 AG 복제본을 구성합니다.The script configures the AG replicas with SEEDING_MODE = AUTOMATIC. 이렇게 설정하면 SQL Server에서 AG에 추가된 후 각 보조 서버에 데이터베이스를 자동으로 만듭니다.This setting causes SQL Server to automatically create the database on each secondary server after it is added to the AG. 사용자 환경에 대해 다음 스크립트를 업데이트합니다.Update the following script for your environment. <node1><node2> 값을 복제본을 호스팅하는 SQL Server 인스턴스의 이름으로 바꿉니다.Replace the <node1> and <node2> values with the names of the SQL Server instances that host the replicas. <5022> 값을 엔드포인트에 대해 설정한 포트로 바꿉니다.Replace the <5022> value with the port you set for the endpoint. 주 SQL Server 복제본에서 다음 Transact-SQL 스크립트를 실행합니다.Run the following Transact-SQL script on the primary SQL Server replica:

CREATE AVAILABILITY GROUP [ag1]
    WITH (CLUSTER_TYPE = NONE)
    FOR REPLICA ON
        N'<node1>' WITH (
            ENDPOINT_URL = N'tcp://<node1>:<5022>',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
                    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            ),
        N'<node2>' WITH ( 
            ENDPOINT_URL = N'tcp://<node2>:<5022>', 
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            );

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

AG에 보조 SQL 서버 조인Join secondary SQL Servers to the AG

다음 Transact-SQL 스크립트는 ag1이라는 AG에 서버를 조인합니다.The following Transact-SQL script joins a server to an AG named ag1. 사용자 환경에 대해 스크립트를 업데이트합니다.Update the script for your environment. 각 보조 SQL Server 복제본에서 다음 Transact-SQL 스크립트를 실행하여 AG를 조인합니다.On each secondary SQL Server replica, run the following Transact-SQL script to join the AG:

ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

가용성 그룹에 데이터베이스 추가Add a database to the availability group

가용성 그룹에 추가 하는 데이터베이스 전체 복구 모드에 있고 유효한 로그 백업를 확인 합니다.Ensure that the database you add to the availability group is in full recovery mode and has a valid log backup. 데이터베이스 백업을 수행 하는 테스트 데이터베이스 또는 새로 만든된 데이터베이스 인 경우.If this is a test database or a newly created database, take a database backup. 주 SQL Server에서 다음 TRANSACT-SQL 스크립트를 만들고 라는 데이터베이스를 백업 실행 db1:On the primary SQL Server, run the following Transact-SQL script to create and back up a database called db1:

CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1] 
   TO DISK = N'/var/opt/mssql/data/db1.bak';

기본 SQL Server 복제 데이터베이스 라는 데이터베이스를 추가 하려면 다음 TRANSACT-SQL 스크립트를 실행 db1 라는 가용성 그룹에 ag1:On the primary SQL Server replica, run the following Transact-SQL script to add a database called db1 to an availability group called ag1:

ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];

데이터베이스가 보조 서버에 생성되었는지 확인Verify that the database is created on the secondary servers

SQL Server 각 보조 복제본에서 있는지 다음 쿼리를 실행는 db1 데이터베이스가 만들어지고 동기화 됩니다.On each secondary SQL Server replica, run the following query to see if the db1 database was created and is synchronized:

SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

이 AG는 고가용성 구성이 아닙니다.This AG isn't a high-availability configuration. 고가용성이 필요한 경우의 지침을 따르세요 Linux의 SQL Server에 대 한 Always On 가용성 그룹 구성합니다.If you need high availability, follow the instructions at Configure an Always On Availability Group for SQL Server on Linux. 특히 사용 하 여 AG를 만들 CLUSTER_TYPE=WSFC (Windows)에서 또는 CLUSTER_TYPE=EXTERNAL (Linux)에서.Specifically, create the AG with CLUSTER_TYPE=WSFC (in Windows) or CLUSTER_TYPE=EXTERNAL (in Linux). 그런 다음 Windows 또는 Linux의 Pacemaker에 클러스터링 하거나 Windows Server 장애 조치를 사용 하 여 클러스터 관리자를 사용 하 여 통합.Then integrate with a cluster manager by using either Windows Server failover clustering on Windows or Pacemaker on Linux.

읽기 전용 보조 복제본에 연결Connect to read-only secondary replicas

읽기 전용 보조 복제본에 연결하는 방법은 두 가지가 있습니다.There are two ways to connect to read-only secondary replicas. 응용 프로그램은 보조 복제본을 호스팅하는 SQL Server 인스턴스에 직접 연결하고 데이터베이스를 쿼리할 수 있습니다.Applications can connect directly to the SQL Server instance that hosts the secondary replica and query the databases. 또한 수신기가 필요한 읽기 전용 라우팅을 사용할 수도 있습니다.They also can use read-only routing, which requires a listener.

읽기 비율 가용성 그룹에서 주 복제본 장애 조치(failover)Fail over the primary replica on a read-scale Availability Group

각 가용성 그룹에는 하나의 주 복제본만 있습니다.Each availability group has only one primary replica. 주 복제본은 읽기 및 쓰기를 허용합니다.The primary replica allows reads and writes. 주 복제본을 변경하기 위해 장애 조치(failover)를 수행할 수 있습니다.To change which replica is primary, you can fail over. 고가용성을 위한 가용성 그룹에서 클러스터 관리자는 장애 조치 프로세스를 자동화합니다.In an availability group for high availability, the cluster manager automates the failover process. 클러스터 형식이 NONE인 가용성 그룹에서 장애 조치(failover) 프로세스는 수동입니다.In an availability group with cluster type NONE, the failover process is manual.

클러스터 형식이 NONE인 가용성 그룹에서 두 가지 방법으로 주 복제본을 장애 조치(failover)할 수 있습니다.There are two ways to fail over the primary replica in an availability group with cluster type NONE:

  • 데이터 손실이 있는 강제 수동 장애 조치(Failover)Forced manual failover with data loss
  • 데이터가 손실되지 않는 수동 장애 조치(Failover)Manual failover without data loss

데이터 손실이 있는 강제 수동 장애 조치(Failover)Forced manual failover with data loss

주 복제본을 사용할 수 없고 복구할 수 없는 경우 이 방법을 사용합니다.Use this method when the primary replica isn't available and can't be recovered.

데이터 손실이 있는 강제 장애 조치(failover)를 수행하려면 대상 보조 복제본을 호스팅하는 SQL Server 인스턴스에 연결하고 다음 명령을 실행합니다.To force failover with data loss, connect to the SQL Server instance that hosts the target secondary replica and then run the following command:

ALTER AVAILABILITY GROUP [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS;

데이터가 손실되지 않는 수동 장애 조치(Failover)Manual failover without data loss

주 복제본을 사용할 수 있지만 이 구성을 일시적 또는 영구적으로 변경하고 주 복제본을 호스팅하는 SQL Server 인스턴스를 변경해야 하는 경우 이 방법을 사용합니다.Use this method when the primary replica is available, but you need to temporarily or permanently change the configuration and change the SQL Server instance that hosts the primary replica. 잠재적인 데이터 손실을 방지하려면 수동 장애 조치(failover)를 실행하기 전에 대상 보조 복제본이 최신 상태인지 확인합니다.To avoid potential data loss, before you issue the manual failover, ensure that the target secondary replica is up to date.

데이터 손실이 없는 수동 장애 조치(Failover)를 수행하려면:To manually fail over without data loss:

  1. 대상 보조 복제본 SYNCHRONOUS_COMMIT를 만듭니다.Make the target secondary replica SYNCHRONOUS_COMMIT.

    ALTER AVAILABILITY GROUP [ag1] 
         MODIFY REPLICA ON N'<node2>' 
         WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. 활성 트랜잭션이 주 복제본과 적어도 하나의 동기 보조 복제본에 커밋되었는지 확인하려면 다음 쿼리를 실행합니다.To identify that active transactions are committed to the primary replica and at least one synchronous secondary replica, run the following query:

    SELECT ag.name, 
       drs.database_id, 
       drs.group_id, 
       drs.replica_id, 
       drs.synchronization_state_desc, 
       ag.sequence_number
    FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag
    WHERE drs.group_id = ag.group_id; 
    

    보조 복제본이 synchronization_state_descSYNCHRONIZED일 때 동기화됩니다.The secondary replica is synchronized when synchronization_state_desc is SYNCHRONIZED.

  3. REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT을 1로 업데이트합니다.Update REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1.

    다음 스크립트에서는 ag1 가용성 그룹에서 REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT을 1로 설정합니다.The following script sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1 on an availability group named ag1. 다음 스크립트를 실행하기 전에 ag1을 가용성 그룹의 이름으로 바꿉니다.Before you run the following script, replace ag1 with the name of your availability group:

    ALTER AVAILABILITY GROUP [ag1] 
         SET REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1;
    

    이 설정은 모든 활성 트랜잭션이 주 복제본과 적어도 하나의 동기 보조 복제본에 커밋되었는지 확인합니다.This setting ensures that every active transaction is committed to the primary replica and at least one synchronous secondary replica.

  4. 주 복제본을 보조 복제본으로 강등합니다.Demote the primary replica to a secondary replica. 주 복제본이 강등되면 읽기 전용입니다.After the primary replica is demoted, it's read-only. 역할을 SECONDARY로 업데이트하려면 주 복제본을 호스팅하는 SQL Server 인스턴스에서 이 명령을 실행합니다.To update the role to SECONDARY, run the following command on the SQL Server instance that hosts the primary replica:

    ALTER AVAILABILITY GROUP [ag1] 
         SET (ROLE = SECONDARY); 
    
  5. 대상 보조 복제본을 주 복제본으로 승격합니다.Promote the target secondary replica to primary.

    ALTER AVAILABILITY GROUP ag1 FORCE_FAILOVER_ALLOW_DATA_LOSS; 
    

    참고

    가용성 그룹 사용을 삭제하려면 DROP AVAILABILITY GROUP을 사용합니다.To delete an availability group, use DROP AVAILABILITY GROUP. NONE 또는 EXTERNAL 클러스터 형식을 사용하여 만든 가용성 그룹의 경우 가용성 그룹의 일부인 모든 복제본에서 명령을 실행합니다.For an availability group that's created with cluster type NONE or EXTERNAL, execute the command on all replicas that are part of the availability group.

다음 단계Next steps