10月 23

pgpoolAdmin インストール

By ststyle Database, PostgreSQL, pgpool-II, pgpoolAdmin コメントは受け付けていません。

pgpoolAdminはpgpoolの管理をするためのツールです。

GUIベースで、pgpoolの状態監視や起動・停止、pgpool.confの設定を行うことができます.

pgpoolAdminの取得

pgpoolAdminを入手する

apacheのドキュメントディレクトリにて展開&リネーム

tar zxvf pgpoolAdmin-2.1-beta1.tar.gz
mv pgpoolAdmin-2.1-beta1 pgpoolAdmin

chown nobody /usr/local/apache/htdocs_ssl/pgpoolAdmin/conf/pgmgt.conf.php
chmod 644 /usr/local/apache/htdocs_ssl/pgpoolAdmin/conf/pgmgt.conf.php

pcp.confにログインアカウントを登録する

ここではtestとしていますが実際はセキュアなパスワードを設定する事

md5パスワードを取得


/usr/local/pgpool/bin/pg_md5 test

098f6bcd4621d373cade4e832627b4f6

pcp.confに追記


vi /usr/local/pgpool/etc/pcp.conf

# USERID:MD5PASSWD
test:098f6bcd4621d373cade4e832627b4f6

ブラウザで確認

http://<サーバ>/pgpoolAdmin/login.php

pgpoolAdmin

TOP画面

pgpoolAdmin-02

Tagged with:
10月 23

pgpool-II インストール

By ststyle Database, PostgreSQL, pgpool-II コメントは受け付けていません。

pgpool-IIはPostgreSQL専用のミドルウェアで,

PostgreSQLのデータベースクライアントとPostgreSQLサーバの間に割り込む形で動作し,

PostgrSQLに以下のような機能を追加します.

・コネクションプーリング::接続を保存し,再利用することで接続オーバヘッドを低減しスループット向上を図る

・負荷分散::多数のリクエストをそれぞれのサーバで分担して負荷を軽減させ,システム全体の性能を向上させることができます

・レプリケーション::物理的に2台以上のディスクにリアルタイムで書き込み処理を行い、万が一どれかのディスクに障害が発生しても運用を継続することができます.

・パラレルクエリ::それぞれのサーバに問い合わせを行い、問い合わせの処理時間を短縮

ここでの環境のポート番号は以下のようにしております

※PORT5439にて接続した場合はPGPOOL経由となりレプリケーションなどが働きます。

PGPOOLはメインDBにインストールしています

—————————————–

アプリ

pgpool(5439)

↓                    ↓

メインDB(5432)       バックエンドDB(5432)

—————————————–

PGPOOLインストール

事前準備


su -
mkdir /usr/local/pgpool
chown postgres:postgres /usr/local/pgpool

展開&インストール


su postgres
cd /usr/local/src/
% tar zxf pgpool-II-2.1.tar.gz
% cd pgpool-II-2.1
% PATH=/usr/local/pgsql/bin:$PATH
% ./configure --prefix=/usr/local/pgpool
% make
% make install
% ls /usr/local/pgpool/bin/pgpool
pgpool

パスの追加

~/.bashrcにパス追加


vi ~/.bashrc
PATH="$PATH":/usr/local/pgsql/bin:/usr/local/pgpool/bin

source ~/.bashrc

インストールが完了すると設定ファイルの雛形が
作成されるので、これをコピーする。


% cp /usr/local/pgpool/etc/pgpool.conf{.sample,}
% cp /usr/local/pgpool/etc/pcp.conf{.sample,}
% cp /usr/local/pgpool/etc/pool_hba.conf{.sample,}

以上の設定で、/usr/local/pgpool/etc/pgpool.confがpgpool-IIの設定ファイルになる。

PGPOOLの起動

起動するには、

※pgpoolⅡ2.5では/va/run/pgpoolというディレクトリが必要

permission:postgres:postgres

