SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2016 RC0 で使える新しい AlwaysOn のセカンダリの初期同期方法

leave a comment

SQL Server 2016 RC0 関連の情報を眺めていて知ったのですが、RC0 では、セカンダリの同期方法として「SEEDING_MODE = AUTOMATIC」という方法が追加されています。

High Availability Enhancements

[RC0] Direct seeding allows a secondary replica to be automatically seeded over the network (rather than manual seeding that requires a physical backup of the target database to be restored on the secondary). Direct seeding is specified by setting SEEDING_MODE=AUTOMATIC in the CREATE AVAILABILITY GROUP (Transact-SQL) or ALTER AVAILABILITY GROUP (Transact-SQL) statements. You must also specify GRANT CREATE ANY DATABASE with ALTER AVAILABILITY GROUP (Transact-SQL) on each secondary replica that is used with direct seeding.

これについて、少しまとめてみたいと思います。

「SEEDING_MODE = AUTOMATIC」ですが、

CREATE AVAILABILITY GROUP (Transact-SQL)
ALTER AVAILABILITY GROUP (Transact-SQL)

で使用できるようになった、レプリカを追加する際の新しいオプションとなります。

構文としては以下のように使用します。

USE [master]
GO
CREATE AVAILABILITY GROUP [AG01]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
DB_FAILOVER = ON,
DTC_SUPPORT = NONE)
FOR DATABASE [AGDB01]
REPLICA ON
N'2016RC0-01' WITH (ENDPOINT_URL = N'TCP://2016RC0-01.domain.local:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(ALLOW_CONNECTIONS = ALL), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)),
N'2016RC0-02' WITH (ENDPOINT_URL = N'TCP://2016RC0-02.domain.local:5022',SEEDING_MODE = AUTOMATIC, FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(ALLOW_CONNECTIONS = ALL), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO

 

SEEDING_MODE  はデフォルトでは「MANUAL」が設定されており、この場合は従来までの AlwaysOn と同様の動作となります。

SEEDING_MODE = { AUTOMATIC | MANUAL }

Specifies how the secondary replica will be initially seeded.

AUTOMATIC

Enables direct seeding. This method will seed the secondary replica over the network. This method does not require you to backup and restore a copy of the primary database on the replica.

System_CAPS_noteNote

For direct seeding, you must allow database creation on each secondary replica by calling ALTER AVAILABILITY GROUP with the GRANT CREATE ANY DATABASE option.

MANUAL

Specifies manual seeding (default). This method requires you to create a backup of the database on the primary replica and manually restore that backup on the secondary replica.

 

従来までは、AlwaysOn 可用性グループの可用性データベースを、セカンダリで使用する場合、

  • プライマリでデータベースバックアップを取得 (初回バックアップ)
  • プライマリでデータベースバックアップを取得 (初回同期用のバックアップ。上記のバックアップを利用可能)
  • プライマリでログバックアップを取得
  • セカンダリでバックアップをリストア

というような流れで作業を実施する必要がありました。

「SEEDING_MODE = MANUAL」を使用する場合は、この流れは変わりません。

AUTOMATIC を使用した場合、以下のような流れで、セカンダリへのデータベースの初期同期を実施することができます。

  • プライマリでデータベースバックアップを取得 (初回バックアップ)
  • ALTER AVAILABILITY GROUP <可用性グループ名> GRANT CREATE ANY DATABASEを使用して、初回同期を実施

というような形で初回の同期を実施することができます。

私が検証していた限りでは、セカンダリで GRANT を実行する必要がありました。

JOIN と ALTER を連続して実行した場合は、即時に反映されていたのですが、タイミングがずれると ALTER をもう一度実行する必要があったりしました。

Retry4

 

セカンダリの構築の新しい手法として覚えておくと良い機能かと。

Share

Written by Masayuki.Ozawa

3月 13th, 2016 at 9:47 pm

Posted in SQL Server

Tagged with ,

Leave a Reply