구성 SQL Server Always On 가용성 그룹 Linux에서 고가용성을 위해Configure SQL Server Always On Availability Group for high availability on Linux

이 항목 적용 대상: 예SQL Server (Linux 전용)없음Azure SQL Database없음Azure SQL Data Warehouse없음 병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

이 문서는 SQL Server 항상에서 AG (가용성 그룹) 고가용성을 위해 Linux에서 만드는 방법을 설명 합니다.This article describes how to create a SQL Server Always On Availability Group (AG) for high availability on Linux. Ag에 대 한 두 구성 종류가 있습니다.There are two configuration types for AGs. A 고가용성 구성 클러스터 관리자를 사용 하 여 비즈니스 연속성을 제공 합니다.A high availability configuration uses a cluster manager to provide business continuity. 이 구성에서 읽기-배율 복제본을 포함할 수도 있습니다.This configuration can also include read-scale replicas. 이 문서에서는 고가용성에 대 한 AG를 만드는 방법을 설명 합니다.This document explains how to create the AG for high availability.

만들 수도 있습니다 클러스터 없이 AG에 대 한 관리자 읽기-배율합니다.You can also create an AG without a cluster manager for read-scale. 읽기 배율에 대 한 AG 성능 확장에 대 한 읽기 전용 복제본을 제공합니다. 고가용성을 제공 하지는 않습니다.The AG for read scale only provides read-only replicas for performance scale-out. It does not provide high availability. 읽기-배율에 대 한 AG를 만들려면 참조 Linux에서 읽기-배율에 대 한 SQL Server 가용성 그룹 구성합니다.To create an AG for read-scale, see Configure a SQL Server Availability Group for read-scale on Linux.

높은 가용성 및 데이터 보호를 보장 하는 구성 2 개 또는 세 개의 동기 커밋 복제본 필요 합니다.Configurations that guarantee high availability and data protection require either two or three synchronous commit replicas. 동기 복제본 3 개 이상의 서버를 사용할 수 없는 경우에 AG 복구할 자동으로 수 있습니다.With three synchronous replicas, the AG can automatically recover even if one server is not available. 자세한 내용은 가용성 그룹 구성에 대 한 높은 가용성 및 데이터 보호합니다.For more information, see High availability and data protection for Availability Group configurations.

모든 서버는 물리적 이거나 가상 해야 하며 가상 서버는 동일한 가상화 플랫폼에 있어야 합니다.All servers must be either physical or virtual, and virtual servers must be on the same virtualization platform. 이 요구 사항은 펜싱 에이전트 플랫폼 특정 하기 때문입니다.This requirement is because the fencing agents are platform specific. 참조 게스트 클러스터에 대 한 정책을합니다.See Policies for Guest Clusters.

로드맵Roadmap

고가용성을 위해 Linux 서버에서 AG를 만드는 단계는 Windows Server 장애 조치 클러스터에 대 한 단계와 다릅니다.The steps to create an AG on Linux servers for high availability are different from the steps on a Windows Server failover cluster. 다음과 같은 단계를 간략히 설명 합니다.The following list describes the high-level steps:

  1. 세 가지 클러스터 서버에서 SQL Server 구성합니다.Configure SQL Server on three cluster servers.

    중요

    AG의 모든 세 서버 고가용성 Linux 펜스 에이전트를 사용 하 여 서버에서 리소스를 격리할 수 있으므로 물리적 또는 가상 동일한 플랫폼에서 되도록 해야 합니다.All three servers in the AG need to be on the same platform - physical or virtual - because Linux high availability uses fencing agents to isolate resources on servers. 펜싱 에이전트는 각 플랫폼에 대 한 특정입니다.The fencing agents are specific for each platform.

  2. AG를 만듭니다.Create the AG. 이 단계는 현재이 문서에서 다룹니다.This step is covered in this current article.

  3. Pacemaker와 같은 클러스터 리소스 관리자를 구성 합니다.Configure a cluster resource manager, like Pacemaker.

    클러스터 리소스 관리자를 구성 하는 방법은 특정 Linux 배포에 따라 달라 집니다.The way to configure a cluster resource manager depends on the specific Linux distribution. 자세한 배포 지침은 다음 링크를 참조 하세요.See the following links for distribution specific instructions:

    중요

    프로덕션 환경에 같은 고가용성에 대 한 STONITH는 펜싱 에이전트가 필요합니다.Production environments require a fencing agent, like STONITH for high availability. 이 문서의 데모는 펜싱 에이전트를 사용 하지 마세요.The demonstrations in this documentation do not use fencing agents. 데모 테스트 및 유효성 검사에만 됩니다.The demonstrations are for testing and validation only.

    Linux 클러스터는 클러스터를 알려진된 상태로 반환할 펜싱을 사용 합니다.A Linux cluster uses fencing to return the cluster to a known state. 펜스를 구성 하는 방법은 배포 및 환경에 따라 달라 집니다.The way to configure fencing depends on the distribution and the environment. 현재 펜스는 일부 클라우드 환경에서 사용할 수 없습니다.Currently, fencing is not available in some cloud environments. 자세한 내용은 RHEL 높은 가용성 클러스터-가상화 플랫폼에 대 한 지원 정책을합니다.For more information, see Support Policies for RHEL High Availability Clusters - Virtualization Platforms.

    SLES를 참조 하세요 SUSE Linux Enterprise 높은 가용성 확장합니다.For SLES, see SUSE Linux Enterprise High Availability Extension.

  4. AG를 클러스터 리소스로 추가 합니다.Add the AG as a resource in the cluster.

    AG를 클러스터 리소스로 추가 하는 방법은 Linux 배포판에 따라 달라 집니다.The way to add the AG as a resource in the cluster depends on the Linux distribution. 자세한 배포 지침은 다음 링크를 참조 하세요.See the following links for distribution specific instructions:

