分散型可用性グループDistributed availability groups

分散型可用性グループは、SQL Server 2016 で導入された新しい機能であり、既存の AlwaysOn 可用性グループ機能のバリエーションです。Distributed availability groups are a new feature introduced in SQL Server 2016, as a variation of the existing Always On availability groups feature. この記事では、分散型可用性グループのいくつかの側面を明らかにし、既存の SQL Server ドキュメントを補完します。This article clarifies some aspects of distributed availability groups and complements the existing SQL Server documentation.

注意

"DAG" は、Exchange のデータベース可用性グループ機能で既に使われているため、"分散型可用性グループ" の正式な省略形ではありません。"DAG" is not the official abbreviation for distributed availability group, because the abbreviation is already used for the Exchange Database Availability Group feature. Exchange のこの機能は、SQL Server の可用性グループまたは分散型可用性グループとは関係がありません。This Exchange feature has no relation to SQL Server availability groups or distributed availability groups.

分散型可用性グループの構成方法については、「分散型可用性グループを構成する」をご覧ください。To configure a distributed availability group, see Configure distributed availability groups.

分散型可用性グループについて理解するUnderstand distributed availability groups

分散型可用性グループは、2 つの異なる可用性グループにまたがるもので、特殊な種類の可用性グループです。A distributed availability group is a special type of availability group that spans two separate availability groups. 基になる可用性グループは、2 つの異なる Windows Server フェールオーバー クラスタリング (WSFC) クラスターで構成されます。The underlying availability groups are configured on two different Windows Server Failover Clustering (WSFC) clusters. 分散型可用性グループに参加する可用性グループは、同じ場所に存在している必要はありません。The availability groups that participate in a distributed availability group do not need to be in the same location. 物理、仮想、オンプレミス、パブリック クラウド、または可用性グループの配置をサポートする任意の場所のいずれでもかまいません。They can be physical, virtual, on-premises, in the public cloud, or anywhere that supports an availability-group deployment. 2 つの可用性グループが通信できる限り、それらで分散型可用性グループを構成できます。As long as two availability groups can communicate, you can configure a distributed availability group with them.

従来の可用性グループには、WSFC クラスター内に構成されたリソースがあります。A traditional availability group has resources configured in a WSFC cluster. 分散型可用性グループでは、WSFC クラスター内には何も構成されません。A distributed availability group does not configure anything in the WSFC cluster. 分散型可用性グループに関するすべてのものは、SQL Server 内に保持されます。Everything about it is maintained within SQL Server. 分散型可用性グループの情報を表示する方法については、「Viewing distributed availability group information」(分散可用性グループの情報を表示する) を参照してください。To learn how to view information for a distributed availability group, see Viewing distributed availability group information.

分散型可用性グループでは、基になる可用性グループにリスナーが存在する必要があります。A distributed availability group requires that the underlying availability groups have a listener. 従来の可用性グループではスタンドアロン インスタンスに対して基になるサーバー名を指定しましたが (または、SQL Server フェールオーバー クラスター インスタンス (FCI) の場合は、ネットワーク名リソースに関連付けられた値)、分散型可用性グループでは、可用性グループを作成するときに ENDPOINT_URL パラメーターで分散型可用性グループに構成されているリスナーを指定します。Rather than provide the underlying server name for a standalone instance (or in the case of a SQL Server failover cluster instance [FCI], the value associated with the network name resource) as you would with a traditional availability group, you specify the configured listener for the distributed availability group with the parameter ENDPOINT_URL when you create it. 分散型可用性グループの基になる各可用性グループにはリスナーがありますが、分散型可用性グループにはリスナーはありません。Although each underlying availability group of the distributed availability group has a listener, a distributed availability group has no listener.

次の図では、それぞれが専用の WSFC クラスターに構成されている 2 つの可用性グループ (AG 1 および AG 2) にまたがる分散型可用性グループの概略を示します。The following figure shows a high-level view of a distributed availability group that spans two availability groups (AG 1 and AG 2), each configured on its own WSFC cluster. 分散型可用性グループには、可用性グループごとに 2 つずつ、合計で 4 つのレプリカがあります。The distributed availability group has a total of four replicas, with two in each availability group. 各可用性グループは最大数までのレプリカをサポートできるので、Standard Edition に基づく分散型可用性グループでは最大 4 個のレプリカ、Enterprise Edition に基づく分散型可用性グループでは最大 18 個のレプリカを、持つことができます。Each availability group can support up to the maximum number of replicas, so a distributed availability group based on Standard Edition can have up to four replicas, and one based on Enterprise Edition can have up to 18 total replicas.

分散型可用性グループの概要 High-level view of a distributed availability group

