Migrating to Azure SQL Data Sync 2.0 で、2017/7/1 から、Data Sync の設定は Azure Portal からのみになるという記載があったことを思い出し、今どういう状態になっているんだろうと思って、確認をしたところ SQL Database に「別のデータベースに同期」という設定が増えていました。
先月の段階で、英語版のドキュメントについては、Data Sync 2.0 対応されていたんですね。
Getting Started with Azure SQL Data Sync (Preview)
制限等については次のドキュメントから確認することができます。
Sync data across multiple cloud and on-premises databases with SQL Data Sync
昔の Data Sync の記憶をたどってみたところ、2.0 となっても、基本的な構成は変わっていないようですね。
基本構成としては、ハブ&スポーク型の環境で、指定したテーブルのデータを、双方向または片方向で同期を行う仕組みとなります。
データの最小の同期間隔については「5 分」となっており、「主キーが設定されているテーブルが同期対象として選択可能」となっています。
SQL Database とデータ同期をとる方法としては、レプリケーションの利用もありますが、どちらも (レプリケーションについては厳密にはトランザクションレプリケーション利用時) 主キーが必要となりますので、テーブルの構造上の注意はあるのかなと。
設定の流れとしては、次のようになります。
- 同期グループを作成
- 同期グループの作成時には、メタデータを格納するためのメタデータ DB を SQL Database 上に作成
- 同期グループに SQL Database 上のハブデータベースとなるデータベースを追加
- 同期グループに、同期対象となるメンバーデータベースを追加
- SQL Server と同期を行う場合には、同期エージェントをインストールした環境を構築
(SQL Server がインストールされている環境と同一でも別筐体でも作成できそうです) - 同期エージェントをインストールした場合、「Microsoft Data Sync 2.0」を起動して、同期対象となる SQL Server の追加と、同期エージェントのキー (ポータルから同期エージェント登録時にのみ取得可能) を実施
設定自体はポータルの指示に従って実施すればよいため、大きな問題はないのですが、SQL Server と同期をこなう際に必要となる同期エージェントをインストールす環境では、「英語版の SQL Server 2012 x86 の Shared Management Objects が必要となる」という点でしょうか。
日本語版や x64 版をインストールすしても同期エージェントの前提条件をパスすることができません。
同期エージェントに関しては、昔懐かしい感じの UI となっています。
構成に関しては、冒頭で紹介したドキュメントにも構成例が記載されていますが、次の 2 パターンのような構成が可能となっているようです。
1 台のハブデータベースとメンバーデータベース間で同期をとることも、複数のメンバーデータベースと同期をとることも可能な構成となっています。
設定が終わるとこのような感じで、ポータルからデータの同期状況を確認することができます。
データの同期については、1.0 の時と同じで、トリガーによるデータのキャプチャにより実装されているようですね。
同期対象としたテーブルに合わせた、トリガーとキャプチャしたデータを格納するための「dss_tracking」というテーブルが作成されます。
Data Sync、あまり話題にならない機能のように思っていたのですが、終了されておらず、Azure ポータルにも移行されたので、利用されている方が意外と多かったんですかね。