忍者ブログ

Noracorn Try And Error Programサバサバと働くITエンジニア。忘れやすい頭からサラサラと流れ落ちる情報を、書き留めるブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PostgresとpgpoolⅡ

pgpoolⅡ(2.3.2.2)使い方

    参考ページ
    http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-ja.html   
    http://pgpool.projects.postgresql.org/pgpool-II/doc/tutorial-ja.html#config


    インストール
        yum install gcc -y
        以下からソースを落とす。
        http://pgfoundry.org/frs/?group_id=1000055
        ソースを解凍し、ソースフォルダ内に移動する。
        ./configure
        make
        make install
        ※Postgresを先に入れておかないとエラーになります。

    レプリケーション用モード用の設定をする。
    /usr/local/etc/pgpool.conf(/usr/local/etc/pgpool.conf.sampleと同一ファイル)

        ・replication_mode→「true」に設定

            レプリケーションモードで動作させる場合はtrueを指定してください。デ フォルト値はfalseです。このパラメータを変更した時には pgpool-II を再起動してください。

        ・load_balance_mode→「true」に設定

            trueを指定するとレプリケーションモードまたはマスタースレーブモードの際に、SELECT文をロードバランスして検索性能を向上させることができます。デフォルト値はfalseです。このパラメータを変更した時には pgpool-II を再起動してください。
   
        ・replication_stop_on_mismatch→「true」に設定

            trueを指定するとマスターDBと他のDBノードの間でデータの不一致があった場合 に強制的に縮退運転に入ります。このオプションがfalseの場合は、該当の 問い合わせを強制的に終了するだけに留めます。デフォルト値はfalseです。

        ・insert_lock→「true」に設定

            SERIAL型を使っているテーブルをレプリケーションすると、SERIAL型の列 の値がDBノードの間で一致しなくなることがあります。この問題は、 該当テーブルを明示的にロックすることで回避できます(もちろんトランザ クションの並列実行性は犠牲になりますが)。この動作を自動的に行います。

    ユーザのログイン設定をする。
    /usr/local/etc/pcp.conf(/usr/local/etc/pcp.conf.sampleと同一ファイル)
        postgresユーザで、パスワードもpostgresなら、Exampleのところに記述してある
        postgres:e8a48653851e28c69d0506508fb27fc5をそのままコメント外すだけ。
        それ以外のユーザを、登録する場合は、/usr/local/bin/pg_md5でユーザのハッシュパスワード部分を作成する。
        ユーザ名:ハッシュパスワード

    接続許可設定
    /etc/pool_hba.conf

        local   all         all         trust
        host    all         all         0.0.0.0         0.0.0.0          trust

    Postgresの設定(ポートを5431、5433で2つ立ち上げる)
        ※5432は、pgpoolのシステムDBとして設定されているため、避けたほうが良い。

        DB用フォルダ作成
        mkdir -p /var/lib/postgresql/data1
        mkdir -p /var/lib/postgresql/data2

        初期化
        initdb -D /var/lib/postgresql/data1 -Upostgres
        initdb -D /var/lib/postgresql/data2 -Upostgres

        ポート番号変更
        /var/lib/postgresql/data1/postgresql.conf
        /var/lib/postgresql/data2/postgresql.conf
        上記のファイルのport項目を、5431、5433にそれぞれ設定する。

        ユーザ接続用ファイルを編集
        /var/lib/postgresql/data1/pg_hba.conf
        /var/lib/postgresql/data2/pg_hba.conf
        全ての設定をコメントアウトし、以下の設定だけにする。
        local   all         all                               trust
        host    all     all     0.0.0.0         0.0.0.0         trust

        Postgres起動
        su - postgres
        pg_ctl -D /var/lib/postgresql/data1 start
        pg_ctl -D /var/lib/postgresql/data2 start

        終了する場合
        pg_ctl -D /var/lib/postgresql/data1 stop
        pg_ctl -D /var/lib/postgresql/data2 stop


    起動確認
        postgresを2つ立ち上げておくこと。
        pgpool
        netstat -pantuで、pgpoolが9999で待ち受けていること。
        また、Postgresが5431、5433で待ち受けていること。
        pgpool経由でotameshiDBを作成する。
        createdb -p 9999 -Upostgres otameshi
        各Postgresに、DBが作成されているか確認する。
        psql -p 5431 -Upostgres otameshi
        psql -p 5433 -Upostgres otameshi
       
    終了
        pgpool stop

拍手[1回]

PR

Postgres インデックス作成

Postgresインデックスメモ

begin;
CREATE INDEX testIndex ON testTable (keyField);
end;

拍手[0回]

postgres 文字列連結してストアド

文字列連結してストアドメモ

begin;
drop function funcTest();
CREATE FUNCTION funcTest() RETURNS INTEGER AS '
DECLARE
BEGIN
 for num in 1..10 loop
  insert into test values(num, num || ''文字列'');
 end loop;
 return 0; 
END;
' LANGUAGE 'plpgsql';

select funcTest();

end;

拍手[0回]

| HOME |