pgSQLクラスタプロセス

2459 ワード

需要:仕事は3種類のクラスターモードpgClusterを必要とする.全熱予備クラスタ....全部読み書き....各ノードはデータを完全に保持するpg Slony-Ior II.......主従クラスタ.....読み取り専用....主読み書きpg plporxy..........分流特性.....ロードバランシング.....ノードに分散する目的:plproxy上でクエリーを行い、nodeから結果を返す.環境:3台centos:1台plproxy 2台node手順:以下の通り:1.pgsqlをインストールし、すべてのpgsqlをバージョン3にインストールします.xx........ソースコードをコンパイルして、rpmはすべてできます.インストール方法はreadmeまたはinstallドキュメントを参照してください.ソースコードのインストール......デフォルトは/usr/local/pgsql/の下にインストールされます.環境変数の問題を処理してみると・・・export PATH=$PATH:/usr/local/pgsql/binデータベースディレクトリの初期化......initdb-D/usr/local/pgsql/dataはデータベースを生成する......createdbデータベース名plpgsql言語サポートの追加......createlang plpgsqlデータベース名pgsqlのプロファイルを変更......vi/usr/local/pgsql/data/postgresql.confコメントをキャンセル......listen_addresses = '*'     ............port=5432ユーザー認証を追加............hostデータベース名ユーザ名ipアドレスtrust 2インストールplproxy.....Proxyにのみインストールし、nodeはアンパッケージをインストールする必要はありません.......make&&make install plproxyサポートを追加..psql -f/usr/local/pgsql/share/contrib/plproxy.sqlデータベース名P 1にschemaを作成する
psql testproxy ..............psqlクライアントでデータベースに接続する
create schema plproxy; ........schemaを生成します.
vi MyClusterInit.sql、次の内容を保存します:(コメントを削除)
#################   begin    ###################
CREATE OR REPLACE FUNCTION plproxy.get_cluster_partitions(cluster_name text)RETURNS SETOF text AS $$BEGIN    IF cluster_name = 'MyCluster' THEN        RETURN NEXT 'dbname=test1 host=192.168.1.190';        RETURN NEXT 'dbname=test2 host=192.168.1.193';
        RETURN;    END IF;    RAISE EXCEPTION 'Unknown cluster';END;$$ LANGUAGE plpgsql;CREATE OR REPLACE FUNCTION plproxy.get_cluster_version(cluster_name text)RETURNS int4 AS $$BEGIN    IF cluster_name = 'MyCluster' THEN        RETURN 1;    END IF;    RAISE EXCEPTION 'Unknown cluster';END;$$ LANGUAGE plpgsql;create or replace function plproxy.get_cluster_config(cluster_name text, out key text, out val text)returns setof record as $$begin    key := 'statement_timeout';    val := 60;    return next;    return;end; $$ language plpgsql;
################   end    #################
psql -f MyClusterInit.sql -d testproxy...........上記sql文を実行する.以上proxy設定が完了しました.開始ノードの設定:各ノードに関数を作成します.メソッドは同じです.viをファイルに作成し、このファイルを実行します.内容は以下の通り.
        .......................データノードにテーブルusertableを生成し、select*from publicというデータテストを挿入できます.ddlexec(       'insert into usertable(id,username) values(1,'aaa')');              6. 失敗した場合はpgsql公式マニュアルを参照してください.