分散型可用性グループでのデータ移動は、同期または非同期として構成できます。You can configure the data movement in distributed availability groups as synchronous or asynchronous. ただし、分散型可用性グループでのデータの移動は、従来の可用性グループと若干異なります。However, data movement is slightly different within distributed availability groups compared to a traditional availability group. 各可用性グループにはプライマリ レプリカがありますが、挿入、更新、削除を受け付けることができるのは、分散型可用性グループに参加しているデータベースの 1 つのコピーだけです。Although each availability group has a primary replica, there is only one copy of the databases participating in a distributed availability group that can accept inserts, updates, and deletions. 次の図に示すように、AG 1 はプライマリ可用性グループです。As shown in the following figure, AG 1 is the primary availability group. AG 1 のプライマリ レプリカは、AG 1 のセカンダリ レプリカと AG 2 のプライマリ レプリカの両方にトランザクションを送信します。Its primary replica sends transactions to both the secondary replicas of AG 1 and the primary replica of AG 2. AG 2 のプライマリ レプリカは、フォワーダーとも呼ばれます。The primary replica of AG 2 is also known as a forwarder. フォワーダーは、分散型可用性グループのセカンダリ可用性グループのプライマリ レプリカです。A forwarder is a primary replica in a secondary availability group in a distributed availability group. フォワーダーは、プライマリ可用性グループ内のプライマリ レプリカからトランザクションを受信し、それを独自の可用性グループ内のセカンダリ レプリカに転送します。The forwarder receives transactions from the primary replica in the primary availability group and forwards them to the secondary replicas in its own availability group. そしてフォワーダーが、更新された AG 2 のセカンダリ レプリカを保持します。The forwarder then keeps the secondary replicas of AG 2 updated.

分散型可用性グループとそのデータ移動

AG 2 のプライマリ レプリカが挿入、更新、削除を受け付けるようにする唯一の方法は、AG 1 から分散型可用性グループを手動でフェールオーバーすることです。The only way to make AG 2's primary replica accept inserts, updates, and deletions is to manually fail over the distributed availability group from AG 1. 上の図で、AG 1 にはデータベースの書き込み可能なコピーが含まれるため、フェールオーバーを発行すると、AG 2 は挿入、更新、削除を処理できる可用性グループになります。In the preceding figure, because AG 1 contains the writeable copy of the database, issuing a failover makes AG 2 the availability group that can handle inserts, updates, and deletions. 1 つの分散型可用性グループを別の分散型可用性グループにフェールオーバーする方法については、「セカンダリ可用性グループにフェールオーバーする」を参照してください。For information about how to fail over one distributed availability group to another, see Failover to a secondary availability group.

注意

SQL Server 2016 の分散型可用性グループは、FORCE_FAILOVER_ALLOW_DATA_LOSS オプションを使った可用性グループ間のフェールオーバーのみをサポートします。Distributed availability groups in SQL Server 2016 support failover only from one availability group to another by using the option FORCE_FAILOVER_ALLOW_DATA_LOSS.

分散型可用性グループに関する SQL Server のバージョンとエディションの要件SQL Server version and edition requirements for distributed availability groups

現在、分散型可用性グループは、メジャー バージョンが同じ SQL Server で作成された可用性グループでのみ機能します。Distributed availability groups currently work only with availability groups that are created with the same major SQL Server version. たとえば、分散型可用性グループに参加するすべての可用性グループは、現在、SQL Server 2016 で作成されている必要があります。For example, all availability groups that participate in a distributed availability group must currently be created with SQL Server 2016. SQL Server 2012 または 2014 には分散型可用性グループ機能が存在しなかったため、これらのバージョンで作成された可用性グループは、分散型可用性グループに参加できません。Because the distributed availability groups feature did not exist in SQL Server 2012 or 2014, availability groups that were created with these versions cannot participate in distributed availability groups.

注意

分散型可用性グループは Standard Edition または Enterprise Edition で構成できますが、1 つの分散型可用性グループに両方のエディションを混在させることはサポートされていません。Distributed availability groups can be configured with either the Standard or Enterprise edition, but mixing editions in a distributed availability group is not supported.

