エクスポート (0) 印刷
すべて展開

SQL データ同期のベスト プラクティス

更新日: 2014年12月

 

SQL Azure Data Sync アイコン

SQL データ同期プレビューへようこそ。このトピックは、データ同期の計画を設計および実装する前に理解しておく必要がある 5 つのトピックのうちの最後のトピックです。準備となる 5 つのトピックは次のとおりです。

Microsoft Azure Silverlight ポータル上の Microsoft Azure SQL データ同期プラグインは廃止されました。今後、Azure SQL データ同期には Microsoft Azure の管理ポータルを使用してください。

Microsoft Azure の管理ポータルの [SQL データベース] の下にある [同期] タブから SQL データ同期 (プレビュー) にアクセスします。[同期] タブは、1 つまたは複数の同期グループを持つ場合にのみ使用できます。「方法:Create a Sync Group (SDS)」のトピックで、このポータルから同期グループを作成、修正する方法をご覧いただけます。

開始前に読んでおく必要があるトピックへのリンク、および同期グループの作成と変更に関するガイダンスへのリンクについては、以下の「ナビゲーション」を参照してください。

  • ネットワーク サービスへのアクセス権を持つ最小限の特権が与えられたアカウントを使用して クライアント エージェントをインストールします。

  • クライアント エージェントは、内部設置型の SQL Server コンピューターとは別のコンピューターにインストールすることをお勧めします。

  • 1 つの内部設置型データベースを複数のエージェントに登録しないでください。

    • 別々の同期グループの別々のテーブルを同期する場合であってもです。

    • 1 つの内部設置型データベースを複数のクライアント エージェントに登録すると、いずれかの同期グループを削除するときに難しい問題が発生することがあります。

  • 同期のセットアップの場合:
    テーブルの作成/変更、データベースの変更、プロシージャの作成、スキーマの選択/変更、ユーザー定義型の作成。

  • 進行中の同期の場合:
    同期の対象として選択したテーブルに対する、および同期メタデータ テーブルと追跡テーブルに対する選択/挿入/更新/削除、サービスによって作成されたストアド プロシージャに対する実行アクセス許可、ユーザー定義テーブル型に対する実行アクセス許可。

  • プロビジョニング解除の場合:
    同期のテーブル部分に対する変更、同期メタデータ テーブルに対する選択/削除、同期追跡テーブル、ストアド プロシージャ、およびユーザー定義型の同期追跡に対する制御

同期グループのデータベース用に資格情報が 1 つしかない場合は、次のように対処します。

  • フェーズに応じて資格情報を変更します (セットアップには cred1、進行中には cred2 など)。

  • 資格情報のアクセス許可を変更します (同期のセットアップ後にアクセス許可を変更するなど)。

エンタープライズからクラウドへのシナリオ:

ハブ データベースを同期グループのデータベース トラフィックが最も集中している場所の近くに設置することで、待機時間を最小限に抑えることができます。

クラウドからクラウドへのシナリオ:

同期グループのすべてのデータベースが 1 つのデータ センターにある場合は、ハブを同じデータ センターに配置する必要があります。これにより、データ センター間のデータ転送の待機時間とコストを削減できます。

同期グループのデータベースが複数のデータ センターにある場合、ハブは、ほとんどのデータベースとデータベース トラフィックと同じデータ センターに配置されている必要があります。

混合シナリオ:

より複雑な同期グループ構成には、これら両方の原則を適用します。

  • SQL データベース インスタンス サイズ

    SQL データベース インスタンス を新規に作成するときに、[カスタム作成] を選択する場合は、デプロイするデータベースよりも大きい最大サイズを設定してください。デプロイしたデータベースよりも大きい最大サイズを設定しなかった場合、同期が失敗します。自動拡張はされませんが、ALTER DATABASE を実行して、作成されたデータベースのサイズを大きくすることができます。当然ながら、SQL データベース インスタンス のサイズ制限内で維持する必要があります。


    Important重要
    SQL データ同期プレビューでは、データベースと共に追加のメタデータが格納されます。必要な領域を計算するときには、このことを考慮してください。
    追加のオーバーヘッドの量は、テーブルの幅 (狭いテーブルにはより多くのオーバーヘッドが必要) およびトラフィックの量によって左右されます。

  • データベース ディメンションについてサポートされる制限

     

    ディメンション 上限

    データベース、テーブル、スキーマ、および列の名前

    1 つの名前につき 50 文字

    同期グループ内のテーブル数

    100

    同期グループ内のテーブル内の列数

    1000

  • テーブルの選択

    データベース内のすべてのテーブルを sync group に含める必要はありません。同期グループに含めるテーブルと含めないテーブル (または別の同期グループに含めるテーブル) の選択内容が、効率とコストに影響する場合があります。ビジネス ニーズで必要なテーブルと、そのテーブルが依存しているテーブルのみを含めてください。

  • 主キー

    同期グループ内の各テーブルに主キーが必要です。SQL データ同期プレビュー サービスでは、主キーを持たないテーブルを同期することはできません。

