>> ホーム
 
>> 特徴
 
>> システム構成例
 
>> ダウンロード
 
>> インストール
 
設定
 
>> RSYNCの設定
 
>> 起動・停止
 
>> DBの復旧・追加
 
>> 今後の予定
 
 

設定方法


(1)データベースの初期化

"$PGDATA"の環境変数を設定しておけば,そのディレクトリにデータディレクトリが作成され,設定ファイルがコピーされます.

データベースの初期化
-------------------------------------------------
# su -l postgres
$ cd /usr/local/pgsql
$ bin/initdb -D /usr/local/pgsql/data -E EUC_JP --no-locale

この例ではデータディレクトリをパラメータで"/usr/local/pgsql/data"に指定しています.ここで重要なことは,このコマンドを実行するユーザがデータベースの管理者ユーザになることです."root"でデータベースを初期化してはいけません.また,"/usr/local/pgsql/"のディレクトリも,管理者ユーザの持ち物にしておく必要があります.また,データベースで日本語を扱う場合,"-E EUC_JP --no-locale"を付けてください.
各サーバの設定方法は以下の通りです.

(2)クラスターサーバーの設定

PostgreSQLの設定とほぼ同じです.忘れ勝ちなのですが,ネットワークによるバックエンドの接続を許可する設定にしておくことが必要です.

$PGDATA/pg_hba.confの設定

レプリケーションサーバとクラスタサーバはネットワークで接続されますので,ネットワークによる接続を許可しておきます.
pg_hba.confでのネットワーク接続許可の設定
------------------------------------------------------------
# TYPE DATABASE IP_ADDRESS MASK AUTH_TYPE AUTH_ARGUMENT

local  all  trust
host  all  127.0.0.    255.255.255.255  trust
host  all  192.168.5.0  255.255.255.0   trust #<--ここを追加


これは"192.168.5.0/24"のネットワークからの接続を許可する例です.

$PGDATA/cluster.confの設定

この設定ファイルはpgreplicate固有の設定ファイルです.クラスタサーバの設定用に使います.

#=============================================
# cluster.conf
#---------------------------------------------
# このファイルはテーブル状に複数の値を設定する書き方と,
# 設定値を1つずつ設定する書き方の2種類の書き方ができます.
#
# <Table_Name_Tag>
#  <Data_Name_Tag1> value1 </Data_Name_Tag1>
#   <Data_Name_Tag2> value2 </Data_Name_Tag2>
#  <Data_Name_Tag3> value3 </Data_Name_Tag3>
# </Table_Name_Tag>
# or
# <Data_Name_Tag> value </Data_Name_Tag>
#
# "#"以降はコメントとして解釈されます.
#=============================================
#--------------------------------------------------------------------
# レプリケーションサーバの設定を記述します
#--------------------------------------------------------------------
<Replicate_Server_Info>
#------------ ホスト名
  <Host_Name> replicate1.postgres.jp   </Host_Name>
#------------ レプリケーション要求の接続ポート番号
  <Port>        8777          </Port>
#------------ リカバリ要求の接続ポート番号
  <Recovery_Port>  7778          </Recovery_Port>
</Replicate_Server_Info>
#
# レプリケーションサーバの設定は複数記述できます.
#
#<Replicate_Server_Info>
#  <Host_Name> replicate2.postgres.jp </Host_Name>
#  <Port> 8777 </Port>
#  <Recovery_Port> 7778 </Recovery_Port>
#</Replicate_Server_Info>
#<Replicate_Server_Info>
#  <Host_Name> replicate3.postgres.jp </Host_Name>
#  <Port> 8777 </Port>
#  <Recovery_Port> 7778 </Recovery_Port>
#</Replicate_Server_Info>
#
#--------------------------------------------------------------------
# クラスタサーバ固有の設定を記述します.
#--------------------------------------------------------------------
#--- リカバリ時にマスタDBになった場合,受け付けるポート番号
<Recovery_Port>   7779 </Recovery_Port>
#--- リカバリ時に使用するrsyncのパス
<Rsync_Path>    /usr/bin/rsync </Rsync_Path>
#--- リカバリ時に使用するrsyncのsshオプション
<Rsync_Option>    ssh -1 </Rsync_Option>
#--- レプリケーションサーバが全て停止し,スタンドアロンになってしまった場合の
#--- 動作モードの指定
#--- read_only : 検索のみ許可(デフォルト)
#--- read_write : データ更新も許可
<When_Stand_Alone>  read_only </When_Stand_Alone>
#--------------------------------------------------------------------
# レプリケーションしないDB+テーブルを指定します.(部分レプリケーション機能)
#--------------------------------------------------------------------
<Not_Replicate_Info>
#------------ DB名
  <DB_Name>   test    </DB_Name>
