問題タブ [database-cluster]

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 投票する
0 に答える
444 参照

mysql - DBクラスターノード切り替え後のActiveRecord::ConnectionTimeoutError

環境

Rails 3.2.x アプリの負荷を 2 つの Web サーバー (web1 と web2) 間で分散しています。各 Web サーバーは、mysql データベースのクラスター化された IP を指します。データベースは (ラックスペースごとに) クラスター化された 2 つのサーバーです。フェールオーバーまで、一度に 1 つのデータベースがアクティブになります。

エラー

最新のフェールオーバーでは、web1 は送信ActiveRecord::ConnectionTimeoutErrorを開始しましたがMiddleware/Rack/ActiveRecord::QueryCache#call(以下のスタック トレース)、web2 にはエラーはありませんでした。これは、DB が安定し、100% が他のノードに切り替えられた後に発生したことに注意してください。

仮説

私の理論は、セッション、キャッシュ、または接続が古いノードを参照し、切り替えられると、その接続を見つけることができなかったというものです。両方の DB ノードがクラスター化され、同じクラスター化された IP でサービスを提供し、レプリケートされるため、これは奇妙に思えます。

一時的な解決策

私たちの暫定的な解決策は、web1 rails サーバーを再起動することでした。これはうまくいきました。

質問

1) ここで何が起こっているのか説明が得られるかどうか疑問に思っていました

2)将来これを防ぐことができる構成設定はありますか。

スタックトレース

エラー メッセージ ActiveRecord::ConnectionTimeoutError: 5 秒以内にデータベース接続を取得できませんでした (5.000268907 秒待機)。最大プール サイズは現在 5 です。増やすことを検討してください。