運用環境に展開する前に、使用するシナリオの初期および進行中の同期パフォーマンスをテストしてください。

SQL データ同期プレビュー プレビュー では、基本的なデータベースの自動準備が提供されます。

ここでは、SQL データ同期プレビュー の準備の制限について説明します。

SQL データ同期プレビュー の自動準備の制限は次のとおりです。

  • 同期先テーブルには、選択した列しか作成されません。
    したがって、同期グループに含まれていない一部の列は、同期先テーブルに準備されません。

  • 選択した列にしかインデックスが作成されません。
    同期グループに含まれて��ない列が同期元テーブルのインデックスに設定されている場合、それらのインデックスは同期先テーブルに準備されません。

  • XML 型の列のインデックスは準備されません。

  • CHECK 制約は準備されません。

  • 同期元テーブルの既存のトリガーは準備されません。

  • 同期先データベースにビューおよびストアド プロシージャが作成されません。

  • サービスの試行の目的でのみ自動準備の機能を使用してください。

  • 運用環境では、データベース スキーマを準備する必要があります。

ここでは、同期グループの初期同期についてと、必要以上に時間と負荷がかかる初期同期を回避するために何ができるかについて説明します。

同期グループを作成するときは、1 つのデータベースだけのデータで開始します。データが複数のデータベースに存在する場合、SQL データ同期プレビューは各行を解決が必要な競合として扱います。そのため、初期同期が非常に遅くなり、データベースのサイズによっては数日から数か月かかる場合もあります。

また、データベースが異なるデータ センターにある場合、各行を異なるデータ センターに送信する必要があるため、初期同期のコストが必要以上に高くなります。

できれば、同期グループ内の 1 つだけのデータベースのデータで開始します。

  • コスト

    SQL データ同期プレビュー サービスは現在無料で提供されていますが、SQL Database に移動 データ センターで入出力されるデータには SQL Database に移動 の料金が適用されます。そのため、安定したテーブルの同期やあまり更新する必要がないデータの処理は、1 日 1 回または週 1 回のスケジュールで実行してください。即時性が要求されるデータや揮発性の高いデータを含むテーブルは、高い頻度で同期することをお勧めします。ビジネス ニーズを分析して、Sync Group とスケジュールを適切に作成してください。

    データ センターでデータを入出力する際に、入力料金と出力料金も発生する場合があります。

  • 頻度

    同期が完了していない同期グループに対して同期を実行しようとすると、イベントの開始に失敗します。同期が実行されなかったことは視覚的にはわかりません。そのため、1 つの同期が完了した後で次の同期が試行されるように、同期のスケジュールを設定することをお勧めします。

    例:

    T0、T0+5、T0+10 という形で、5 分ごとに同期を実行するように同期グループのスケジュールを設定したとします。しかし、この同期グループは同期が完了するまで 6 分かかるため、同期は T0、T0+10、T0+20 という間隔で実行されます。T0+5 と T0+15 の同期は、T0 と T0+10 が時間内に完了していないため失敗します。

同期ループが生じるのは、同期グループ内で循環参照が発生する場合です。循環参照が発生すると、1 つのデータベース内の各変更が、同期グループ内のデータベースを通じて循環的に際限なくレプリケートされます。同期ループは、パフォーマンスの低下やコストの大幅な増加につながるため、回避する必要があります。

同期ループの詳細に加え、同期ループの原因となる設計の例や同期ループを避けるための再設計方法については、「同期ループの理解と回避」を参照してください。

同期グループまたは同期グループ内のデータベースは、最新の状態ではなくなる場合があります。同期グループの状態が "最新ではない" 場合は、機能を停止します。データベースの状態が "最新ではない" の場合は、データが失われることがあります。このような状況から復旧する必要があるというよりも、このような状況が発生しないようにすることをお勧めします。

データベースは、45 日以上オフラインだったときにその状態が "最新ではない" に設定されます。データベースが 45 日以上オフラインにならないようにすることで、データベースで最新ではない状態を避けることができます。状態が最新ではないデータベースから復旧する方法については、「A database has an "Out-of-Date" status」を参照してください。