사전 요구 사항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/hostname 사용 하 여 vi:The following script lets you edit /etc/hostname with vi:

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

    참고

    호스트 이름에 DNS 서버에서 해당 IP를 사용 하 여 등록 된 경우에 다음 단계를 수행 필요가 없습니다.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 파일에 localhost 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/hosts 사용 하 여 vi: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. node2 하 고 node3 보조 복제본을 호스팅하는 서버를 가리킵니다.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-server 다시 시작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 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에 인증서, 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. 강력한 암호로 스크립트를 업데이트합니다.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
    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(전송 제어 프로토콜)를 사용하여 데이터베이스 미러링 세션에 참여하거나 가용성 복제본을 호스트하는 서버 인스턴스 간에 메시지를 보내고 받습니다.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 certificate 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;

참고

노드 하나에서 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;

방화벽의 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에 3 개 이상의 복제본에 필요 합니다.For a high availability configuration that ensures automatic failover, the AG requires at least three replicas. 고가용성을 지원할 수 있습니다 다음 구성 중 하나:Either of the following configurations can support high availability:

정보를 참조 하세요 가용성 그룹 구성에 대 한 높은 가용성 및 데이터 보호합니다.For information, see High availability and data protection for Availability Group configurations.

참고

가용성 그룹 추가 동기 또는 비동기 복제본을 포함할 수 있습니다.The availability groups can include additional synchronous or asynchronous replicas.

Linux에서 고가용성에 대 한 AG를 만듭니다.Create the AG for high availability on Linux. 사용 된 CREATE AVAILABILITY GROUP 사용 하 여 CLUSTER_TYPE = EXTERNAL입니다.Use the CREATE AVAILABILITY GROUP with CLUSTER_TYPE = EXTERNAL.

  • 가용성 그룹- CLUSTER_TYPE = EXTERNAL AG를 관리 하는 외부 클러스터 엔터티를 지정 합니다.Availability group - CLUSTER_TYPE = EXTERNAL Specifies that an external cluster entity manages the AG. Pacemaker는 클러스터 외부 엔터티의 예시입니다.Pacemaker is an example of an external cluster entity. 클러스터 유형 AG는 외부When the AG cluster type is external,

  • 주 복제본과 보조 복제본 설정 FAILOVER_MODE = EXTERNAL합니다.Set Primary and secondary replicas FAILOVER_MODE = EXTERNAL. Pacemaker와 같은 외부 클러스터 관리자를 사용 하 여 복제본 상호 작용 한다고 지정 합니다.Specifies that the replica interacts with an external cluster manager, like Pacemaker.