2 つの異なる可用性グループが存在するため、分散型可用性グループに参加しているレプリカに Service Pack または累積更新プログラムをインストール プロセスは、従来の可用性グループと少し異なります。Because there are two separate availability groups, the process of installing a service pack or cumulative update on a replica that's participating in a distributed availability group is slightly different from that of a traditional availability group:

  1. 最初に、分散型可用性グループの第 2 の可用性グループのレプリカを更新します。Start by updating the replicas of the second availability group in the distributed availability group.

  2. 分散型可用性グループのプライマリ可用性グループのレプリカに修正プログラムを適用します。Patch the replicas of the primary availability group in the distributed availability group.

  3. 標準的な可用性グループと同様に、プライマリ可用性グループを (第 2 の可用性グループのプライマリではなく) それ自体のレプリカの 1 つにフェールオーバーして、修正プログラムを適用します。As with a standard availability group, fail over the primary availability group to one of its own replicas (not to the primary of the second availability group) and patch it. プライマリ以外のレプリカがない場合は、第 2 の可用性グループに手動でフェールオーバーする必要があります。If there is no replica other than the primary, a manual failover to the second availability group will be necessary.

注意

将来のバージョンの SQL Server で以前のバージョンを同じ分散型可用性グループに参加させることができるようになるかどうかに関しては、何も発表されていません。No announcements have been made as to whether future versions of SQL Server will allow previous versions to participate in the same distributed availability group. そのシナリオが有効になった場合は、分散型可用性グループを SQL Server のバージョン アップグレード計画に含めることができるようになります。If that scenario were enabled, it would allow distributed availability groups to be part of a SQL Server version upgrade plan.

Windows Server のバージョンと分散型可用性グループWindows Server versions and distributed availability groups

分散型可用性グループには複数の可用性グループが含まれ、それぞれに独自の基になる WSFC クラスターがあり、分散型可用性グループは SQL Server 専用の構成です。A distributed availability group spans multiple availability groups, each on its own underlying WSFC cluster, and a distributed availability group is a SQL Server-only construct. つまり、個々の可用性グループを含む WSFC クラスターは、Windows Server のメジャー バージョンが異なっていてもかまいません。This means the WSFC clusters that house the individual availability groups can have different major versions of Windows Server. 前のセクションで説明したように、SQL Server のメジャー バージョンは同じである必要があります。The major versions of SQL Server must be the same, as discussed in the previous section. 次の図では AG 1 と AG 2 が分散型可用性グループに参加しており、最初の図とほとんど同じですが、各 WSFC クラスターの Windows Server のバージョンは異なっています。Much like the initial figure, the following figure shows AG 1 and AG 2 participating in a distributed availability group, but each of the WSFC clusters is a different version of Windows Server.

Windows Server のバージョンが異なる WSFC クラスターを含む分散型可用性グループ

個々の WSFC クラスターとそれに対応する可用性グループは、従来の規則に従います。The individual WSFC clusters and their corresponding availability groups follow traditional rules. つまり、ドメインに参加してもしなくてもかまいません (Windows Server 2016 以降)。That is, they can be joined to a domain or not joined to a domain (Windows Server 2016 or later). 2 つの異なる可用性グループを 1 つの分散型可用性グループに結合するときは、4 つのシナリオがあります。When two different availability groups are combined in a single distributed availability group, there are four scenarios:

  • 両方の WSFC クラスターが同じドメインに参加している。Both WSFC clusters are joined to the same domain.
  • 各 WSFC クラスターが異なるドメインに参加している。Each WSFC cluster is joined to a different domain.
  • 1 つの WSFC クラスターはドメインに参加しており、もう 1 つの WSFC クラスターはドメインに参加していない。One WSFC cluster is joined to a domain, and one WSFC cluster is not joined to a domain.
  • どちらの WSFC クラスターもドメインに参加していない。Neither WSFC cluster is joined to a domain.

両方の WSFC クラスターが同じドメイン (信頼されていないドメイン) に参加している場合、分散型可用性グループを作成するときに特別なことを行う必要ありません。When both WSFC clusters are joined to the same domain (not trusted domains), you don't need to do anything special when you create the distributed availability group. 可用性グループと WSFC クラスターが同じドメインに参加していない場合は、ドメインに依存しない可用性グループを作成する場合と同じように、証明書を使って分散型可用性グループを動作させる必要があります。For availability groups and WSFC clusters that are not joined to the same domain, use certificates to make the distributed availability group work, much in the way that you might create an availability group for a domain-independent availability group. 分散型可用性グループ用に証明書を構成する方法については、「Create a domain-independent availability group」(ドメインに依存しない可用性グループを作成する) のステップ 3 ~ 13 に従ってください。To see how to configure certificates for a distributed availability group, follow steps 3-13 under Create a domain-independent availability group.

分散型可用性グループでは、基になる各可用性グループのプライマリ レプリカが相互の証明書を持っている必要があります。With a distributed availability group, the primary replicas in each underlying availability group must have each other's certificates. 証明書を使わないエンドポイントが既にある場合は、ALTER ENDPOINT を使って証明書を使うようにエンドポイントを再構成します。If you already have endpoints that are not using certificates, reconfigure those endpoints by using ALTER ENDPOINT to reflect the use of certificates.

