構成する SQL Server Always On 可用性グループの Linux での高可用性Configure SQL Server Always On Availability Group for high availability on Linux

適用対象: はいSQL サーバー (Linux のみ)ありませんAzure SQL DatabaseありませんAzure SQL Data Warehouseありません並列データ ウェアハウス APPLIES TO: yesSQL Server (Linux only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

この記事では、Linux 上で、SQL Server 常に 可用性グループ (AG) の高可用性を作成する方法について説明します。This article describes how to create a SQL Server Always On Availability Group (AG) for high availability on Linux. Ag の構成の 2 つの種類があります。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. このドキュメントでは、高可用性のため、可用性グループを作成する方法について説明します。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. 読み取りスケール可用性グループでは、パフォーマンス スケール アウトのための読み取り専用レプリカを提供することだけです。高可用性は提供されません。The AG for read scale only provides read-only replicas for performance scale-out. It does not provide high availability. 読み取りスケール用の AG を作成するを参照してください。 on Linux で読み取りスケールの SQL Server 可用性グループを構成するします。To create an AG for read-scale, see Configure a SQL Server Availability Group for read-scale on Linux.

高可用性とデータ保護を保証する構成では、2 つまたは 3 つの同期コミット レプリカが必要です。Configurations that guarantee high availability and data protection require either two or three synchronous commit replicas. 次の 3 つの同期レプリカを可用性グループを 1 つのサーバーが利用できない場合でも自動的に回復できます。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. 次の 3 つのクラスター サーバー上の SQL Server の構成します。Configure SQL Server on three cluster servers.

    重要

    AG 内のすべての 3 つのサーバーは、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 高可用性 Extensionします。For SLES, see SUSE Linux Enterprise High Availability Extension.

  4. クラスター内のリソースとして、可用性グループを追加します。Add the AG as a resource in the cluster.

    クラスター内のリソースとして、可用性グループを追加する方法は、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/hostnamevi:。The following script lets you edit /etc/hostname with vi:

    sudo vi /etc/hostname
    
  2. Hosts ファイルを構成します。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 ファイルに、ノードのホスト名を 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.

    すべてのサーバー上の hosts ファイルには、可用性グループに参加するすべてのサーバーの 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/etc/hosts を示しています。node1node2node3 に対して追加があります。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-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. これら 2 つのファイルを、可用性レプリカをホストするすべてのサーバー上の同じ場所にコピーします。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 DATABASE_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;

注意

構成専用レプリカの唯一の有効な値をホストする 1 つのノードで、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 DATABASE_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

このセクションの例では、TRANSACT-SQL を使用して可用性グループを作成する方法について説明します。The examples in this section explain how to create the availability group using Transact-SQL. SQL Server Management Studio の可用性グループ ウィザードを使用することもできます。You can also use the SQL Server Management Studio Availability Group Wizard. ウィザードを使用して AG を作成するときに、レプリカを AG に結合すると、エラーを返します。When you create an AG with the wizard, it will return an error when you join the replicas to the AG. この問題を解決するには付与ALTERCONTROL、およびVIEW DEFINITIONSすべてのレプリカで可用性グループの pacemaker にします。To fix this, grant ALTER, CONTROL, and VIEW DEFINITIONS to the pacemaker on the AG on all replicas. プライマリ レプリカに対しては、権限が与えられる後、は、可用性グループ ウィザードの手順が正常に機能をすべてのレプリカでのアクセス許可を与える HA のために、ノードに参加させます。Once permissions are granted on the primary replica, join the nodes to the AG through the wizard, but for HA to function properly, grant permission on all replicas.

確実に自動フェールオーバーの高可用性構成の場合、可用性グループには、少なくとも 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 上の高可用性のため、可用性グループを作成します。Create the AG for high availability on Linux. 使用して、 CREATE AVAILABILITY GROUPCLUSTER_TYPE = EXTERNALします。Use the CREATE AVAILABILITY GROUP with CLUSTER_TYPE = EXTERNAL.

  • 可用性グループ -CLUSTER_TYPE = EXTERNAL外部のクラスター エンティティが、可用性グループを管理するを指定します。Availability group - CLUSTER_TYPE = EXTERNAL Specifies that an external cluster entity manages the AG. Pacemaker は、外部のクラスター エンティティの例を示します。Pacemaker is an example of an external cluster entity. 可用性グループのクラスターの種類が、外部場合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 スクリプトの作成という名前の高可用性の AGag1します。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. 可用性グループを作成するには、プライマリ レプリカをホストする SQL Server インスタンスで次の TRANSACT-SQL を実行します。To create the AG, run the following Transact-SQL on the SQL Server instance that hosts the primary replica.

実行1 つだけの次のスクリプト。Run only one of the following scripts:

  • 次の 3 つの同期レプリカでの AG を作成します。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:

  • 2 つの同期レプリカ構成のレプリカと AG を作成します。Create AG with two synchronous replicas and a configuration replica:

    重要

    このアーキテクチャでは、3 番目のレプリカをホストする SQL Server の任意のエディションでできます。This architecture allows any edition of SQL Server to host the third replica. たとえば、3 番目のレプリカは、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;
    

  • 2 つの同期レプリカでの AG を作成します。Create AG with two synchronous replicas

    同期の可用性モードの 2 つのレプリカを含めます。Include two replicas with synchronous availability mode. たとえば、次のスクリプトと呼ばれる、AG を作成します。ag1します。For example, the following script creates an AG called ag1. node1 node2自動シード処理と自動フェールオーバーで同期モードでのレプリカをホストします。node1 and node2 host replicas in synchronous mode, with automatic seeding and automatic failover.

    重要

    のみと 2 つの同期レプリカを可用性グループを作成する次のスクリプトを実行します。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.

セカンダリ レプリカ、可用性グループへの参加します。Join secondary replicas to the AG

Pacemaker のユーザーが必要とALTERCONTROL、およびVIEW DEFINITIONすべてのレプリカで可用性グループに対する権限。The pacemaker user requires ALTER, CONTROL, and VIEW DEFINITION permissions on the availability group on all replicas. アクセス許可を付与するには、可用性グループに追加された後すぐに、プライマリ レプリカとセカンダリ レプリカごとに、可用性グループを作成した後、次の TRANSACT-SQL スクリプトを実行します。To grant permissions, run the following Transact-SQL script after the availability group is created on the primary replica and each secondary replica immediately after they are added to the availability group. スクリプトを実行する前に置き換える<pacemakerLogin>pacemaker のユーザー アカウントの名前に置き換えます。Before you run the script, replace <pacemakerLogin> with the name of the pacemaker user account.

GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO <pacemakerLogin>
GRANT VIEW SERVER STATE TO <pacemakerLogin>

次の TRANSACT-SQL スクリプトでは、SQL Server インスタンスを結合という名前を AG にag1します。The following Transact-SQL script joins a SQL Server instance to an AG named ag1. ご利用の環境に合わせてスクリプトを変更してください。Update the script for your environment. セカンダリ レプリカをホストする各 SQL Server インスタンスでは、可用性グループに参加する次の 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;

重要

可用性グループを作成した後は、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.

このドキュメントで手順を実行する場合、クラスター化されていない可用性グループがあります。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. 高可用性のためには、クラスター リソースとして、可用性グループを追加する必要があります。For high availability, you need to add the AG as a cluster resource. 参照してください次のステップ手順についてはします。See Next steps for instructions.

メモNotes

重要

クラスターを構成するクラスター リソースとして、可用性グループを追加したら、TRANSACT-SQL を使用して AG リソースをフェールオーバーすることはできません。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 クラスター リソースは関連付けられていませんに厳しく、オペレーティング システムは Windows Server フェールオーバー クラスター (WSFC) にします。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.

重要

既知の問題が、可用性グループがクラスター リソースの場合は、非同期レプリカにデータ損失の強制フェールオーバーが機能しないという現在のリリースであります。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