다음 TRANSACT-SQL 스크립트 만들기 라는 고가용성에 대 한 AG ag1합니다.The following Transact-SQL scripts create an AG for high availability named ag1. 스크립트는 SEEDING_MODE = AUTOMATIC으로 AG 복제본을 구성합니다.The script configures the AG replicas with SEEDING_MODE = AUTOMATIC. 이렇게이 설정 하면 SQL Server를 자동으로 각 보조 서버에 데이터베이스를 만듭니다.This setting causes SQL Server to automatically create the database on each secondary server. 사용자 환경에 대해 다음 스크립트를 업데이트합니다.Update the following script for your environment. 대체는 <node1>, <node2>, 또는 <node3> 복제본을 호스팅하는 SQL Server 인스턴스의 이름 가진 값입니다.Replace the <node1>, <node2>, or <node3> values with the names of the SQL Server instances that host the replicas. 대체는 <5022> 데이터 미러링 끝점에 대해 설정한 포트를 사용 하 여 합니다.Replace the <5022> with the port you set for the data mirroring endpoint. AG를 만들려면 주 복제본을 호스팅하는 SQL Server 인스턴스에서 다음 TRANSACT-SQL을 실행 합니다.To create the AG, run the following Transact-SQL on the SQL Server instance that hosts the primary replica.

실행할 하나만 다음 스크립트 중:Run only one of the following scripts:

  • AG를 동기 복제본 3 개 만들기Create AG with three synchronous replicas

    CREATE AVAILABILITY GROUP [ag1]
        WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)
        FOR REPLICA ON
            N'<node1>' 
             WITH (
                ENDPOINT_URL = N'tcp://<node1>:<5022>',
                AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
                FAILOVER_MODE = EXTERNAL,
                SEEDING_MODE = AUTOMATIC
                ),
            N'<node2>' 
             WITH ( 
                ENDPOINT_URL = N'tcp://<node2>:<5022>', 
                AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
                FAILOVER_MODE = EXTERNAL,
                SEEDING_MODE = AUTOMATIC
                ),
            N'<node3>'
            WITH( 
               ENDPOINT_URL = N'tcp://<node3>:<5022>', 
               AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
               FAILOVER_MODE = EXTERNAL,
               SEEDING_MODE = AUTOMATIC
               );
    
    ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
    

    중요

    동기 복제본 3 개 AG를 만들려면 앞의 스크립트를 실행 한 후 다음 스크립트를 실행 하지 않습니다.After you run the preceding script to create an AG with three synchronous replicas, do not run the following script:

  • 두 개의 동기 복제본과 구성 복제본을 사용 하 여 AG를 만듭니다.Create AG with two synchronous replicas and a configuration replica:

    중요

    이 아키텍처에는 모든 버전을의 SQL Server 세 번째 복제본을 호스팅할 수 있습니다.This architecture allows any edition of SQL Server to host the third replica. 예를 들어, SQL Server Enterprise Edition에서 세 번째 복제본을 호스팅할 수 있습니다.For example, the third replica can be hosted on SQL Server Enterprise Edition. Enterprise Edition에만 유효한 끝점 유형이 WITNESS합니다.On Enterprise Edition, the only valid endpoint type is WITNESS.

    CREATE AVAILABILITY GROUP [ag1] 
       WITH (CLUSTER_TYPE = EXTERNAL) 
       FOR REPLICA ON 
        N'<node1>' WITH ( 
           ENDPOINT_URL = N'tcp://<node1>:<5022>', 
           AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
           FAILOVER_MODE = EXTERNAL, 
           SEEDING_MODE = AUTOMATIC 
           ), 
        N'<node2>' WITH (  
           ENDPOINT_URL = N'tcp://<node2>:<5022>',  
           AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
           FAILOVER_MODE = EXTERNAL, 
           SEEDING_MODE = AUTOMATIC 
           ), 
        N'<node3>' WITH ( 
           ENDPOINT_URL = N'tcp://<node3>:<5022>', 
           AVAILABILITY_MODE = CONFIGURATION_ONLY  
           );
    ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
    

  • 두 개의 동기 복제본을 사용 하 여 AG를 만들기Create AG with two synchronous replicas

    동기 가용성 모드를 사용 하 여 두 개의 복제본을 포함 합니다.Include two replicas with synchronous availability mode. 예를 들어, 다음 스크립트를 만들고 호출 AG ag1합니다.For example, the following script creates an AG called ag1. node1node2 자동 시드 및 자동 장애 조치를 사용 하 여 동기 모드에서 복제본을 호스트 합니다.node1 and node2 host replicas in synchronous mode, with automatic seeding and automatic failover.

    중요

    만 두 개의 동기 복제본을 사용 하 여 AG를 만들려면 다음 스크립트를 실행 합니다.Only run the following script to create an AG with two synchronous replicas. 앞의 스크립트 중 하나를 실행 하는 경우에 다음 스크립트를 실행 하지 마십시오.Do not run the following script if you ran either preceding script.

    CREATE AVAILABILITY GROUP [ag1]
       WITH (CLUSTER_TYPE = EXTERNAL)
       FOR REPLICA ON
       N'node1' WITH (
          ENDPOINT_URL = N'tcp://node1:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = EXTERNAL,
          SEEDING_MODE = AUTOMATIC
       ),
       N'node2' WITH ( 
          ENDPOINT_URL = N'tcp://node2:5022', 
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = EXTERNAL,
          SEEDING_MODE = AUTOMATIC
       );
    
    ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
    