分散型可用性グループの使用シナリオDistributed availability group usage scenarios

分散型可用性グループには、次の 3 つの主な使用シナリオがあります。Here are the three main usage scenarios for a distributed availability group:

ディザスター リカバリーとマルチサイトのシナリオDisaster recovery and multi-site scenarios

従来の可用性グループではすべてのサーバーが同じ WSFC クラスターの一部である必要があり、複数のデータ センターを使うのが困難な場合があります。A traditional availability group requires that all servers be part of the same WSFC cluster, which can make spanning multiple data centers challenging. 次の図は、従来のマルチサイト可用性グループのアーキテクチャとデータ フローを示したものです。The following figure shows what a traditional multi-site availability group architecture looks like, including the data flow. 1 つのプライマリ レプリカが、すべてのセカンダリ レプリカにトランザクションを送信しています。There is one primary replica that sends transactions to all secondary replicas. この構成は、いくつかの点で分散型可用性グループより柔軟性が劣ります。This configuration is less flexible in some ways than a distributed availability group. たとえば、Active Directory (該当する場合) や、WSFC クラスター内のクォーラムに対するミラーリング監視サーバーといったものを、実装する必要があります。For example, you must implement such things as Active Directory (if applicable) and the witness for a quorum in the WSFC cluster. また、ノードの投票の変更など、WSFC クラスターの他の側面の考慮も必要になることがあります。You might also need to take into account other aspects of a WSFC cluster, such as altering node votes.

従来のマルチサイト可用性グループ

分散型可用性グループでは、複数のデータ センターにまたがる可用性グループに対して、より柔軟な配置シナリオが提供されます。Distributed availability groups offer a more flexible deployment scenario for availability groups that span multiple data centers. ログ配布のような機能が過去に使われていた場合でも、分散型可用性グループを使うことができます。You can even use distributed availability groups where features such as log shipping were used in the past. ただし、従来の可用性グループとは異なり、分散型可用性グループではトランザクションの適用を遅延することはできません。However, unlike traditional availability groups, distributed availability groups cannot have delayed application of transactions. つまり、データが正しく更新または削除されないヒューマン エラーが発生した場合、可用性グループまたは分散型可用性グループでは役に立ちません。This means that availability groups or distributed availability groups cannot help in the event of human error in which data is incorrectly updated or deleted.

分散型可用性グループは疎結合されていますが、この場合それは、分散型可用性グループは単一の WSFC クラスターを必要とせず、SQL Server によって保持されることを意味します。Distributed availability groups are loosely coupled, which in this case means that they don't require a single WSFC cluster and they're maintained by SQL Server. WSFC クラスターは個別に保持され、同期は主に 2 つの可用性グループの間で非同期に行われるため、別のサイトにディザスター リカバリーを構成するのが簡単になります。Because the WSFC clusters are maintained individually and the synchronization is primarily asynchronous between the two availability groups, it's easier to configure disaster recovery at another site. 各可用性グループのプライマリ レプリカは、独自のセカンダリ レプリカを同期します。The primary replicas in each availability group synchronize their own secondary replicas.

  • 分散型可用性グループに対しては、手動フェールオーバーのみがサポートされています。Only manual failover is supported for a distributed availability group. データ センターを切り替えるディザスター リカバリーの場合、(まれなケースを除き) 自動フェールオーバーを構成することはできません。In a disaster recovery situation where you are switching data centers, you should not configure automatic failover (with rare exceptions).
  • 多くの場合は、マルチサイトまたはサブネットの WSFC クラスターでは従来の項目またはパラメーター (CrossSubnetThreshold など) の一部を設定する必要はありませんが、データ転送の異なるレイヤーでのネットワーク待機時間に注意する必要があります。You most likely will not need to set some of the traditional items or parameters for multi-site or subnet WSFC clusters, such as CrossSubnetThreshold, but you still need to see about network latency at a different layer for the data transport. 違いは、各 WSFC クラスターは独自の可用性を維持しており、クラスターは 4 ノードの 1 つの大きなエンティティではないということです。The difference is that each WSFC cluster maintains its own availability; the cluster isn't one big entity of four nodes. 前の図で示したように、2 つの独立した 2 ノード WSFC クラスターで構成されます。You have two separate two-node WSFC clusters as shown in the previous figure.
  • ディザスター リカバリーを目的とするアプローチである非同期データ移動を使うことをお勧めします。We recommend asynchronous data movement, because this approach would be for disaster-recovery purposes.
  • プライマリ レプリカと第 2 の可用性グループの少なくとも 1 つのセカンダリ レプリカの間に同期データ移動を構成し、分散型可用性グループに同期移動を構成した場合、分散型可用性グループはすべての同期コピーでデータの存在が確認されるまで待機します。If you configure synchronous data movement between the primary replica and at least one secondary replica of the second availability group, and you configure synchronous movement on the distributed availability group, a distributed availability group will wait until all synchronous copies acknowledge that they have the data.

