公式が移動したようだ。http://pgpool.net/mediawiki/index.php/Main_Page
streaming replication環境での導入など。http://pgpool.projects.postgresql.org/pgpool-II/do...。
基本的な設定はpostgresねたで終わっているものとする。
公式ページはここにかわったようだ
sysconfigに簡易な設定ファイルを作る
起動設定
streaming replication環境での導入など。http://pgpool.projects.postgresql.org/pgpool-II/do...。
基本的な設定はpostgresねたで終わっているものとする。
公式ページはここにかわったようだ
しなくてもいいが。.bash_profileとかに追加するなど
export PGPOOLHOME=/usr/local/pgpool PATH=$PATH:$PGHOME/bin:$PGPOOLHOME/bin
postgresqlがインストールされている環境が必要(使って無くても)なので、DBサーバで使用しているpostgresqlをそのままもってくるとよい。pg_configのpathが分からないとconfigureできないので、
export PATH=$PATH:/usr/local/pgsql/binなどをしておく
3.2からquery cacheが導入されており、memcachedに保存することが可能。これに必要なライブラリをインストールする。開発元はここ
yum install libmemcached libmemcached-devel
cd /usr/local/src # versionは都度最新版をインストールこと curl -L "http://www.pgpool.net/download.php?f=pgpool-II-3.2.0.tar.gz" -o pgpool-II-3.2.0.tar.gz tar xvfz pgpool-II-3.2.0.tar.gz cd pgpool-II-3.2.0 ./configure --prefix=/usr/local/pgpool-II-3.2.0 --with-pgsql=/usr/local/pgsql --with-openssl --with-memcached=/usr make make install cd /usr/local ln -s pgpool-II-3.2.0 pgpool cd /usr/local/src/pgpool-II-3.2.0 mkdir /var/run/pgpool chown postgres.postgres /var/run/pgpool
あんまりどっちでもいいような気がするけど(理由はなんでか忘れた)
以下がインストールされるので、postgresqlが稼動しているサーバに転送する
インストール後、以下を実施する
cd $PGPOOL_SRCDIR/sql/pgpool-regclass make make install
以下がインストールされるので、postgresqlが稼動しているサーバに転送する
/usr/local/pgsql/share/contrib/uninstall_pgpool-regclass.sql /usr/local/pgsql/share/contrib/pgpool-regclass.sql /usr/local/pgsql/lib/pgpool-regclass.so
インストール後、以下を実施する
psql -U postgres -h <DBSERVER> -p 5432 -f /usr/local/pgsql/share/contrib/pgpool-regclass.sql template1
streaming replication を行うのなら必須
以下がインストールされるので、postgresqlが稼動しているサーバに転送する
転送後、以下を実施
cd $PGPOOL_SRCDIR/sql/pgpool-walrecrunning make make install
以下がインストールされるので、postgresqlが稼動しているサーバに転送する
/usr/local/pgsql/share/contrib/pgpool-walrecrunning.sql /usr/local/pgsql/share/contrib/uninstall_pgpool-walrecrunning.sql /usr/local/pgsql/lib/pgpool-walrecrunning.so
転送後、以下を実施
psql -U postgres -h <DBSERVER> -p 5432 -f /usr/local/pgsql/share/contrib/pgpool-walrecrunning.sql template1
online recovery
以下がインストールされるので、postgresqlが稼動しているサーバに転送する
転送後、以下を実施
cd $PGPOOL_SRCDIR/sql/pgpool-recovery make make install
以下がインストールされるので、postgresqlが稼動しているサーバに転送する
/usr/local/pgsql/share/contrib/pgpool-recovery.sql /usr/local/pgsql/share/contrib/uninstall_pgpool-recovery.sql /usr/local/pgsql/lib/pgpool-recovery.so
転送後、以下を実施
psql -U postgres -h <DBSERVER> -p 5432 -f /usr/local/pgsql/share/contrib/pgpool-recovery.sql template1
cp -p $PGPOOL_SRCDIR/redhat/pgpool.init /etc/init.d/pgpool chmod 755 /etc/init.d/pgpoolちょっと変更する
起動ファイルはpatchをあてる ===== --- /usr/local/src/pgpool-II-3.1.0-beta2/redhat/pgpool.init 2009-10-22 20:52:33.000000000 +0900 +++ /etc/init.d/pgpool 2011-08-24 23:27:45.000000000 +0900 @@ -4,7 +4,7 @@ # chkconfig: - 64 36 # description: Starts and stops the pgpool daemon # processname: pgpool -# pidfile: /var/run/pgpool.pid +# pidfile: /var/run/pgpool/pgpool.pid # # v1.0.0 Devrim GUNDUZ <devrim@CommandPrompt.com> # - Initial version of Red Hat / Fedora init script @@ -49,11 +49,12 @@ fi # Set defaults for configuration variables -PGPOOLENGINE=/usr/bin +PGPOOLHOME=/usr/local/pgpool +PGPOOLENGINE=$PGPOOLHOME/bin PGPOOLDAEMON=$PGPOOLENGINE/pgpool -PGPOOLCONF=/etc/pgpool-II/pgpool.conf +PGPOOLCONF=$PGPOOLHOME/etc/pgpool.conf PGPOOLPIDDIR=/var/run/pgpool -PGPOOLLOG=/var/log/pgpool.log +PGPOOLLOG=/tmp/pgpool.log test -x $PGPOOLDAEMON || exit 5 @@ -119,7 +120,7 @@ failure else killproc /usr/bin/pgpool -# $PGPOOLDAEMON stop & >> "$PGPOOLLOG" 2>&1 < /dev/null + $PGPOOLDAEMON stop & >> "$PGPOOLLOG" 2>&1 < /dev/null RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${NAME} fi;
sysconfigに簡易な設定ファイルを作る
cat <<EOL >/etc/sysconfig/pgpool OPTS="-c -n" EOL
起動設定
chkconfig --add pgpool chkconfig pgpool on
管理情報を取得、操作するためのI/Fにアクセスするためのユーザ認証設定
cp -p /usr/local/pgpool/etc/pcp.conf.sample /usr/local/pgpool/etc/pcp.conf chown postgres.postgres /usr/local/pgpool/etc/pcp.conf echo postgres:$(/usr/local/pgpool/bin/pg_md5 <PASS>) >> /usr/local/pgpool/etc/pcp.conf
streaming repliationを使うので以下を実行
あとで内容を載せる
# connection poolとmaster/slave構成での冗長化 cp -p /usr/local/pgpool/etc/pgpool.conf.sample-stream /usr/local/pgpool/etc/pgpool.conf chown postgres.postgres /usr/local/pgpool/etc/pgpool.conf
あとで内容を載せる
pgpoolの認証。実際に接続するDBユーザとあわしておけばいいっぽい。ちゃんと試してないけどよくわからない
以下が出るので、postgresqlでは認証はtrustにしないといけない -> iptablesでも制限をかけるべきだが、pg_hba.confも10.0.0.4/32 のように特定のサーバ以外接続できないようにしておいたほうがよい。
これをhost all/allの元にあたる行として追加
hostの認証方式はmd5にしておくこと
以下が出るので、postgresqlでは認証はtrustにしないといけない -> iptablesでも制限をかけるべきだが、pg_hba.confも10.0.0.4/32 のように特定のサーバ以外接続できないようにしておいたほうがよい。
これをhost all/allの元にあたる行として追加
host all all 10.0.0.4/32 trust
hostの認証方式はmd5にしておくこと
cp -p /usr/local/pgpool/etc/pool_hba.conf.sample /usr/local/pgpool/etc/pool_hba.conf touch /usr/local/pgpool/etc/pool_passwd chown postgres.postgres /usr/local/pgpool/etc/pool_hba.conf /usr/local/pgpool/etc/pool_passwd # -uを指定しない場合は現在ログインしているシステムユーザでpool_passwdに登録される /usr/local/pgpool/bin/pg_md5 -m -u postgres <PASS> /usr/local/pgpool/bin/pg_md5 -m -u kurt <PASS>pool_passwdは<USER>:<PASS>の形式で登録される
3.2.0からの新機能。memcachedにも保存できる。これはあつい
以下の設定を覚えておけばよい
ディレクトリを作成しておく
これでpgpoolをrestartするとよい。cacheにhitした場合はログに以下が残る
- http://postgresql.at.webry.info/201112/article_1.h...
- http://www.pgpool.net/pgpool-web/contrib_docs/memq...
以下の設定を覚えておけばよい
memory_cache_enabled = on memqcache_method = 'shmem' 共有メモリ or memcached memqcache_expire = 30 期限(sec. 0は無期限) memqcache_maxcache = 409600 これより大きい結果の場合はcacheされない(byte指定。defaultは400KB) memqcache_auto_cache_invalidation = on # 更新処理系は対象テーブルのcacheを削除する memqcache_oiddir = '/usr/local/pgpool/oiddir' shmemにした場合の作業用ディレクトリ white_memqcache_table_list = '' # 試してないけどこれらのみをcacheする。temp, unlogged tableも対象にできる black_memqcache_table_list = '' # たぶんこれらはcacheしない log_per_node_statement = on # cacheしてるかログみてわかるのでonにしておく
ディレクトリを作成しておく
mkdir /usr/local/pgpool/oiddir chown postgres.postgres /usr/local/pgpool/oiddir
これでpgpoolをrestartするとよい。cacheにhitした場合はログに以下が残る
2012-08-18 00:49:52 LOG: pid 1517: query result fetched from cache. statement: select * from t1;
show pool_statusで見ることができる
memqcache_no_cache_hits | 3 | Number of SELECTs not hitting query cache memqcache_cache_hits | 1 | Number of SELECTs hitting query cacheこれらをもとにヒット率を計算することができるので、90%を超えるように設計をすることを心掛ける
タグ
最新コメント