#------------ テーブル名
  <Table_Name> log_table </Table_Name>
</Not_Replicate_Info>


この設定ファイルでは以下のタグによって値を設定します.

(1)レプリケーションサーバに関する設定
・<Replicate_Server_Info>〜</Replicate_Server_Info>
 レプリケーションサーバの設定を宣言します.設定終了タグまでの間にレプリケーションサーバの設定値(ホスト名,レプリケーション用のポート番号,リカバリ用のポート番号)を記述します.レプリケーションサーバの情報は複数設定しておくことができます.
・<Host_Name>〜</Host_Name>
 レプリケーションサーバのホスト名の設定します.DNSまたは"/etc/hosts"で名前解決が可能なホスト名を設定します.IPアドレスを記述しないでください.
・<Port>〜</Port>
 レプリケーション要求を送信時に接続するレプリケーションサーバのポート番号を設定します.
・<Recovery_Port>〜</Recovery_Port>
 リカバリ要求を送信時に接続するレプリケーションサーバのポート番号を設定します.

(2)クラスタサーバ固有のデータ設定
・<Recovery_Port>〜</Recovery_Port>
 クラスタサーバがマスタDBになった場合,データ復旧の要求をレプリケーションサーバから受け付けるポート番号を設定します.
・<Rsync_Path>〜</Rsync_Path>
 データ復旧の際使用するrsyncコマンドのパスを設定します.rsyncの設定方法についてはこちらを参照してください
・<Rsync_Option>〜</Rsync_Option>
 データ復旧の際使用するrsyncコマンドのオプションを設定します.rsyncの設定方法についてはこちらを参照してください
・<When_Stand_Alone> 〜 </When_Stand_Alone>
レプリケーションサーバが全て停止してクラスタDBサーバがスタンドアロン状態になった場合の動作モードを指定します. 検索系のクエリーのみを受け付ける場合は,"read_only",更新系のクエリーも受け付ける場合は"read_write"と設定します.

(3)部分レプリケーションの設定
レプリケーションをしないDBとテーブルの組み合わせを設定します.
<Not_Replicate_Info> 〜 </Not_Replicate_Info>
部分レプリケーションの設定を宣言します.設定終了タグまでの間にレプリケーションしないクエリーの設定値(DB名,テーブル名)を記述します. 部分レプリケーションの情報は複数設定しておくことができます.
・<DB_Name>〜</DB_Name>
 レプリケーションをしないDB名の設定します.
・<Table_Name>〜</Table_Name>
 レプリケーションをしないテーブル名の設定します.

 

(3) レプリケーションサーバーの設定

インストール・ディレクトリの下の"etc"ディレクトリの下(デフォルトでは"/usr/local/pgsql/etc")に"pgreplicate.conf.sample"というサンプルファイルがあります.このファイルをコピーして"pgreplicate.conf"というファイルを作成してください.pgreplicateを起動する際に,この設定ファイルのパスを指定できますので,設定ファイルの置き場所はどこでも構いません(pgreplicate起動時にパスを指定しない場合,環境変数$PGDATA,次にカレントディレクトリを探します).

pgreplicate.conf

#=============================================
# pgreplicate.conf
#---------------------------------------------
# このファイルはテーブル状に複数の値を設定する書き方と,
# 設定値を1つずつ設定する書き方の2種類の書き方ができます.
#
# <Table_Name_Tag>
#  <Data_Name_Tag1> value1 </Data_Name_Tag1>
#  <Data_Name_Tag2> value2 </Data_Name_Tag2>
#  <Data_Name_Tag3> value3 </Data_Name_Tag3>
# </Table_Name_Tag>
# or
# <Data_Name_Tag> value </Data_Name_Tag>
#
# "#"以降はコメントとして解釈されます.
#=============================================
#--------------------------------------------------------------------
# クラスタサーバの設定を記述します.
#--------------------------------------------------------------------
# 最初に記述したクラスタサーバがマスタDBになります.
<Cluster_Server_Info>
#----- ホスト名
  <Host_Name>   master.postgres.jp </Host_Name>