分散型可用性グループを使って移行するMigrate by using a distributed availability group

分散型可用性グループは 2 つのまったく異なる可用性グループの構成をサポートするため、ディザスター リカバリーとマルチサイトのシナリオだけでなく、移行のシナリオも容易になります。Because distributed availability groups support two completely different availability group configurations, they enable not only easier disaster-recovery and multi-site scenarios, but also migration scenarios. 移行先が新しいハードウェアか仮想マシン (オンプレミスまたはパブリック クラウドの IaaS) かに関係なく、分散型可用性グループを構成すると、以前はバックアップ、コピー、復元またはログ配布を使っていたような状況で、移行を行うことができます。Whether you are migrating to new hardware or virtual machines (on-premises or IaaS in the public cloud), configuring a distributed availability group allows a migration to occur where, in the past, you might have used backup, copy, and restore, or log shipping.

移行の機能は、SQL Server を同じバージョンにしたまま基になる OS を変更またはアップグレードするシナリオで特に便利です。The ability to migrate is especially useful in scenarios where you're changing or upgrading the underlying OS while you keep the same SQL Server version. Windows Server 2016 では、同じハードウェア上で Windows Server 2012 R2 からローリング アップグレードできますが、ほとんどのユーザーは新しいハードウェアまたは仮想マシンの配置を選びます。Although Windows Server 2016 does allow a rolling upgrade from Windows Server 2012 R2 on the same hardware, most users choose to deploy new hardware or virtual machines.

新しい構成への移行を完了するには、プロセスの最後に、元の可用性グループへのすべてのデータ トラフィックを停止し、分散型可用性グループを同期データ移動に変更します。To complete the migration to the new configuration, at the end of the process, stop all data traffic to the original availability group, and change the distributed availability group to synchronous data movement. これにより、第 2 の可用性グループのプライマリ レプリカが完全に同期され、データが失われないことが保証されます。This action ensures that the primary replica of the second availability group is fully synchronized, so there would be no data loss. 同期を確認した後、セカンダリ可用性グループに分散型可用性グループをフェールオーバーします。After you've verified the synchronization, fail over the distributed availability group to the secondary availability group. 詳細については、「セカンダリ可用性グループにフェールオーバーする」を参照してください。For more information, see Fail over to a secondary availability group.

移行後には、第 2 の可用性グループが新しいプライマリ可用性グループになり、次のいずれかを行うことが必要な場合があります。Post-migration, where the second availability group is now the new primary availability group, you might need to do either of the following:

  • セカンダリ可用性グループのリスナーの名前を変更するか (および、場合によっては、元のプライマリ可用性グループの古いリスナーを削除または名前変更します)、または元のプライマリ可用性グループ のリスナーで再作成して、アプリケーションとユーザーが新しい構成にアクセスできるようにします。Rename the listener on the secondary availability group (and possibly delete or rename the old one on the original primary availability group), or re-create it with the listener from the original primary availability group, so that applications and users can access the new configuration.
  • 名前の変更または再作成が不可能な場合は、アプリケーションおよびユーザーが第 2 の可用性グループのリスナーを参照するようにします。If a rename or re-creation is not possible, point applications and users to the listener on the second availability group.

分散型可用性グループで読み取り可能レプリカをスケールアウトするScale out readable replicas with distributed availability groups

必要に応じて、1 個の分散型可用性グループで最大 16 個のセカンダリ レプリカを持つことができます。A single distributed availability group can have up to 16 secondary replicas, as needed. したがって、別の可用性グループの 2 個のプライマリ レプリカを含めて、最大 18 個のコピーを読み取りに使うことができます。So it can have up 18 copies for reading, including the two primary replicas of the different availability groups. つまり、このアプローチでは、複数のサイトがレポートのためにさまざまなアプリケーションにほぼリアルタイムでアクセスできます。This approach means that more than one site can have near-real-time access for reporting to various applications.

分散型可用性グループは、読み取り専用ファームを複数の可用性グループにスケールアウトするのに役立ちます。Distributed availability groups can help you scale out a read-only farm more than you can with just a single availability group. 分散型可用性グループでは、2 つの方法で読み取り可能レプリカをスケールアウトできます。A distributed availability group can scale out readable replicas in two ways:

  • 分散型可用性グループの第 2 の可用性グループのプライマリ レプリカを使って、別の分散型可用性グループを作成できます (データベースが RECOVERY ではない場合でも)。You can use the primary replica of the second availability group in a distributed availability group to create another distributed availability group, even though the database is not in RECOVERY.
  • また、1 番目の可用性グループのプライマリ レプリカを使って、別の分散型可用性グループを作成することもできます。You can also use the primary replica of the first availability group to create another distributed availability group.

