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:
10月 23

PostgreSQL インストール

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

postgreSQL インストール (postgreSQL8.3.4)

事前準備

readlineをインストール

# cd /usr/local/src
# wget ftp://ftp.gnu.org/gnu/readline/readline-5.1.tar.gz
# tar zxvf readline-5.1.tar.gz
# cd readline-5.1
# ./configure
# make
# make install

readline-develをインストール


yum install readline-devel

zlibをインストール


tar zxvf zlib-1.1.4.tar.gz
cd zlib-1.1.4
make
make install

zlib-develをインストール


yum install zlib-devel

postgreSQLユーザの準備&展開

$ su -
# useradd postgres
# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql/

# cd /usr/local/src/

# mkdir postgresql-8.3.4/
# chown postgres:postgres postgresql-8.3.4

# su postgres
# tar zxvf postgresql-8.3.4.tar.gz
<h3>PostgreSQlのコンパイル&amp;インストール</h3>




cd postgresql-8.3.4

--8系--

./configure \
--prefix=/usr/local/pgsql \
--with-readline \
--with-zlib

$ make all
$ make install
PostgreSQL installation complete.

インストール後、環境変数の設定

usr/local下にpgsqlディレクトリが存在する事を確認する。

vi /home/postgres/.bashrcに太字部分 (PATH~5行)下記を追加する。
vi /home/XXXX/.bashrcに太字部分 (PATH~5行)下記を追加する。

postgresユーザーにスイッチ


su postgres

# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export EMACS_IM="canna"

if [ "$LANG" = "ja" -o "$LANG" = "ja_JP.eucJP" ]; then
export JLESSCHARSET=japanese
fi

PATH="$PATH":/usr/local/pgsql/bin
PG=/usr/local/pgsql
export PGLIB=$PG/lib
export LD_LIBRARY_PATH=$PGLIB
export PGDATA=$PG/data

環境変数の反映


source ~/.bashrc

データベースの初期化


initdb --encoding=EUC_JP --no-locale

postgresの自動起動スクリプトの準備


su root
cp /usr/local/src/postgresql-8.3.4/contrib/start-scripts/linux /etc/rc.d/init.d/pgsql
chmod 700 /etc/rc.d/init.d/pgsql
cd /etc/rc.d/rc3.d
ln -sf ../init.d.pgsql S83pgsql

/etc/rc.d/init.d/pgsql start

chkconfig --add pgsql
ntsysvでチェック

DB実体場所の変更

( ここではvarをデータ領域としている為)
☆DB実体場所の変更 var/pgsql下に実体を持たせ
/usr/local/pgsql/data/へシンボリックリンクする


su
mkdir /var/pgsql
chown postgres:root /var/pgsql/
su postgres
pg_ctl stop
mv /usr/local/pgsql/data /var/pgsql/
ln -s /var/pgsql/data /usr/local/pgsql/data

cd /usr/local/pgsql/
ls -F にて@になればOK

アクセス権限


vi /usr/local/pgsql/data/pg_hba.conf

host all all XXX.XXX.XXX.0/24 trust

postgresql.confの基本設定


vi /var/pgsql/data/postgresql.conf

#IPアクセスの許可
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
↓
#listen_addresses = '*'         # what IP address(es) to listen on;

#PORT番号
#port = 5432                            # (change requires restart)
↓
port = 5432                            # (change requires restart)

※PGPOOL入れる場合は5431にする(PGPOOLを5432とする)

(まぁ、PORT番号はその環境に合わせて..)
#バージョン差異?(7系からの移行時にこの設定でうまくいったっけ)
#escape_string_warning = on
↓
escape_string_warning = off

postgresql.logの作成及びローテーション


vi /var/pgsql/data/postgresql.conf

#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------

# - Where to Log -

#エラーをコンソールからlogにする

