問題タブ [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 投票する
3 に答える
596 参照

sql-server - データベースを複製するときに定数列を追加する方法は?

私は SQL Server 2000 を使用しており、2 つのデータベースがあり、両方が 1 つのデータベースにレプリケート (トランザクション プッシュ サブスクリプション) されています。レコードがどのデータベースからのものかを知る必要があります。

そのため、パブリケーションで指定された固定列をテーブルに追加して、行がどのデータベースからのものかがわかるようにしたいと考えています。

どうすればこれを行うことができますか?

主に、これを行う必要があるテーブルがたくさんあるという事実のために、メインデータベースを変更することは避けたいと思います。どこかでこれを行うレプリケーションの組み込み機能を期待していました。それ以外は、ビューのアイデアに行きます。

0 投票する
5 に答える
1173 参照

replication - アプリケーション レベルのレプリケーション テクノロジ

私は、世界中の複数の地域にある複数のデータ センターに展開されるソリューションを構築しています。各データ センターには、各地域でアクティブに更新されたデータの複製コピーがあります。各データ センターに複数のデータベースとファイル システムを組み合わせて配置し、その状態を (データ センター内で) 一貫性を保つ必要があります。これらの複数のリポジトリは、SOA サービス層によって前面に配置されます。

レプリケーションの遅延は許容できますが、リージョンをオフラインにして後で追いつくことができるようにする必要があります。

データのバックエンド リポジトリが複数あることを考えると、それぞれが一貫した状態を維持するために独立したレプリケーション ソリューションに簡単に依存することはできません。したがって、何らかの方法で SOA 要求を複製することにより、アプリケーション層で複製を実装することになります。レプリケーション ループが発生しないこと、および最後の書き込み条件が正しく分類されることを確認する必要があります。

あなたの経験では、この問題を解決するための最良のパターンは何ですか? また、調査すべき優れた製品 (無料またはその他) はありますか?

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

database - Postgre レプリケーション

現在、PostgreSQL にデータベース (約 2 ~ 3 GB) があります。これは、RoR/Python LAMP のようなアプリケーションのデータ ストレージとして機能します。

メイン データベースを 2 台目のマシンに複製するのに十分なシンプルで堅牢なツールには、どのようなものがありますか?

いくつかのパッケージ (Slony-I など) を調べましたが、実際の話も聞くことができればすばらしいと思います。

今のところ、負荷分散などには関心がありません。今のところ、単純な Write-Ahead-Log 戦略を使用することを考えています。

0 投票する
6 に答える
5280 参照

sql-server - レプリケーション用にマークされた SQL テーブルからの行の削除

マージ レプリケーションで使用される MS SQL 2000 テーブルからすべての行を誤って削除してしまいました (テーブルはパブリッシャにあります)。次に、DTS 操作を使用してバックアップ データベースから行を取得し、テーブルを再作成することで、問題を悪化させました。

これにより、次の問題が発生しました。削除操作はクライアントで行を削除するようにマークしますが、DTS 操作はレプリケーション トリガーをバイパスするため、インポートされた行はサブスクライバーで挿入するようにマークされません。パブリッシャー上にあるデータであっても、実際にはサブスクライバーはデータを失います。

したがって、「心配する必要はありません」と思ったので、行をもう一度削除してから、挿入ステートメントを介して正しく追加すると、サブスクライバーに挿入するようにマークされます。

これは私の問題です。「一意のインデックス 'uc1MSmerge_tombstone' を持つオブジェクト 'MSmerge_tombstone' に重複するキー行を挿入できません」というメッセージが表示されるため、DTSed 行を削除できません。エラー。私がやりたいことは、マージ レプリケーション トリガーをバイパスしてテーブルから行を削除することです。これは可能ですか?サブスクライバーが 50 台以上の Windows モバイル デバイスであるため、レプリケーションを削除してやり直したくありません。

編集: Truncate Table コマンドを試しました。これにより、次のエラーが発生します。

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

file - ファイル複製ソリューション

ファイルを定期的にディスクにドロップして、同じデータセンター内の他の複数の Windows サーバーにレプリケートする、Windows でホストされるビルド プロセスについて考えてみます。他のマシンは IIS を実行し、それらのファイルを大衆に提供します。

コーパスの合計サイズは、数百万のファイル、数百 GB のデータになります。ターゲット サーバーで発生する可能性のある競合、WAN 経由などの潜在的なリンク、コールド スタートのクリーン サーバーに対処する必要があります。

これまでに考えた解決策:

  • キューに入れられたシステムとデーモンは定期的に起動し、サービスとしてコピーまたは実行されます。
  • SAN - 高価、複雑、より高価
  • ROBOCOPY、時限ジョブ - シンプルだが効果的。多くの内部/不確定な状態、たとえばコピー中の場所、エラー
  • 既製の交換品。ソフトウェア - SAN よりも安価ですが、それでも高価です
  • UNC 共有フォルダーであり、repl はありません。待ち時間が長く、コストが低い - クラスタリング ソリューションも必要です。
  • DFS レプリケーション。

他の人は他に何を使用しましたか?

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

mysql - MySQL トリガー + 複数のデータベースでのレプリケーション

MySQL 5.0.45 でいくつかのデータベースを実行しており、レガシー データベースを改訂されたスキーマと同期させようとしているので、両方を並べて実行できます。新しいデータベースにトリガーを追加してこれを行っていますが、レプリケーションで問題が発生しています。私のセットアップは次のとおりです。

サーバー「マスター」

  • データベース「legacydb」は、サーバー「スレーブ」に複製されます。
  • データベース「newdb」には、「legacydb」を更新するトリガーがあり、レプリケーションはありません。

サーバー「スレーブ」

  • データベース「legacydb」

「newdb」への更新は正常に実行され、トリガーが開始されました。「マスター」サーバーで「legacydb」を更新します。ただし、変更はスレーブに複製されません。"SELECT DATABASE();"MySQL のドキュメントによると、簡単にするために、レプリケーションでは、どのクエリをレプリケートするかを決定する際に、クエリの結果を見るのではなく、現在のデータベース コンテキスト (例: ) を確認します。私のトリガーはデータベース「newdb」のコンテキストから実行されるため、レプリケーションは更新を無視します。

updateステートメントを「legacydb」のストアドプロシージャに移動しようとしました。「マスター」に接続して手動で実行すると、これは正常に機能します(つまり、データがスレーブに複製されます)"USE newdb; CALL legacydb.do_update('Foobar', 1, 2, 3, 4);"。ただし、このプロシージャがトリガーから呼び出された場合、複製は行われません。

これまでのところ、これを修正する方法についての私の考えは、次のいずれかです。

  • トリガーに強制的に新しい現在のデータベースを設定させます。これは最も簡単ですが、これは不可能だと思います。これは、ストアド プロシージャで実現したかったことです。

  • 両方のデータベースをレプリケートし、マスターとスレーブの両方にトリガーを設定します。これは可能ですが、設定するのは面倒です。

  • 現在のデータベース コンテキストに関係なく、レプリケーションが "legacydb" へのすべての変更を取得するように強制します。

  • レプリケーションが高すぎるレベルで実行されると、トリガーによって実行される更新が表示されることさえありません。

これを達成する方法についての助けをいただければ幸いです。

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

database - データベースの複製メカニズムについて学ぶのに最適な情報源は何ですか?

さまざまなレプリケーション方法と問題の最も広い概要と最も深い分析はどこにありますか?

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

mysql - 一時テーブルへの書き込みが多いレプリケーション

バックアップの目的でレプリケートする予定のデータベースがあります (現時点ではパフォーマンスは問題ではありません)。

レプリケーションを正しくセットアップしてテストしたところ、すべて問題ありませんでした。

その後、すべての書き込みが一時テーブルに複製されることに気付きました。これは、実際には、アイドル状態のスレーブで 1 日分のデータの複製に約 2 時間かかったことを意味します。

その理由は、15 分ごとに cronjob を介してデータベース内のデータの一部を再計算し、同期していることを確認するためです (合計で約 3 分かかるため、Web 要求中にこれらの操作を行うことは受け入れられません。代わりに、 Web リクエスト中に何も再計算を試みずに変更を保存し、すべての作業をまとめて実行します)。そのデータを効率的に処理するために、一時テーブルを使用します (多くの相互依存関係があるため)。

ここで、最初の問題は、一時テーブルを使用するトランザクションの処理中にスレーブを再起動すると、一時テーブルが保持されないことです。これは、一時テーブルを使用しないことで回避できますが、これには独自の問題があります。

より深刻な問題は、再計算がすべて行われなければ、スレーブが 30 分以内に簡単に追いつく可能性があることです (再計算は次々に行われるため、15 分ごとにデータを再構築する利点はありません...文字通り、たとえば 1115 でスタックしているのを見ることができますが、すぐに追いついて 1130 でスタックするなど)。

私たちが思いついた解決策の 1 つは、そのすべての再計算をレプリケートされたデータベースから移動して、スレーブがそれをレプリケートしないようにすることです。ただし、最終的に更新するテーブルを削除する必要があり、スレーブを実質的に「去勢」する必要があるという欠点があります。実際に使用する前に、すべてを再計算する必要があります。

誰かが同様の問題を抱えていましたか、またはどのように解決しますか? 明らかな何かが欠けていますか?

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

sql-server - MS-SQL Server 2005: 別のスナップショットの場所を使用してマージ サブスクリプションを初期化する

1 年前に海外でのマージ レプリケーションを開始しましたが、今のところすべて順調に進んでいます。私の問題は、システムに非常に多くのデータがあるため、サブスクライバーのサーバーのいずれかがクラッシュすると大惨事になることです: 標準的な方法でサブスクリプションを再初期化するには数日かかります (私たちの接続は確かに遅いですが、すでに非常に高価です)! 私がフォローアップしているアイデアの中には、次のようなものがあります。

  1. 元のデータベースのコピーを作成し、それをフリーズし、プレーンでファイルをサブスクライバーに送信し、スナップショットを使用せずにレプリケーションを開始します。これは、古いバージョンの SQL で伝統的に行われてきたことですが、私には少し面倒に思えます:パブリッシャーのデータを読み取り専用モードにし、操作が完了するまですべてのレプリケーションを停止する必要があります。
  2. データのスナップショットを作成し、スナップショット ファイルを海外に送信し、サブスクライバーにインストールして、レプリケーション プロパティで新しいスナップショットの場所を別の場所として指定します。これは私には公平に思えます (進行中のレプリケーションを中断する必要はなく、データのフリーズもありません) が、この点では、Microsoft のヘルプは役に立ちません。

そんな状況を経験したことがある方もいらっしゃると思います。あなたの選択は何ですか?

編集:もちろん、「あなたのアイデアを試してみませんか」と言うことができますが、それには数時間かかります(SQLサーバー、仮想マシン、およびそのすべての複数のインスタンス...)、そして私それをやった人が自分の考えを説明するのに2分しかかからないだろうと思っていました. そして、誰かが私に何時間ものハードワークを割いてもらうために、2分間の時間を割いてくれるなら、私は最高に幸せです...

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

login - Web サイトのログインとして OpenID を使用する - 冗長プロバイダー

OpenID ログイン Web サイトで冗長性をサポートするにはどうすればよいですか?

たとえば、私には 100% のアップタイムを要求するユーザーがいます (ええ、そうですが、できるだけ近づけましょう)。

それらの一部は、あまり利用できないプロバイダーを使用しています (つまり、自分の Web サイトの myphpid や、ダウンタイムが頻繁に発生するスタートアップの ID など)。これで、より信頼性の高いプロバイダーに転送できますが、冗長性も必要です。

展開できることを願っていますが、OpenID について十分に理解していないため、次のような解決策を試すことができます。

同じ資格情報 (ハッシュ/キー/など) で異なるドメインを使用して、異なるホスティング サービスにいくつかの phpmyids を設定します (理想的には、ラウンド ロビン DNS と同じ名前を使用しますが、それらが異なる場合も説明したいと思います)。ドメイン)。

これは機能しますか?つまり、資格情報を含むまったく同じ phpmyid ファイルが異なるサーバーにあるということです。システム内の各ユーザーに複数の OpenId アカウントをリンクする必要がないように、example.com/id と example2.com/id を使用して、自分の側で同じように見えることを期待できますか?

私は phpmyid の例を使用していますが、質問はより一般的です - 重要なのは資格情報ですか、それともドメイン/ip/ですか? また、これを防ぐような方法でリンクされていますか?

そのOpenIDを使用した各Webサイトでリンクを解除して再リンクすることなく、OpenIDをあるプロバイダーから別のプロバイダーに移動できる標準はありますか、またはあり得ますか?

-アダム