問題タブ [database-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 に答える
106 参照

.net - サーバー間で特定のレプリケーション要件を持つ複数のサーバーをレプリケートする

次のような2つのテーブルAとを考えてみましょう(醜いASCIIテーブルについてお詫びします)。B

PNID 0場所αのサーバーがに特定の権限を持ち、場所βのサーバーがに特定のアクセス権を持つことができるようにしたいPNID 1のですが、同じタイプのデータ(所有者が異なるだけ)なので、私はしませんデータ自体を分離する必要があると考えてください。

いずれにせよ、βがにアクセスしたい場合は、のシリアル番号を割り当てて、PNID 0許可される前にまずαと通信する必要があることを確認したいと思います。これは、それらの間のネットワークがダウンした場合、αは生成できるが生成できPNID 0PNID 1、βは生成できるが生成できPNID 1ないことを意味しPNID 0ます。ただし、2つのエンティティが相互に通信を再開すると、αが作成したシリアル番号はすべてPNID 0βに複製され、βからのシリアル番号はPNID 1αのデータベースにマージされます。

より一般的には、αがβの許可なしに新しいシリアル番号を追加できるかどうかに関するすべての決定を行う「仲介者」の場所Ωでこれを設定することを本当に望んでいます。

現在、SQL Server Express(2008 r2)とVisual Basic .NET Express(2010)を使用してサーバーを実装していますが、現在発生している問題を解決できる可能性のある他のオプションを利用できます。正直なところ、私が求めていることがもっともらしいとは言えませんが、もしそうなら、それは私が本当に実装することに非常に興味があることです。

ほとんどすぐに、私が最初に考えることができるのは、場所を表す別の列をテーブルに追加することですBが、これを行うための「正しい」方法ではないと思います。特に他のサーバーとの通信に関する部分(そして正直なところ、データベースでそれができるかどうかさえわかりません。そのため、おそらく.NETで行う必要があると思います。

0 投票する
3 に答える
2941 参照

sql-server - コードからレプリケーション ステータスを取得する方法

SQL Server 2005 データベースでレプリケーションを実行しました。ここで、GUI からステータスを表示したいと思います (C# などでもかまいません)。

レプリケーションのステータスを監視できる方法または API はありますか。これは、レプリケーションが機能していることをクライアントに確認するためのものです。

ありがとう

こんな感じで。 http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-replication/11698/How-to-get-the-replication-status-using-RMO-in

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

sql-server-2008 - カットオフによる SQL Server 同期

私は、いくつかの増え続けるテーブル (注文など) を含む運用 DB (SQL Server 2008 で実行) を持っています。これらのテーブルは大きく、成長し続けているため、ある時点でカットオフを行いたいのですが、当然のことながら、履歴を完全に失いたくありません。だから、私は次のように考えました:

1 回: DB 全体を別のサーバーにバックアップする

定期的に:

  1. 本番DBからバックアップDBへの差分バックアップ/同期
  2. 本番DBでは、カットオフ期間より古いすべての行を削除します

もちろん、これは運用サーバーの通常のバックアップ計画に取って代わるものではありませんが、統計などに使用できるオフサイトで履歴データを利用できるようにしながら、サイズを縮小することができます。

これは理にかなっていますか?もしそうなら、増え続けるテーブルごとに手動でコードを書く以外に、これを可能にするソリューション/ツールを教えてください。

アドバイスをいただければ幸いです。

ミッキー

0 投票する
3 に答える
5324 参照

mysql - Mysql - 「マスターステータスを表示」クエリから値を選択

こんにちは、「SHOW MASTER STATUS」クエリ exp から位置の値だけを選択するにはどうすればよいですか?

あなたの時間と助けてくれてありがとう

0 投票する
2 に答える
3133 参照

mysql - 共有ホスティングでの Mysql レプリケーション

私はいくつかのmysqlレプリケーションを行う必要があります。いくつかの情報:

  • 共有ホスティングに 2 つのデータベース インスタンスがあるため、Mysql レプリケーションを使用できません (構成ファイルにアクセスできません)。
  • これは非営利プロジェクト (教育) のためのものであるため、独自のサーバーを購入する余裕はありません。
  • メインサーバーが数分間ダウンした場合、通常はそれほど悪くはありませんが、メインサーバーと同期されたバックアップソリューションが本当に必要な特定の日が存在します (ウェブサイトの時間制限イベント)。

現在、システムはすべてのテーブルのすべての行でリビジョン番号を使用しており、これらの番号の変更を定期的にチェック (および対応する行を更新) しています。かなり遅いです。

私が考えているのは、すべての SELECT/INSERT/UPDATE クエリが特定のテーブルに記録され、「スレーブ サーバー」が定期的に「マスター サーバー」にこのテーブルの内容を問い合わせ、対応するクエリを適用するということです。

その考えについてどう思いますか。

完璧ではないことはわかっています。すべてのクエリが伝播される前にサーバーがダウンする可能性がありますが、可能な限り少ないコード行で、発生する可能性のある問題を最小限に抑えたいと考えています。

それを実装するための最良の方法は何でしょうか?

  • PHP コードでは、すべての SELECT/INSERT/UPDATE で、特定のテーブルに別の挿入を行うことができます (クエリを挿入するだけです)。
  • トリガー付き?
0 投票する
2 に答える
1507 参照

mysql - 実際にMySQLスレーブに複製されるものは何ですか?

マルチマスターレプリケーションセットアップで2つのMySQLサーバーを構成しています。それぞれが他のスレーブとマスターです。私のアプリケーションでは、いくつかの大きなクエリをバックグラウンドで実行する必要があり、これらのクエリの結果を使用してテーブルにデータを入力します。これらの大規模なクエリを一方のサーバーで実行し、アプリケーションのフロントエンドでもう一方のサーバーを使用できると考えました。このようにして、サーバーがこれらのクエリを実行している間、アプリケーションの速度が低下することはありません。

これらのクエリは非常に大きいINSERT .... SELECTです。私のレプリケーション設定では、1つのサーバーがクエリを終了すると、INSERTをスレーブに送信するだけでなく、スレーブに元の大きなINSERT/SELECTを実行させるようです。

これは実際に起こっているのですか?または、これが動作であることを確認するために、マスターからスレーブに送信されたコマンドを確認する方法はありますか?私が知ることができる唯一の方法は、CPUの負荷からです。

スレーブがINSERTから結果のINSERTのみを取得する方法はありますか...SELECTはマスターで実行されましたか?

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

mysql - Mysql レプリケーションの質問

現在、私はこのシナリオを持っています、

  1. Windows マシンに mysql db がインストールされた複数のデスクトップ クライアント。
  2. レポート目的で、Web 上でホストされている 1 つのサーバーに同期する必要があります。
  3. 一方向の同期 (クライアントから Web へ) を実行するだけです。
  4. クライアント IP は、固定 IP のない標準の adsl を使用するため、常に変化しています。
  5. 各クライアント データベースは、サーバー上の 1 つのスタンドアロン データベース (Web でホストされている) と同期します。
  6. この同期はスケジューラで実行できますか? 以前から3時間ごとのように。

mysql レプリケーションの使用を考えていますが、これをセットアップする方法について質問がありますか? これをマスターからスレーブにセットアップしますか? またはマスターからマスター?サーバーはレポート目的でのみ使用されるため、クライアントがマスターになり、サーバーがスレーブになると想定していますが、多くの mysql レプリケーションをチェックすると、スレーブからの最初のレプリケーションのように見えますか? (スレーブサーバー設定でmaster-host = ipのような設定があることがわかります)サーバーがクライアントIPについてわからないため、これは目的を無効にします...

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

database-design - トランザクションデータベース内のスナップショットの設計と参照データのバージョン管理

免責事項:スタックオーバーフローとインターネットの両方でスナップショットとバージョニングのトピックについて読むことができるすべてを読みました。私の要件は、監査証跡またはデータベースレベルのスナップショットのバージョン追跡ではありません。私は1週間以上を費やして、自分で調査し、可能な選択肢について考えました。申し訳ありませんが、いくつかのリンクを見逃している可能性があります-私の問題の解決策がすでに他のスレッドで議論されている場合は、そこに私を向けてください。

少し長いです。我慢してください。

状況は次のとおりです。トランザクションデータベースにトランザクションデータのスナップショットを保存し、参照データの改訂履歴を保持するための汎用設計を作成しようとしています。

ビジネスプロセスの一環として、ユーザーはボタンを押して特定のオブジェクトを公開できます。説明のために、ユーザーは交渉が始まる前にベンダーからの提案を公開できるとしましょう。次に、交渉プロセスのさまざまな時点で、ユーザーは提案データを公開できます。提案には、予算、販売目標、およびその他の多くの項目が含まれています。プロポーザルのスナップショットを作成するときは、リンクされているすべてのエンティティのスナップショットを作成する必要があります。最後に、交渉後、契約が締結されます。この時点で、契約の完全なスナップショットを作成する必要があります。契約内のすべてのエンティティがプロポーザルに含まれているわけではありません。重複するエンティティは多数ありますが、プロポーザルと契約に関連付けられている固有のエンティティがあります。

これらの公開バージョンと最新のアクティブバージョンの両方を利用可能にしておく必要があります。公開されたバージョンは、両方のベンダーと管理チームが参照できるようにWebサイトで入手できます。公開されたすべてのバージョンがWebサイトで利用できるわけではありませんが、最後に公開された提案と最新の公開された契約は常にWebサイトで利用できます。このWebサイトも、同じデータベースから作成する必要があります。

また、財務ユーザーは予算のみのスナップショットを作成することを決定でき、営業マネージャーは販売目標のスナップショットを作成できます。そのため、スナップショットは複数の粒度で利用できます。

また、マスターデータのバージョンを追跡する必要があります。主要なマスターデータ列へのすべての変更を経時的に追跡することはビジネス要件です。たとえば、販売目標に関連付けられた地域情報があります。地域の名前は変更される可能性があるため、これらの変更を追跡する必要があります。提案時に、リージョンの名前がR1であり、スナップショットが作成されていると仮定します。次に、リージョンの名前がR2に変更され、他の2つのスナップショットが作成されます。その時点での販売目標を正しい地域名にリンクできるようにしたいのですが、必ずしも最新の地域名にリンクする必要はありません。

トランザクションDBとデータウェアハウスDBの両方があるため、モデリングにある程度の柔軟性があり、この情報の一部をトランザクションDBまたはデータウェアハウスDBのいずれかに格納することを決定できます。

これが私たちのデザインです。公開されたデータに関する基本情報(誰が公開したか、日付、理由、公開されたオブジェクトのタイプ(提案、予算、または販売目標))をキャプチャする公開テーブルがあります。

スナップショットは元のデータと同じテーブルに保存されます。したがって、プロポーザルのスナップショットは、ライブプロポーザルとともにプロポーザルテーブルに保存されます。公開する必要のあるすべてのテーブルに、公開IDという列があります。この列は、PublicationテーブルへのFKです。パブリケーションIDがnullの場合、そのレコードはアクティブなバージョンです。

投稿が非常に長いことに気づきました。したがって、シナリオの詳細をリストするのではなく、マインドマップで設計上の考慮事項をすばやく要約することを考えました。 スナップショットの設計に関する考慮事項

現在、私たちが傾倒している2つのソリューションがあります。どちらも、変更されたかどうかに関係なく、すべてのデータのスナップショットを保存します。テーブル構造をそのまま維持しながらデルタのみを維持するには、スナップショットオブジェクトの挿入/更新のたびに実行する必要がある非常に複雑なストアドプロシージャが必要になります。これには時間がかかり、ボリュームはとにかくそれほど大きくないので、私はこのルートを下りたくありません。

解決策1:オブジェクトが公開されるたびに(提案や予算など)、XMLツリーにデータを入力し、これをデータベースに保持します。最新バージョンのみがWebサイトで利用可能である必要があり、古いバージョンが必要になることはめったにありません。これを考えると、XMLを使用しているために大きなパフォーマンスの問題が発生しますか?SQLServerを使用しています。データ量はそれほど大きくありません。

解決策2:すべてのトランザクションテーブルにはパブリケーションIDがあり、参照データには開始日と終了日があります。オブジェクトが公開されるたびに、すべてのトランザクションレコードのコピーを作成し、そこに公開IDを配置し、すべての参照データレコードをコピーして、スナップショットの日付を終了日として配置します。これにより、公開プロセスの外部で参照データの通常のバージョン管理を行うことができます。

これらの2つのアプローチの欠点と、他にもっと良いシナリオがあるかどうかについて、ここで経験豊富な心からの意見が必要です。

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

database-replication - H2データベースからビルドスクリプトを生成する簡単な方法はありますか?

テーブルやインデックスなどを使用してH2データベースを作成することを想像してみましょう...SQLスクリプトを抽出して、このデータベースの構造を別のH2データベースに再作成する簡単な方法はありますか?

テーブルやインデックスなどの内容については言及していません。データベースを他の場所に複製するためのデータベースの一般的な構造に関心があります。ありがとう。

0 投票する
3 に答える
14084 参照

mysql - mysql DBがスレーブであることを確認するには?

クエリで「スレーブステータスを表示」を使用せずにmysql DBがスレーブであることを確認する方法は?