○#log_destination = 'stderr'             # Valid values are combinations of
○log_destination = 'syslog'              # Valid values are combinations of
# stderr, csvlog, syslog and eventlog,
# depending on platform.  csvlog
# requires logging_collector to be on.

# This is used when logging to stderr:
#logging_collector = off                # Enable capturing of stderr and csvlog
# into log files. Required to be on for
# csvlogs.
# (change requires restart)

# These are only used if logging_collector is on:
#log_directory = 'pg_log'               # directory where log files are written,
# can be absolute or relative to PGDATA
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'        # log file name pattern,
# can include strftime() escapes
#log_truncate_on_rotation = off         # If on, an existing log file of the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation, not on restarts
# or size-driven rotation.  Default is
# off, meaning append to existing files
# in all cases.
#log_rotation_age = 1d                  # Automatic rotation of logfiles will
# happen after that time.  0 to disable.
#log_rotation_size = 10MB               # Automatic rotation of logfiles will
# happen after that much log output.
# 0 to disable.

# These are relevant when logging to syslog:
○syslog_facility = 'LOCAL0'
○syslog_ident = 'postgres'

/etc/logrotate.d/syslogの編集

ログは、放っておくと膨大な量になります。
そこでログをローテーションして、古いログを消去します。

/etc/logrotate.d/syslogに追記をします。


su
vi /etc/logrotate.d/syslog

以下を追記