#----- postmasterのポート番号
  <Port>       5432         </Port>
#----- マスタDBのデータ復旧受付ポート番号
  <Recovery_Port> 7779         </Recovery_Port>
</Cluster_Server_Info>
#
# 以下クラスタサーバの記述を続けます.
#
<Cluster_Server_Info>
  <Host_Name>    cluster1.postgres.jp </Host_Name>
  <Port>        5432          </Port>
  <Recovery_Port> 7779          </Recovery_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
  <Host_Name>   cluster2.postgres.jp </Host_Name>
  <Port>        5432          </Port>
  <Recovery_Port> 7779          </Recovery_Port>
</Cluster_Server_Info
>
#<Cluster_Server_Info>
# <Host_Name> cluster3.postgres.jp </Host_Name>
# <Port> 5432 </Port>
# <Recovery_Port> 7779 </Recovery_Port>
#</Cluster_Server_Info>
#--------------------------------------------------------------------
# ロードバランサの設定を記述します.
#--------------------------------------------------------------------
<LoadBalance_Server_Info>
#----------- ホスト名
  <Host_Name> gateway1.postgres.jp </Host_Name>
#----------- リカバリ時の接続ポート番号
  <Recovery_Port> 7778 </Recovery_Port>
</LoadBalance_Server_Info>
#
# ロードバランサの設定は複数記述できます.
#
#<LoadBalance_Server_Info>
#   <Host_Name> gateway1.postgres.jp </Host_Name>
#   <Recovery_Port> 7778 </Recovery_Port>
#</LoadBalance_Server_Info>
#
#--------------------------------------------------------------------
# レプリケーションサーバ固有の設定を記述します.
#--------------------------------------------------------------------
<Replication_Port> 8777 </Replication_Port>
<Recovery_Port> 7778 </Recovery_Port>
<Response_Mode> normal </Response_Mode>

(1)クラスタサーバに関する設定

<Cluster_Server_Info>〜</Cluster_Server_Info>
 クラスタサーバの設定を宣言します.設定終了タグまでの間にクラスタサーバの設定値(ホスト名,postmaster用のポート番号,リカバリ用のポート番号)を記述します.クラスタサーバの情報は複数設定しておくことができます.最初に記述したクラスタサーバをマスタDBとして扱いますが,固定ではありません.最初のマスタDBに異常が発生した場合,その次に記述したクラスタサーバをマスタDBとして扱います.
<Host_Name>〜</Host_Name>
 クラスタサーバのホスト名の設定します.DNSまたは"/etc/hosts"で名前解決が可能なホスト名を設定します.IPアドレスを記述しないでください.
<Port>〜</Port>
 複製したクエリーを送信時に接続するクラスタサーバ(postmaster)のポート番号を設定します.
<Recovery_Port>〜</Recovery_Port>
 データ復旧時に接続するマスタDBのポート番号を設定します.

(2)ロードバランサに関する設定
<LoadBalance_Server_Info>〜</LoadBalance_Server_Info>
 ロードバランサの設定を宣言します.設定終了タグまでの間にロードバランサの設定値(ホスト名,リカバリ用のポート番号)を記述します.ロードバランサの情報は複数設定しておくことができます.
<Host_Name>〜</Host_Name>
 ロードバランサのホスト名の設定します.クラスタサーバの設定時と同様,DNSまたは"/etc/hosts"で名前解決が可能なホスト名を設定します.IPアドレスを記述しないでください.
<Recovery_Port>〜</Recovery_Port>
 クラスタサーバの異常・復旧時にステータスを送信する際,接続するロードバランサのポート番号を設定します.

(3)レプリケーションサーバ固有の設定
<Replication_Port>〜</Replication_Port>
 クラスタサーバからのレプリケーション要求を受け付けるポート番号を設定します.
<Recovery_Port>〜</Recovery_Port>
 クラスタサーバからのリカバリ要求を受け付けるポート番号を設定します.
<Response_Mode>〜</Response_Mode>
クラスタサーバへ応答を返すタイミングを指定します.
'normal'はクエリーを受け付けたクラスタサーバの処理が終了したタイミングで応答を返します.
'reliable' は全てのクラスタサーバの処理が終了するのを待ってから応答を返します.

4.4 ロードバランサの設定