つまり、1 つのプライマリ レプリカが、2 つの異なる分散型可用性グループに参加できます。In other words, a primary replica can participate in two different distributed availability groups. 次の図では、AG 1 と AG 2 はどちらも分散型 AG 1 に参加しており、AG 2 と AG 3 は分散型 AG 2 に参加しています。The following figure shows AG 1 and AG 2 both participating in Distributed AG 1, while AG 2 and AG 3 are participating in Distributed AG 2. AG 2 のプライマリ レプリカ (フォワーダー) は、分散型 AG 1 のセカンダリ レプリカであると同時に、分散型 AG 2 のプライマリ レプリカでもあります。The primary replica (or forwarder) of AG 2 is both a secondary replica for Distributed AG 1 and a primary replica of Distributed AG 2.

分散型可用性グループでの読み取りのスケールアウト

次の図の AG 1 は、2 つの異なる分散型可用性グループ (分散型 AG 1 (AG 1 と AG2 で構成) および分散型 AG 2 (AG 1 と AG 3 で構成)) のプライマリ レプリカになっています。The following figure shows AG 1 as the primary replica for two different distributed availability groups: Distributed AG 1 (composed of AG 1 and AG2) and Distributed AG 2 (composed of AG 1 and AG 3).

分散型可用性グループを使った読み取りのスケールアウトのもう 1 つの例

上のどちらの例でも、3 つの可用性グループ全体で最大 27 個のレプリカを持つことができ、そのすべてを読み取り専用クエリに使うことができます。In both preceding examples, there can be up to 27 total replicas across the three availability groups, all of which can be used for read-only queries.

読み取り専用ルーティングは、現在、分散型可用性グループでは動作しません。Read-only routing currently does not work with distributed availability groups. すべてのクエリは、接続にリスナーを使っている場合、プライマリ レプリカに送られます。All queries, if they use the listener to connect, go to the primary replica. それ以外の場合は、各レプリカがすべての接続をセカンダリ レプリカとして許可し、それらに直接アクセスするように、構成する必要があります。Otherwise, you need to configure each replica to allow all connections as a secondary replica and access them directly. この動作は、SQL Server 2016 の更新プログラムまたは SQL Server の将来のバージョンで、変更される可能性があります。This behavior might be changed in an update to SQL Server 2016 or in a future version of SQL Server.

分散型可用性グループのセカンダリ可用性グループを初期化するInitialize secondary availability groups in a distributed availability group

分散型可用性グループは、第 2 の可用性グループのプライマリ レプリカを初期化するための主要な方法として自動シード処理を使うように設計されています。Distributed availability groups were designed with automatic seeding to be the main method used to initialize the primary replica on the second availability group. 第 2 の可用性グループのプライマリ レプリカでの完全なデータベース復元は、次のようにすることで可能です。A full database restore on the primary replica of the second availability group is possible if you do the following:

  1. WITH NORECOVERY を指定してデータベース バックアップを復元します。Restore the database backup WITH NORECOVERY.
  2. 必要な場合は、適切なトランザクション ログ バックアップを WITH NORECOVERY で復元します。If necessary, restore the proper transaction log backups WITH NORECOVERY.
  3. データベース名を指定せず、SEEDING_MODE を AUTOMATIC に設定して、第 2 の可用性グループを作成します。Create the second availability group without specifying a database name and with SEEDING_MODE set to AUTOMATIC.
  4. 自動シード処理を使って、分散型可用性グループを作成します。Create the distributed availability group by using automatic seeding.

