問題タブ [geo-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
225 参照

azure - Azure SQL での外部データ ソースの処理と geo レプリケーション

以下は私の紺碧のセットアップです

  1. エラスティック プール プライマリ (30 データベース) - アクティブ
  2. エラスティック プール セカンダリ (30 データベース) - 読み取り専用 geo レプリケート。

プライマリ プールは、読み取りと書き込みのために WebApp によって使用されます。すべてのレポートはセカンダリで実行されます。

最近、プライマリのデータベースの 1 つに外部データ ソースを追加する必要がありましたが、クロス データベース クエリはうまく機能します。

良いことは、この外部データ ソース構成もレプリケートされ、セカンダリで適切に機能することです。

問題 :

セカンダリからクエリを実行すると、問題なく実行されます。私の懸念は、プライマリ db1 の外部データ ソースを使用していることです。

db1 の独自のコピーを使用できるように、セカンダリ プールに外部データ ソースを追加するより良い方法はありますか? または、Azure SQL はこれを単独で処理しますか?

フィードバックやヘルプをいただければ幸いです。

ありがとうございました

0 投票する
4 に答える
250 参照

.net - .NET NHibernate sp_wait_for_database_copy_sync を使用した Azure SQL ジオレプリケーションの問題

アプリケーションの開発中に、Azure SQL Geo レプリケーションを導入して、さまざまな地理的な場所でのユーザー エクスペリエンスと応答性を向上させました。

現在、テスト中の 2 つのインスタンスがあります。プライマリとセカンダリ*で、1 つは米国にあり、もう 1 つはヨーロッパにあります。

問題

sp_wait_for_database_copy_sync が呼び出されたにもかかわらず、プライマリデータベースから新しく更新されたデータがセカンダリデータベースで使用できるようには見えません。

問題を再現する手順

  1. ユーザーがセカンダリインスタンスに接続する
  2. ユーザーがデータを更新します (プライマリデータベースに移動する「UPDATE」または「INSERT」 )。
  3. トランザクションがコミットされました
  4. sp_wait_for_database_copy_syncプロシージャは、適切なパラメーターを使用して呼び出され、更新呼び出しのブロックが解除されたときにデータがセカンダリ インスタンスにレプリケートされるようにします
  5. update 呼び出しのブロックが解除されると、データ (新しく更新または挿入されたデータを含む) をプルしようとする試みがセカンダリデータベースで行われます。
  6. 新しく更新または挿入されたデータが結果セットに含まれていない - データベース コピーの同期手順では、更新呼び出しのブロック解除時にデータがレプリケートされることが保証されていませんでしたが、結果セットに表示されます。

技術的な実装の詳細

エンティティが更新され、トランザクションがコミットされ、データの同期が確保されると、次の 3 行のコードが順番に呼び出されます。

  1. ISession.Save(object obj)新しいエンティティを保存するために使用されます
  2. ISession.Flush()トランザクションをコミットするために使用されます
  3. ISession.CreateSQLQuery("EXEC sys.sp_wait_for_database_copy_sync @target_server = N\'secondary-server\', @target_database = N\'database\';").ExecuteUpdate()コールブロッキング同期手順を実行するために使用されます

質問

上記の 3 行のコードのどこが間違っているのでしょうか? 私が見る可能性のある犯人は次のとおりです。

  1. ISession.Flush同期的に実行されないため、ブロッキング ストアド プロシージャが実行されるとき、トランザクションはまだ実際にはコミットされていません。
  2. ISession.CreateSQLQuery("EXEC sys.sp_wait_for_database_copy_sync @target_server = N\'secondary-server\', @target_database = N\'database\';").ExecuteUpdate()実際にはブロックされていません。

上記の 2 つまたはその他の問題をトラブルシューティングする方法についてのアイデアをいただければ幸いです。

  • この場合のプライマリとセカンダリは、geo レプリケーションの設定に関するものです。
0 投票する
0 に答える
29 参照

database - Azure データベースのフェールオーバー後に Azure Web アプリケーションにログインできない

アプリケーション接続文字列を構成しました。

最初は Web アプリケーションにログインできますが、フェイルオーバーを実行すると webapp にログインできません。

データベースには、ユーザー名とパスワードのテーブルがあります。Web アプリはデータベース テーブルから認証されます。

0 投票する
1 に答える
115 参照

azure-sql-database - 大きなテーブルを使用した Azure SQL データベースの geo レプリケーション

Azure 以外のデータベースを Azure Sql データベースに移動する準備をしており、Geo レプリケーションをフェールオーバーとして使用したいと考えています。

私たちの監査テーブルには 1 億 3000 万行以上のデータがあり、シード処理にどれくらいの時間がかかるのでしょうか?

また、本番アプリを開く前に、シード処理が完了するのを待つ必要がありますか? シーディング プロセスが完了せず、プ​​ライマリ データベースでトランザクションの作成を開始した場合、セカンダリ DB のそれらのトランザクションはどうなりますか?