インストールディレクトリの下の"etc"ディレクトリの下(デフォルトでは"/usr/local/pgsql/etc")に"pglb.conf.sample"というサンプルファイルがあります.このファイルをコピーして"pglb.conf"というファイルを作成してください.pglbを起動する際に,この設定ファイルのパスを指定できますので,設定ファイルの置き場所はどこでも構いません(pglb起動時にパスを指定しない場合,環境変数$PGDATA,次にカレントディレクトリを探します).

4.4.1 pglb.conf

#=============================================
# pglb.conf
#---------------------------------------------
# このファイルはテーブル状に複数の値を設定する書き方と,
# 設定値を1つずつ設定する書き方の2種類の書き方ができます.
#
# <Table_Name_Tag>
#  <Data_Name_Tag1> value1 </Data_Name_Tag1>
#  <Data_Name_Tag2> value2 </Data_Name_Tag2>
#  <Data_Name_Tag3> value3 </Data_Name_Tag3>
# </Table_Name_Tag>
# or
# <Data_Name_Tag> value </Data_Name_Tag>
#
# "#"以降はコメントとして解釈されます.
#=============================================
#--------------------------------------------------------------------
# クラスタサーバの設定を記述します.
#--------------------------------------------------------------------
<Cluster_Server_Info>
#----- ホスト名
<Host_Name> master.postgres.jp </Host_Name>
#----- postmasterのポート番号
<Port>      5432 </Port>
#----- 最大接続数(max_connections - cluster num)
<Max_Connect> 32 </Max_Connect>
</Cluster_Server_Info>
#
# 以下クラスタサーバの記述を続けます.
#
<Cluster_Server_Info>
  <Host_Name>  cluster1.postgres.jp </Host_Name>
  <Port>       5432           </Port>
  <Max_Connect> 128           </Max_Connect>
</Cluster_Server_Info>
<Cluster_Server_Info>
  <Host_Name>   cluster2.postgres.jp </Host_Name>
  <Port>       5432           </Port>
  <Max_Connect> 64           </Max_Connect>
</Cluster_Server_Info>

#<Cluster_Server_Info>
# <Host_Name> cluster3.postgres.jp </Host_Name>
# <Port> 5432 </Port>
# <Max_Connect> 32 </Max_Connect>
#</Cluster_Server_Info>
#--------------------------------------------------------------------
# ロードバランサ固有の設定を記述します.
#--------------------------------------------------------------------
<Receive_Port>      5432  </Receive_Port>
<Recovery_Port>     7779  </Recovery_Port>
<Max_Cluster_Num>    128  </Max_Cluster_Num>
<Use_Connection_Pool> yes  </Use_Connection_Pool>

(1)クラスタサーバに関する設定
・<Cluster_Server_Info>〜</Cluster_Server_Info>
 クラスタサーバの設定を宣言します.設定終了タグまでの間にクラスタサーバの設定値(ホスト名,postmaster用のポート番号,最大接続数)を記述します.クラスタサーバの情報は複数設定しておくことができます.
・<Host_Name>〜</Host_Name>
 クラスタサーバのホスト名の設定します.DNSまたは"/etc/hosts"で名前解決が可能なホスト名を設定します.IPアドレスを記述しないでください.
・<Port>〜</Port>
 クエリーを送信時に接続するクラスタサーバ(postmaster)のポート番号を設定します.
・<Max_Connect>〜</Max_Connect>
 クラスタサーバに接続するセッションの最大数を設定します.クラスタサーバの"max_connections"の設定値以下にしてください.クラスタサーバはロードバランサだけでなく,レプリケーションサーバとも接続しますので,実際に接続できる数は,ここで設定した最大値よりも少なくなります.(クラスタサーバの"max_connections"の設定値)-(クラスタサーバ数)が接続できる最大値になります.

(2)ロードバランサ固有の設定
・<Receive_Port>〜</Receive_Port>
 クライアントからクエリーを受け付けるポート番号を設定します.
・<Recovery_Port>〜</Recovery_Port>
 レプリケーションサーバからのリカバリ要求を受け付けるポート番号を設定します.
・<Max_Cluster_Num>〜</Max_Cluster_Num>
 登録できるクラスタDBの最大値を設定します.
・<Use_Connection_Pool>〜</Use_Connection_Pool>
 クラスタサーバとの接続にコネクション・プーリング機能を使うかどうかを指定します.'yes'または'no'で記述してください.