分散型可用性グループに第 2 の可用性グループのプライマリ レプリカを追加すると、レプリカは第 1 の可用性グループのプライマリ データベースと照合され、シード処理はソースに合わせてデータベースを更新します。When you add the second availability group's primary replica to the distributed availability group, the replica is checked against the first availability group's primary databases, and seeding catches the database up to the source. いくつかの注意事項があります。There are a few caveats:

  • 第 2 の可用性グループのプライマリ レプリカの sys.dm_hadr_automatic_seeding で示される出力では、current_state が FAILED、理由が "Seeding Check Message Timeout" と表示されます。The output shown in sys.dm_hadr_automatic_seeding on the primary replica of the second availability group will display a current_state of FAILED with the reason "Seeding Check Message Timeout."

  • 第 2 の可用性グループのプライマリ レプリカの現在の SQL Server ログでは、シード処理が行われて、LSN が同期されたと表示されます。The current SQL Server log on the primary replica of the second availability group will show that seeding worked and that the LSNs were synchronized.

  • 第 1 の可用性グループのプライマリ レプリカの sys.dm_hadr_automatic_seeding で示される出力では、current_state が COMPLETED と表示されます。The output shown in sys.dm_hadr_automatic_seeding on the primary replica of the first availability group will show a current_state of COMPLETED.

  • 分散型可用性グループではシード処理の動作も異なります。Seeding also has different behavior with distributed availability groups. 第 2 のレプリカでシード処理が開始するためには、レプリカで ALTER AVAILABILITY GROUP [AGName] GRANT CREATE ANY DATABASE コマンドを実行する必要があります。For seeding to begin on the second replica, you must issue the command ALTER AVAILABILITY GROUP [AGName] GRANT CREATE ANY DATABASE command on the replica. この条件は基になる可用性グループに参加しているすべてのセカンダリ レプリカにやはり当てはまりますが、第 2 の可用性グループのプライマリ レプリカは、分散型可用性グループに追加された後でシード処理が開始するために必要な適切なアクセス許可を既に持っています。Although this condition is still true of any secondary replica that participates in the underlying availability group, the primary replica of the second availability group already has the right permissions to allow seeding to begin after it is added to the distributed availability group.

分散型可用性グループの情報を表示するView distributed availability group information

前に説明したように、分散型可用性グループは SQL Server のみの構成であり、基になる WSFC クラスターでは認識されません。As mentioned earlier, a distributed availability group is a SQL Server-only construct, and it is not seen in the underlying WSFC cluster. 次の図の 2 つの異なる WSFC クラスター (CLUSTER_A と CLUSTER_B) は、それぞれが独自の可用性グループを持っています。The following figure shows two different WSFC clusters (CLUSTER_A and CLUSTER_B), each with its own availability groups. ここでは、CLUSTER_A の AG1 と CLUSTER_B の AG2 についてのみ説明します。Only AG1 in CLUSTER_A and AG2 in CLUSTER_B are discussed here.

PS C:\> Get-ClusterGroup -Cluster CLUSTER_A

Name                            OwnerNode             State
----                            ---------             -----
AG1                             DENNIS                Online
Available Storage               GLEN                  Offline
Cluster Group                   JY                    Online
New_RoR                         DENNIS                Online
Old_RoR                         DENNIS                Online
SeedingAG                       DENNIS                Online


PS C:\> Get-ClusterGroup -Cluster CLUSTER_B

Name                            OwnerNode             State
----                            ---------             -----
AG2                             TOMMY                 Online
Available Storage               JC                    Offline
Cluster Group                   JC                    Online

分散型可用性グループの詳細情報は、SQL Server の特に可用性グループの動的管理ビューに表示されます。All detailed information about a distributed availability group is in SQL Server, specifically in the availability-group dynamic management views. 現在のところ、分散型可用性グループについて SQL Server Management Studio に表示される情報は、可用性グループのプライマリ レプリカについてのみです。Currently, the only information shown in SQL Server Management Studio for a distributed availability group is on the primary replica for the availability groups. 以下の図のように、SQL Server Management Studio の [可用性グループ] フォルダーに分散型可用性グループが表示されます。As shown in the following figure, under the Availability Groups folder, SQL Server Management Studio shows that there is a distributed availability group. この図では、分散型可用性グループではなく、そのインスタンスでローカルの各可用性グループのプライマリ レプリカとして AG1 が表示されます。The figure shows AG1 as a primary replica for an individual availability group that's local to that instance, not for a distributed availability group.

分散型可用性グループの最初の WSFC クラスター上のプライマリ レプリカが表示された SQL Server Management Studio のビュー

ただし、分散型可用性グループを右クリックしても使用できるオプションが表示されません (次の図を参照)。また、[可用性データベース]、[可用性グループ リスナー]、[可用性レプリカ] の各フォルダーを展開してもすべて空です。However, if you right-click the distributed availability group, no options are available (see the following figure), and the expanded Availability Databases, Availability Group Listeners, and Availability Replicas folders are all empty. SQL Server Management Studio 16 ではこの結果が表示されますが、今後のバージョンの SQL Server Management Studio では変更される可能性があります。SQL Server Management Studio 16 displays this result, but it might change in a future version of SQL Server Management Studio.

操作できるオプションがありません