/var/log/postgres.log {
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2&gt; /dev/null` 2&gt; /dev/null || true
endscript
}

syslogの編集

vi /etc/syslog.conf

以下を追記

#postgres
local0.*                                                /var/log/postgres.log

syslogdとpgsqlの再起動


service syslog restart
service pgsql start
Tagged with:
10月 20

MySQLのインストール

By ststyle Database, MySQL コメントは受け付けていません。

MySQLのインストール

MySQL 管理ユーザーの作成

MySQL をユーザー権限で実行するために MySQL 実行ユーザーを作成します。

# groupadd mysql
# useradd -g mysql mysql
# passwd mysql
Changing password for user mysql.
New UNIX password: **********新しく設定するパスワードを入力
Retype new UNIX password: **********確認のためにもう一度パスワードを入力
passwd: all authentication tokens updated successfully.

MySQL のダウンロードとインストール

MySQL のインストールと実行には Ncurses が必要です。
ソースファイルを使ったインストール方法は Ncurses のインストール を参照してください。
yum を使って Ncurses をインストールする場合は以下のように実行します。

■Ncurses のダウンロードとインストール(※必要に応じて)

※MySQL のインストールと実行には Ncurses が必要です


# yum -y install ncurses-devel

または

Ncurses のソースファイルを GNU Ncurses からダウンロードしてコンパイル、インストールを行います。


# wget -P /usr/local/src http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.5.tar.gz
# cd /usr/local/src
# tar xzf ncurses-5.5.tar.gz
# cd ncurses-5.5
# ./configure --prefix=/usr/local --without-cxx-binding
# make
# make install

Mysqlの取得

MySQL のソースファイルを MySQL 公式サイト から
ダウンロードしてコンパイル、インストールを行います。


# wget -P /usr/local/src ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz
# cd /usr/local/src
# tar zxvf mysql-5.0.67.tar.gz
# cd mysql-5.0.67

■Makefileの作成 & コンパイル & インストール

cd mysql-5.0.67
./configure \
--with-charset=ujis \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--prefix=/var/lib/mysql \
--enable-local-infile \
--with-extra-charsets=all \
--with-innodb \
--with-low-memory \
--with-unix-socket-path=/tmp/mysql.sock

必要に応じてyum install gcc-c++


# make
# make install

■MySQL のディレクトリを /usr/local/mysql として
アクセスできるようにシンボリックリンクを作成します。

prefixにてvarにインストールしている為に行います。


# ln -sfn /var/lib/mysql /usr/local/mysql

MySQL 5.0 の設定

MySQL の権限テーブルを作成します。
この作業は mysql_install_db コマンドを使って行います。
また MySQL の設定ファイルを作成して MySQL のデータディレクトリの所有者を設定します。

MySQL 権限テーブルの生成

mysql_install_db スクリプトは MySQL の全ての権限を管理する
mysql データーベースと MySQL のテストに使用できるデーターベースを作成します。
この作業は MySQL をインストールした後に一度だけ行います。


# /usr/local/mysql/bin/mysql_install_db --user=mysql

下記が表示される
—————————————————-
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/var/lib/mysql/bin/mysqladmin -u root password ‘new-password’
/var/lib/mysql/bin/mysqladmin -u root -h hogehoge.net password ‘new-password’

Alternatively you can run:
/var/lib/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /var/lib/mysql ; /var/lib/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /var/lib/mysql/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
—————————————————-

MySQL の設定

MySQL の設定ファイルの雛形がインストールディレクトリ(share/mysql)に存在します。
このファイルをデータディレクトリ(/usr/local/mysql/var)にコピーして MySQL の設定ファイルを作成します。


# cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql/var/my.cnf

ディレクトリの所有者の変更

MySQL のバイナリの所有者を root に変更し、データディレクトリの所有者を MySQL 実行ユーザーに変更します。


# chown -R mysql /var/lib/mysql
# chgrp -R mysql /var/lib/mysql

MySQL 5.0 の起動

インストールした MySQL を起動して動作の確認を行います。
また MySQL の自動起動スクリプトを作成して OS 起動時に自動的に MySQL を起動するように設定します。

■MySQL の起動と終了

mysqld_safe を使って MySQL を起動することによって、
エラー発生時にサーバーを再起動したり、ランタイム情報をログファイルに記録するなどのセーフティー機能が加わります。
mysqld_safe を使った起動方法は mysqld デーモンを Unix 系 OS で起動する場合に推奨される方法です。


# /usr/local/mysql/bin/mysqld_safe --user=mysql &amp;

■稼動確認

mysqladmin を使ってサーバーの稼動を確認することができます。


# /usr/local/mysql/bin/mysqladmin version

usr/local/mysql/bin/mysqladmin  Ver 8.41 Distrib 5.0.67, for redhat-linux-gnu on i686
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.67-log
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /tmp/mysql.sock
Uptime:                 50 sec

Threads: 1  Questions: 1  Slow queries: 0  Opens: 12  Flush tables: 1  Open tables: 6  Queries per second avg: 0.020

MySQL を停止する

■MySQL を停止する場合は以下のように実行します。


# /usr/local/mysql/bin/mysqladmin -u root shutdown

MySQL の自動起動スクリプト

MySQL の自動起動スクリプトを使うことで、サーバーマシンが起動するときに自動的に MySQL を起動させることができます。
MySQL の自動起動スクリプトは MySQL のインストールディレクトリ(share/mysql)に含まれています。
これを /etc/rc.d/init.d/mysql ファイルとしてコピーします。


# install -o root -g root -m 755 /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql

■コピーした自動起動スクリプトの自動起動設定を行います。


# chkconfig --add mysql

■サービスを起動する場合は以下のように実行します。


# /etc/rc.d/init.d/mysql start

■管理ユーザーのパスワードの設定

MySQL をインストールした直後は MySQL の管理ユーザーである root のパスワードが設定されていないのでパスワードを設定します。
MySQL の root ユーザーと Linux のシステム管理ユーザーである root ユーザーは異なります。


# /usr/local/mysql/bin/mysqladmin -u root password '**********'




<h3>Mysqlへ接続</h3>




# /usr/local/mysql/bin/mysql -u root

Enter password:パスワード

PATHを通す

パスを通します


vi ~/.bashrc

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions

export PATH="/usr/local/mysql/bin/:$PATH"

source ~/.bashrc
Tagged with:
preload preload preload