45 日以上の間、同期グループ内での任意の変更を同期グループの残りの部分に反映できない場合、同期グループの状態は "最新ではない" に設定されます。同期グループで最新ではない状態を回避するには、定期的に同期グループの履歴ログをチェックし、同期グループのデータベース全体ですべての競合が解決され、変更が正しく反映されることを確認します。

同期グループが変更の適用に失敗した理由は次のとおりです。

最新ではない同期グループを防ぐには、次の操作を行います。

  • 変更の適用に失敗した行に含まれる値を許可するようにスキーマを更新します。「Q: I just changed my schema. How do I get the change into my sync group?」を参照してください。

  • 変更の適用に失敗した行に含まれる値を含むように外部キー値を更新します。

  • 変更の適用に失敗した行のデータ値を、ターゲット データベース内のスキーマまたは外部キーとの互換性を確保するように更新します。

状態が最新ではない同期グループから復旧する方法については、「A sync group has an "Out-of-Date" status」を参照してください。

特定の状況下で、クライアント エージェント へのデータベース登録を解除すると、同期に失敗する場合があります。

シナリオ:

  1. 同期グループ A が、SQL データベース インスタンス と、ローカル エージェント 1 に関連付けられている内部設置型の SQL Server データベースを使用して作成されました。

  2. この内部設置型データベースは、ローカル エージェント 2 (このエージェントは同期グループに関連付けられていません) に登録されています。

  3. 内部設置型データベースの登録をローカル エージェント 2 から解除すると、内部設置型データベース用の同期グループ A の追跡テーブルまたはメタ テーブルが削除されます。

  4. この時点で、同期グループ A の操作は失敗し、次のエラーが表示されます。
    "現在の操作を完了できませんでした。データベースが同期用に準備されていないか、同期構成テーブルに対するアクセス許可がありません。"

解決策:

  • この状況を完全に回避するには、データベースを複数のエージェントに登録しないことです。

  • この状況から復旧するには、次の手順を実行してください。

    1. データベースを、属しているそれぞれの同期グループから削除します。

    2. データベースを削除したばかりの同期グループそれぞれに、もう一度データベースを追加します。

    3. 影響を受けた各同期グループを配置します (データベースの準備が行われます)。

変更の反映は、多くの理由で失敗する場合があります。次の原因が考えられます。

  • スキーマ/データ型に互換性がない。

  • NULL を許容できない列に NULL を挿入してください。

  • 外部キー制約違反。

  • 警告状態にあることが、同期グループで示されます。

  • 詳細がポータル UI のログ ビューアーに表示されます。

  • 45 日 の保存期間中に問題が解決しない場合は、データベースが最新の状態ではなくなります。


    noteメモ
    これらの変更は反映されません。復旧する唯一の方法は、同期グループを再作成することです。

同期グループとデータベースの状態を、ポータルまたはログ UI を使用して定期的に監視してください。

同期グループからデータベースを削除した場合は、同期グループを編集する前に、いずれかの変更を配置してください。

最初に同期グループからデータベースを削除します。次に、変更を配置して、準備の解除が完了するまで待ちます。完了したら、同期グループを編集して変更を配置できるようになります。

データベースを削除して、同期グループを編集する前にいずれかの変更を配置しないと、1 つまたは他の操作が失敗し、UI の一貫性が損なわれる可能性があります。ただし、これが発生しても、UI を最新の状態に更新して、適切な状態に戻すことができます。

SQL データ同期プレビューは SQL Database に移動の機能です。Azure 管理ポータルから、同期グループの作成、配置、および変更するために必要なすべてのタスクを実行できます。

 

同期グループの作成方法

Azure 管理ポータルから同期グループを作成するには、6 つの手順を実行します。各手順の詳細については、以下のリンクを参照してください。

  1. Azure SQL データベース管理ポータル
    へのサインインSQL データ同期プレビューは、同期グループを作成すると、SQL データベースのタブとして表示されます。

  2. SQL データ同期クライアント エージェントをインストールする

  3. SQL Server データベースをクライアント エージェントに登録する

  4. 同期グループを作成する

  5. データ同期を定義する

  6. 同期グループを構成する (SDS)

同期グループの変更方法

同期グループにテーブルまたは列を追加/削除したり、列の幅またはデータ型を変更したりして、同期グループのスキーマを変更できます。詳細については、以下のリンクを参照してください。

関連項目

表示:
© 2015 Microsoft