次の図のように、セカンダリ レプリカの場合、分散型可用性グループに関連する情報が SQL Server Management Studio に表示されません。As shown in the following figure, secondary replicas show nothing in SQL Server Management Studio related to the distributed availability group. これらの可用性グループ名は、前述の「CLUSTER_A WSFC クラスター」図に表示されるロールにマップされます。These availability group names map to the roles shown in the previous CLUSTER_A WSFC cluster image.

SQL Server Management Studio のセカンダリ レプリカのビュー

動的管理ビューを使用する場合にも同じ概念が適用されます。The same concepts hold true when you use the dynamic management views. 次のクエリを使用すると、すべての可用性グループ (通常と分散型) とそれに参加しているノードが表示されます。By using the following query, you can see all the availability groups (regular and distributed) and the nodes participating in them. この結果は、分散型可用性グループに参加しているいずれかの WSFC クラスター内のプライマリ レプリカに対してクエリを実行した場合にのみ表示されます。This result is displayed only if you query the primary replica in one of the WSFC clusters that are participating in the distributed availability group. 動的管理ビュー sys.availability_groups には、is_distributed という新しい列があります。可用性グループが分散型可用性グループの場合、これは 1 です。There is a new column in the dynamic management view sys.availability_groups named is_distributed, which is 1 when the availability group is a distributed availability group. この列を表示するには:To see this column:

SELECT ag.[name] as 'AG Name', 
    ag.Is_Distributed, 
    ar.replica_server_name as 'Replica Name'
FROM    sys.availability_groups ag, 
    sys.availability_replicas ar       
WHERE   ag.group_id = ar.group_id

次の図は、分散型可用性グループに参加している 2 つ目の WSFC クラスターの出力例です。An example of output from the second WSFC cluster that's participating in a distributed availability group is shown in the following figure. SPAG1 は、DENNIS と JY という 2 つのレプリカで構成されています。SPAG1 is composed of two replicas: DENNIS and JY. 一方、SPDistAG という分散型可用性グループには、従来の可用性グループのようにインスタンス名ではなく、2 つの参加している可用性グループ (SPAG1 と SPAG2) の名前が表示されます。However, the distributed availability group named SPDistAG has the names of the two participating availability groups (SPAG1 and SPAG2) rather than the names of the instances, as with a traditional availability group.

上記のクエリの出力例

SQL Server Management Studio で、ダッシュボードや他の領域に表示される状態は、その可用性グループ内のローカル同期についてのみです。In SQL Server Management Studio, any status shown on the Dashboard and other areas are for local synchronization only within that availability group. 分散型可用性グループの正常性を表示するには、動的管理ビューに対してクエリを実行します。To display the health of a distributed availability group, query the dynamic management views. 次のクエリ例では、前のクエリを拡張して改善しています。The following example query extends and refines the previous query:

SELECT ag.[name] as 'AG Name', ag.is_distributed, ar.replica_server_name as 'Underlying AG', ars.role_desc as 'Role', ars.synchronization_health_desc as 'Sync Status'
FROM    sys.availability_groups ag, 
sys.availability_replicas ar,       
sys.dm_hadr_availability_replica_states ars       
WHERE   ar.replica_id = ars.replica_id
and     ag.group_id = ar.group_id 
and ag.is_distributed = 1

分散型可用性グループの状態

前のクエリをさらに拡張するために、sys.dm_hadr_database_replicas_states に追加して、動的管理ビューで基となるパフォーマンスを表示することもできます。To further extend the previous query, you can also see the underlying performance via the dynamic management views by adding in sys.dm_hadr_database_replicas_states. 現在、動的管理ビューはセカンダリ可用性グループの情報のみを保存しています。The dynamic management view currently stores information about the second availability group only. 次のクエリ例は、プライマリ可用性グループ上で実行し、以下の出力例を生成します。The following example query, run on the primary availability group, produces the sample output shown below:

SELECT ag.[name] as 'Distributed AG Name', ar.replica_server_name as 'Underlying AG', dbs.[name] as 'DB', ars.role_desc as 'Role', drs.synchronization_health_desc as 'Sync Status', drs.log_send_queue_size, drs.log_send_rate, drs.redo_queue_size, drs.redo_rate
FROM    sys.databases dbs,
    sys.availability_groups ag,
    sys.availability_replicas ar,
    sys.dm_hadr_availability_replica_states ars,
    sys.dm_hadr_database_replica_states drs
WHERE   drs.group_id = ag.group_id
and ar.replica_id = ars.replica_id
and ars.replica_id = drs.replica_id
and dbs.database_id = drs.database_id
and ag.is_distributed = 1

分散型可用性グループのパフォーマンス情報

次の手順Next steps

このコンテンツの執筆者は Allan Hirt (マイクロソフト MVP) です。This content was written by Allan Hirt, Microsoft Most Valued Professional.