사용 하 여 AG를 구성할 수도 있습니다 CLUSTER_TYPE=EXTERNAL SQL Server Management Studio 또는 PowerShell을 사용 합니다.You can also configure an AG with CLUSTER_TYPE=EXTERNAL using SQL Server Management Studio or PowerShell.

보조 복제본 AG에 조인Join secondary replicas to the AG

다음 TRANSACT-SQL 스크립트를 명명 된 AG에 SQL Server 인스턴스를 조인 ag1합니다.The following Transact-SQL script joins a SQL Server instance to an AG named ag1. 사용자 환경에 대해 스크립트를 업데이트합니다.Update the script for your environment. 보조 복제본을 호스팅하는 각 SQL Server 인스턴스의 AG에 조인 하려면 다음 TRANSACT-SQL을 실행 합니다.On each SQL Server instance that hosts a secondary replica, run the following Transact-SQL to join the AG.

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

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를 만든 후 고가용성을 위해 Pacemaker와 같은 클러스터 기술을 사용 하 여 통합을 구성 해야 합니다.After you create the AG, you must configure integration with a cluster technology like Pacemaker for high availability. Ag를 사용 하 여 시작을 사용 하 여 읽기-배율 구성에 대해 SQL Server 2017(14.x)SQL Server 2017 (14.x), 클러스터를 설정 하지 않아도 됩니다.For a read-scale configuration using AGs, starting with SQL Server 2017(14.x)SQL Server 2017 (14.x), setting up a cluster is not required.

이 문서의 단계를 수행 하는 경우 아직 클러스터 되지 않은 AG 해야 합니다.If you followed the steps in this document, you have an AG that is not yet clustered. 다음 단계는 클러스터를 추가 하는 것입니다.The next step is to add the cluster. 이 구성은 읽기-배율/부하 분산 시나리오에 대 한 유효한, 고가용성을 위해 완전 하지 않습니다.This configuration is valid for read-scale/load balancing scenarios, it is not complete for high availability. 고가용성을 위해 AG를 클러스터 리소스로 추가 해야 합니다.For high availability, you need to add the AG as a cluster resource. 참조 다음 단계 지침에 대 한 합니다.See Next steps for instructions.

참고Notes

중요

클러스터를 구성 하 고를 클러스터 리소스로 AG를 추가한 후에 AG 리소스를 장애 조치할 Transact SQL을 사용할 수 없습니다.After you configure the cluster and add the AG as a cluster resource, you cannot use Transact-SQL to fail over the AG resources. Linux의 SQL Server 클러스터 리소스 연계 되지 않습니다와 긴밀 하 게 운영 체제에는 서버 장애 조치 클러스터 (WSFC (Windows) 같습니다.SQL Server cluster resources on Linux are not coupled as tightly with the operating system as they are on a Windows Server Failover Cluster (WSFC). SQL Server 서비스를 클러스터의 현재 상태 인식 없습니다.SQL Server service is not aware of the presence of the cluster. 모든 오케스트레이션은 클러스터 관리 도구를 통해 수행 됩니다.All orchestration is done through the cluster management tools. RHEL 또는 Ubuntu에서 사용 하 여 pcs입니다.In RHEL or Ubuntu use pcs. SLES에서 사용 하 여 crm입니다.In SLES use crm.

중요

AG는 클러스터 리소스를 경우 알려진된 문제로 현재 릴리스에서 비동기 복제본에 데이터 손실이 있는 강제 장애 조치 작동 하지 않습니다.If the AG is a cluster resource, there is a known issue in current release where forced failover with data loss to an asynchronous replica does not work. 이 향후 릴리스에서 수정 될 예정입니다.This will be fixed in the upcoming release. 동기 복제본으로 수동 또는 자동 장애 조치 성공합니다.Manual or automatic failover to a synchronous replica succeeds.

다음 단계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