…record/connection_adapters/abstract/connection_pool.rb: 258:in block (2 levels) in checkout' …record/connection_adapters/abstract/connection_pool.rb: 242:inloop' …record/connection_adapters/abstract/connection_pool.rb: 242:in block in checkout' /usr/local/lib/ruby/1.9.1/monitor.rb: 211:inmon_synchronize' …record/connection_adapters/abstract/connection_pool.rb: 239:in checkout' …record/connection_adapters/abstract/connection_pool.rb: 102:inblock in connection' /usr/local/lib/ruby/1.9.1/monitor.rb: 211:in mon_synchronize' …record/connection_adapters/abstract/connection_pool.rb: 101:inconnection' …record/connection_adapters/abstract/connection_pool.rb: 410:in retrieve_connection' …nnection_adapters/abstract/connection_specification.rb: 171:inretrieve_connection' …nnection_adapters/abstract/connection_specification.rb: 145:inconnection' …s/activerecord-3.2.19/lib/active_record/query_cache.rb: 67:in呼び出し中のレスキュー' …s/activerecord-3.2.19/lib/active_record/query_cache.rb: 61:call' …record/connection_adapters/abstract/connection_pool.rb: 479:in呼び出し中' …ack-3.2.19/lib/action_dispatch/middleware/callbacks.rb: 28:in block in call' …s/activesupport-3.2.19/lib/active_support/callbacks.rb: 405:in_run__862588711471957735__call__1324336831638990183__callbacks' …s /activesupport-3.2.19/lib/active_support/callbacks.rb:405:で__run_callback' …s/activesupport-3.2.19/lib/active_support/callbacks.rb: 385:in_run_call_callbacks' …s/activesupport-3.2.19/lib/active_support/callbacks.rb: 81:run_callbacks' …ack-3.2.19/lib/action_dispatch/middleware/callbacks.rb: 27:in呼び出し中' …ack-3.2.19/lib/action_dispatch/middleware/remote_ip.rb: 31:call' …/gems/airbrake-3.1.14/lib/airbrake/rails/middleware.rb: 13:in呼び出し中' ….19/ lib/action_dispatch/middleware/debug_exceptions.rb: 16:in call' …2.19/lib/action_dispatch/middleware/show_exceptions.rb: 56:incall' …by/1.9.1/gems/railties-3.2.19/lib/rails/rack/logger.rb: 32:in call_app' …by/1.9.1/gems/railties-3.2.19/lib/rails/rack/logger.rb: 16:inblock in call' …ivesupport- 3.2.19/lib/active_support/tagged_logging.rb: 22:tagged' …by/1.9.1/gems/railties-3.2.19/lib/rails/rack/logger.rb: 16:in呼び出し中' …ck-3.2.19/lib/action_dispatch/middleware/request_id.rb: 22:call' …/ruby/1.9.1/gems/rack-1.4.5/lib/rack/methodoverride.rb: 21:in呼び出し中' …/bundle/ruby/1.9.1/gems /rack-1.4.5/lib/rack/runtime.rb: 17: call' …9.1/gems/airbrake-3.1.14/lib/airbrake/user_informer.rb: 16:inin_call' …9.1/gems/airbrake-3.1.14/lib/airbrake/user_informer.rb: 12:in call' …le/ruby/1.9.1/gems/railties-3.2.19/lib/rails/engine.rb: 484:incall' …by/1.9.1 /gems/railties-3.2.19/lib/rails/application.rb: 231:incall' …gems/railties-3.2.19/lib/rails/railtie/configurable.rb: 30:inmethod_missing' …r-3.0.13/lib/phusion_passenger/rack/request_handler.rb: 96:`process_request' で

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

sql-server - MS SQL Server ミラーリング/クラスタリング/レプリケーション

登録用の Web ページが必要なクライアントがあります。このウェブページは、お客様が会場の Wi-Fi に接続するとすぐに表示されます。すべての登録情報は、MS SQL Server にプッシュされます。

ここでのポイントは、このクライアントが 2 つの異なる国に 2 つの場所を持っているということです。各国には独自の DB があり、まったく同じデータが必要です。また、MSSQL サーバーの 1 つがダウンしている場合は、他のサーバーが要求を受け取る必要があります。

一度にアクティブなサーバーは 1 つだけなので、ミラーリングは解決策ではないようです。両方のサーバーが同じストレージを共有する必要があるため、クラスタリングも理解していません。これらの 2 つの DB を別々に作成し、レプリケーション サービスを (双方向で) 実装して、一方の DB に着信するデータがもう一方の DB に送信されるようにする必要がありますか?

よろしくお願いいたします。

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

database-replication - RethinkDB クラスターに接続して操作する

RethinkDB のクラスターが実際にどのように機能するかについての多くのドキュメントを見つけることができないようです。

  1. Cassandra では、1 つ以上のホストを定義してクラスターに接続します。そのため、そのうちの 1 つがダウンしたり、削除されたりした場合でも、変更を反映してコード/構成が更新される前に、クラスター全体に接続できます。私のホストの IP アドレスの。

私が理解している限り、RethinkDB にはそのようなロジックはなく、自分で実装する必要がありますが、それでも常にクラスター全体に接続されているということでよろしいですか?

  1. データベースを作成するとき、それはクラスター全体に対して作成される「一種の」ものであり、それを処理する正確なサーバーを指定する方法はなく、その必要もありません。テーブルを作成し、プライマリ レプリカ タグを指定しない場合、どのサーバーがプライマリ レプリカになりますか? 複数のサーバーに割り当てられているタグを指定すると、同じ質問が適用されます。メイン レプリカとなる最終サーバーはどのように選択されますか?
0 投票する
2 に答える
25 参照

redis - Redis pre GET イベント

検索されたキーが存在しない場合、メソッド GET をオーバーライドするか、サーバー側で実行されて別のキー値を返す新しい関数を作成するにはどうすればよいですか?

例:

キー「word_1 word_2 word_3 word_4」が存在しない場合、このキー「word_1 word_2 word_3」を検索します。キー「word_1 word_2 word_3」が存在しない場合、このキー「word_1 word_2」を検索します。キー「word_1 word_2」が存在しない場合、このキー「word_1」を検索します。 . この再帰的検索は、(速度のために) サーバー側で行う必要があります。

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

percona - Percona XtraDB クラスター (PXC) ノード/データのないインスタンス (クォーラム用)

2 つのデータ センター間に 2 つの PXC ノードを構築する必要があります。これら 2 つのデータ センターには、パブリック ノード (より重要) とプライベート ノード (ネットワークの問題によりオフラインになる場合があります) があります。ノードが 2 つしかない場合、ノードがオフラインになると、クラスター全体が到達不能になります。

スプリットブレインを防ぐには、奇数ノードを構築する方がよいはずです。この問題を防ぐために、モデレーターとして追加のノードを構築したいと考えています。しかし、フル機能のノードを構築できませんでした。

データなしで PXC ノードを構築する方法はありますか? または、任意のパッケージで、ノードがクォーラムのみを表すことができますか?

ありがとう!

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

database - マスター/スレーブを優先するのはいつですか? クラスタ化するのはいつですか?

データベースのレプリケーションについて書かれた記事がたくさんあることは知っています。私を信じてください、私はレプリケーションの長所と短所を説明するこのSOを含むこれらの記事を読むのに時間を費やしました。このSO 記事では、レプリケーションとクラスタリングについて個別に詳しく説明していますが、次のような簡単な質問には答えていません。

  1. いつデータベースをレプリケートし、いつクラスター化しますか?
  2. 両方を同時に実行できますか? はいの場合、それぞれのインスピレーションは何ですか?

前もって感謝します。

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

mysql - MySQL 負荷分散

6 つのサーバー (4 つのアプリケーション サーバーと 2 つの DB サーバー) があります。

HAProxy を使用して、アプリケーション サーバーと API サーバーの間で負荷を分散しています (2/2)

今私が抱えている問題は、システム管理者が MySQL でマスター/スレーブをセットアップしたことですが、常に失敗し、今までスレーブを使用できませんでした。これは、ほとんどのデータが常に破損しており、常に修正する必要があるためです。さまざまなエラーが発生しています。

読み取り/書き込み (マスターでの書き込み、スレーブでの読み取り) に対してある種の負荷分散を試みましたが、スレーブ データが常に正しいとは限らないため、それを使用することができませんでした。

私が疑問に思っているのは、データが常に正確である必要があり、リスクを冒すことができない高負荷サーバーを扱うとき、大手はどのように進めているのでしょうか?

誰かが彼自身の経験と彼が使用したものを教えてもらえますか?

私が見つけたもの:Percona XtraDB Clusterですが、この方向に進む前に入力が必要です...

ありがとう !!

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

powershell - NosDB オープンソースに 2 番目のノードを追加するには?

NosDBを試して、単一ノードでデータベース クラスターを作成し、データベース クラスターに 2 番目のノードを追加しましたが、「Add-Shard : Login 'asif_mehmood' does not exist」というエラー メッセージが表示されて失敗しています。
私が実行した手順:

  • 2 つのボックスに NosDb OpenSource をインストールしました。
  • New-DatabseCluster PowerShell コマンドレットを使用して、最初のボックスに 1 つのシャードを持つクラスターを作成しました。
  • Add-shard powershell コマンドレットを使用して、ノードとして 2 番目のボックスを持つ別のシャードを追加しました。
  • 次のエラー メッセージで失敗しました

Add-Shard : ログイン 'asif_mehmood' は存在しません
行:1 文字:1
+ Add-Shard -Name shard2 -Server 192.168.0.15 -Port 2250