none
トランザクションレプリケーションでの同期について RRS feed

  • 質問

  • SQL Server のレプリケーションについて、ご質問があります。

    レプリケーションの構成として、Aサーバにパブリッシャ・ディストリビュータプッシュ サブスクリプションを設定し、Bサーバはサブスクライバとした、トランザクションレプリケーションを設定しております

    利用方法としては、負荷分散の目的で、WEBアプリにて、Aサーバを更新用、Bサーバを参照用と切り分けて利用しようと考えています。

    その際、アプリの画面上で更新(Aサーバへの更新)後、直ぐに画面の再描画(Bサーバへの参照)を行うと、Aサーバへの更新がBサーバへレプリケートされていないという問題が発生してしまうのですが、このような利用において、トランザクションレプリケーションは利用できないのでしょうか。

    またその場合、どのような構成が考えられるのでしょうか。

    以上です。よろしくお願いいたします。

    2013年4月25日 7:26

回答

  • SQL Serverのバージョンによりますが、2012であればAlwaysOn可用性グループが良いと思います。
    • 回答としてマーク 星 睦美 2013年5月7日 7:24
    2013年4月25日 10:12
  • こんにちは。

    トランザクションレプリケーションにおいては、
    ディストリビューションエージェントを連続的に実行することで、サブスクライバへのデータ反映までの時間を短くできます。

    トランザクション レプリケーションのパフォーマンスの向上
    http://msdn.microsoft.com/ja-jp/library/ms151762.aspx

    ただし、これも「即時」反映ではありません。
    各エージェントは通常の処理を行いますので、
    サブスクライバへの反映には時間差が生じます。

    データベース層で参照と更新を振り分ける場合、
    SQL Server 2012ではaviator__さんがおっしゃるようにAlwaysOn 可用性グループを利用することになります。
    SQL Server 2008 R2以前のバージョンでは、ご検討いただいたようにレプリケーションをご利用いただくか、
    ログ配布をご利用いただくことになりますが、いずれも「即時」反映を保証する仕組みはありません。

    再描画がユーザーのオペレーションによるものであれば、アーキテクチャを考え直す必要があるかと思います。
    登録処理後に自動的に再描画させるのであれば、内部的にはAデータベースを参照してしまう、
    という処理の変更等が対処案になるのではないでしょうか。

    • 回答としてマーク 星 睦美 2013年5月7日 7:23
    2013年4月27日 1:46

すべての返信

  • SQL Serverのバージョンによりますが、2012であればAlwaysOn可用性グループが良いと思います。
    • 回答としてマーク 星 睦美 2013年5月7日 7:24
    2013年4月25日 10:12
  • aviator__さん返信ありがとうございました。

    ただ今回SQLServerは、2008R2を利用しています。

    2012でないと、今回のようなシステムの構成は、難しいのでしょうか。

    2013年4月26日 2:20
  • こんにちは。

    トランザクションレプリケーションにおいては、
    ディストリビューションエージェントを連続的に実行することで、サブスクライバへのデータ反映までの時間を短くできます。

    トランザクション レプリケーションのパフォーマンスの向上
    http://msdn.microsoft.com/ja-jp/library/ms151762.aspx

    ただし、これも「即時」反映ではありません。
    各エージェントは通常の処理を行いますので、
    サブスクライバへの反映には時間差が生じます。

    データベース層で参照と更新を振り分ける場合、
    SQL Server 2012ではaviator__さんがおっしゃるようにAlwaysOn 可用性グループを利用することになります。
    SQL Server 2008 R2以前のバージョンでは、ご検討いただいたようにレプリケーションをご利用いただくか、
    ログ配布をご利用いただくことになりますが、いずれも「即時」反映を保証する仕組みはありません。

    再描画がユーザーのオペレーションによるものであれば、アーキテクチャを考え直す必要があるかと思います。
    登録処理後に自動的に再描画させるのであれば、内部的にはAデータベースを参照してしまう、
    という処理の変更等が対処案になるのではないでしょうか。

    • 回答としてマーク 星 睦美 2013年5月7日 7:23
    2013年4月27日 1:46
  • Yoshihiro MATSUMOTOさん、返信ありがとうございます。

    頂いた回答とても参考になりました。

    >再描画がユーザーのオペレーションによるものであれば、アーキテクチャを考え直す必要があるかと思います。
    >登録処理後に自動的に再描画させるのであれば、内部的にはAデータベースを参照してしまう、
    >という処理の変更等が対処案になるのではないでしょうか。

    今回のシステムについて、上記の提案を検討したいと思います。

    また、何かあった際は、よろしくお願いします。

    2013年4月27日 14:35