2016-08-25 9 views
0

私がセットアップしている、次のアーキテクチャでのテストのPostgres-XLのクラスタ:Postgres-XLデータノードへのアクセスがどのように透過的でなければなりませんか?

  • GTM - VM00
  • coord1 + datanode1 - VM01
  • coord2 + datanode2 - VM02

Iをレプリケーションによって配布されるテーブルを含む新しいデータベースを作成しました。これは、それぞれのすべてのデータノードにそのテーブルの正確なコピーを持つ必要があることを意味します。

表の操作がうまくいくと、すべてのコーディネーター・ノードに接続するとレプリケートされた変更がわかります。しかし

、私はまだうまくテーブル内のデータを読み取ることができますが、私が追加または変更は何も、私は次のエラーを受け取ることができない、ダウンdatanodesのいずれかをシミュレート:

ERROR: Failed to get pooled connections 

私はPostgres-XLをかなりの数のアプリケーションのための高可用性データベースバックエンドとして配備することを検討しています。これらのアプリケーションのデータベースとのやりとりを制御することはできません(データベースに書き込むことができない場合、データノードがダウンしています)。

私の理解では、レプリケートされたテーブルの高可用性を非常に透過的な方法で達成し、1つ以上のデータノードを失うことをサポートする必要があります(少なくとも1つはまだ利用可能です。レプリケートされたテーブルの場合)、これは当てはまりません。

これは意図した動作ですか? 1つ以上のデータノードがダウンしても耐えられるようにするためには何ができるのですか?

+0

、質問で説明したように。 – rasebo

答えて

0

だから全く透明でないことが判明しました。私の顎には、Postgres-XLには大きな支持や回復がありません。つまり、1つのノードが失われた場合、データベースは失敗します。また、ノード内のディスクが失われた場合、ラウンドロビンまたはハッシュのDISTRIBUTED BYオプションを使用している場合、データベース全体が失われてしまいます。私はそれを信じることができませんでしたが、それは事実です。

これらのノードには、それぞれのノードのミラーリングされたノードである「スタンバイ」サーバーオプションがありますが、これを手動で設定して必要なノード数を2倍にする必要があります。データ保護のためには、REPLICATION DISTRIBUTED BYオプションを使用する必要があります。これは、非常に遅く、フェールオーバーサポートがないため、手動で再起動し、障害ノードを使用しないように再設定する必要があります。レプリケーションによって

https://sourceforge.net/p/postgres-xl/mailman/message/32776225/

https://sourceforge.net/p/postgres-xl/mailman/message/35456205/

+1

昨年、掘り出し物を見つけた後で私が見つけたのはまさにこの質問に答えるのを忘れてしまった。答えてくれてありがとう。 – rasebo

関連する問題