postgres postgres 4096 11月 21 16:05 pgpool


% pgpool -n &amp;c

とコマンドを入力する。

PGPOOLの停止


% pgpool -n stop

PGPOOLの自動起動

pgpoolの起動ですが、
redhat系の場合は自動起動用のスクリプトが
pgpoolのソールディレクトリの
redhat/pgpool.initにあります。
(/usr/local/src/pgpool-II-2.1/redhat/pgpool.init)

スクリプトの最初の方の変数を適宜環境に合せて書き換えて、


vi /usr/local/src/pgpool-II-2.1/redhat/pgpool.init

PGPOOLENGINE=/usr/local/pgpool/bin
PGPOOLDAEMON=$PGPOOLENGINE/pgpool
PGPOOLCONF=/usr/local/pgpool/etc/pgpool.conf
PGPOOLPID=/tmp/pgpool.pid
PGPOOLLOG=/var/log/pgpool.log

/etc/init.d/pgpoolにコピーします。


su -
cp /usr/local/src/pgpool-II-2.1/redhat/pgpool.init /etc/init.d/pgpool

これで


/etc/init.d/pgpool start

で起動できます。


su -
cp /usr/local/src/pgpool-II-2.1/redhat/pgpool.init /etc/init.d/pgpool
vi /etc/init.d/pgpool
chkconfig --add pgpool
chkconfig  pgpool on

chkconfig --list pgpool

又は

ntsysv でチェックする

PGPOOLの設定

それでは、実際にレプリケーションを行ってみる。
レプリケーションのために、pgpool.confに以下の項目を追加する。
なお、ここでの例ではPostgreSQLサーバが
localhostの5432ポートで動いているものとする。


vi /usr/local/pgpool/etc/pgpool.conf

# Host name or IP address to listen on: '*' for all, '' for no TCP/IP
# connections
listen_addresses = '*'

# Port number for pgpool
port = 5439

# Port number for pgpool communication manager
pcp_port = 9898

# レプリケーションの設定

# Replication mode
replication_mode = true

# ロードバランスの設定

# Load balancing mode, i.e., all SELECTs are load balanced.
# This is ignored if replication_mode is false.
load_balance_mode = true

#set pgpool2 hostname
pgpool2_hostname = ''

# メインDB

# system DB info
system_db_hostname = 'localhost'
system_db_port = 5432
system_db_dbname = 'pgpool'
system_db_schema = 'pgpool_catalog'
system_db_user = 'pgpool'
system_db_password = ''

# backend_hostname, backend_port, backend_weight
# here are examples

#バックエンド1

backend_hostname0 = 'バックエンドDB1'
backend_port0 = 5432
backend_weight0 = 1
#backend_data_directory0 = '/data'

#バックエンド2

backend_hostname1 = 'バックエンドDB2'
backend_port1 = 5432
backend_weight1 = 1
#backend_data_directory1 = '/data1'

※メインDBのpostgres.confのPortは5432とする

設定ファイルの編集が完了したところでpgpoolを起動し、
レプリケーションされているかどうかを確認する。

まずはpgpool-IIに接続し、データベース、テーブル、データ5件を作成する。


% createdb -p 5439 replication (5439 番ポートへ接続)
% psql -p 5439 replication
replication=# CREATE TABLE rep (a INT);
replication=# INSERT INTO rep SELECT generate_series(1, 10);

次に直接メインDBとバックエンドDBに5432ポートに接続し、実際にデータが5件作成されているかどうかを確認する。


メインDB

% for p in 5432 ; do
for&gt; echo port: $p
for&gt; psql -p $p -c 'select count(*) from rep' replication
for&gt; done
port: 5432
count
-------
5
(1 row)

バックエンドDB

port: 5432
count
-------
5
(1 row)

PGPOOLのステータス確認


psql -p 5439 replication

show pool_status;
Tagged with:
preload preload preload