|
クラスタDBは,システム内で以下の図のような設定項目を持っています.クラスタDBの設定項目について,サンプルに基づいて説明します.
まず,データベースを初期化します.
"$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"を付けてください.
各サーバの設定方法は以下の通りです.
レプリケーションサーバとクラスタサーバはネットワークで接続されますので,ネットワークによる接続を許可しておきます.
pg_hba.confでのネットワーク接続許可の設定
------------------------------------------------------------
# TYPE DATABASE IP_ADDRESS MASK AUTH_TYPE AUTH_ARGUMENT
local all all trust
host all all 127.0.0. 255.255.255.255 trust
host all all 192.168.0.0 255.255.255.0 trust
#<--ここを追加
|
$PGDATA/postgresql.confの設定
|
接続を受け付けるポートや最大接続数等を設定します.マシン環境やデータベースの規模に応じて設定内容を調整してください.
| # - Connection Settings -
tcpip_socket = true
max_connections = 100
# note: increasing max_connections costs about 500 bytes of shared
# memory per connection slot, in addition to costs from shared_buffers
# and max_locks_per_transaction.
#superuser_reserved_connections = 2
port = 5432
|
この設定ファイルは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> replicate_upper </Host_Name>
#------------ レプリケーション要求の接続ポート番号
<Port> 8001 </Port>
#------------ リカバリ要求の接続ポート番号
<Recovery_Port> 8101 </Recovery_Port>
#------------ ライフチェックの接続ポート番号
<LifeCheck_Port> 8201 </LifeCheck_Port>
</Replicate_Server_Info>
#
# レプリケーションサーバの設定は複数記述できます.
#
<Replicate_Server_Info>
#------------ ホスト名
<Host_Name> replicate_lower </Host_Name>
#------------ レプリケーション要求の接続ポート番号
<Port> 8001 </Port>
#------------ リカバリ要求の接続ポート番号
<Recovery_Port> 8101 </Recovery_Port>
#------------ ライフチェックの接続ポート番号
<LifeCheck_Port> 8201 </LifeCheck_Port>
</Replicate_Server_Info>
#
#--------------------------------------------------------------------
# クラスタサーバ固有の設定を記述します.
#--------------------------------------------------------------------
#--- リカバリ時にマスタDBになった場合,受け付けるポート番号
<Recovery_Port> 7101 </Recovery_Port>
#------------ ライフチェックの接続ポート番号
<LifeCheck_Port> 7201 </LifeCheck_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>
#--- 接続先のレプリケーションサーバの状態を記録するログファイルのパス
<Status_Log_File> /tmp/1/cluster.sts
</Status_Log_File>
#--- クラスタDBのデバッグ文などを記録するログファイルのパス
<Error_Log_File> /tmp/1/cluster.log
</Error_Log_File>
#--------------------------------------------------------------------
# レプリケーションしないDB+テーブルを指定します.(部分レプリケーション機能)
#--------------------------------------------------------------------
<Not_Replicate_Info>
#------------ DB名
<DB_Name> Local_DB </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>
リカバリ要求を送信時に接続するレプリケーションサーバのポート番号を設定します.
・<LifeCheck_Port>〜</LifeCheck_Port>
他サーバからのライフチェックを受信するポート番号を設定します.
(2)クラスタサーバ固有のデータ設定
・<Recovery_Port>〜</Recovery_Port>
クラスタサーバがマスタDBになった場合,データ復旧の要求をレプリケーションサーバから受け付けるポート番号を設定します. ・<LifeCheck_Port>〜</LifeCheck_Port>
他サーバからのライフチェックを受信するポート番号を設定します.
・<Rsync_Path>〜</Rsync_Path>
データ復旧の際使用するrsyncコマンドのパスを設定します.rsyncの設定方法についてはこちらを参照してください.
・<Rsync_Option>〜</Rsync_Option>
データ復旧の際使用するrsyncコマンドのオプションを設定します.rsyncの設定方法についてはこちらを参照してください.
・<When_Stand_Alone> 〜 </When_Stand_Alone>
レプリケーションサーバが全て停止してクラスタDBサーバがスタンドアロン状態になった場合の動作モードを指定します. 検索系のクエリーのみを受け付ける場合は,"read_only",更新系のクエリーも受け付ける場合は"read_write"と設定します.
・<Status_Log_File> 〜 </Status_Log_File>
接続先のレプリケーションサーバの状態等を記録するログファイル名を設定します.
・<Error_Log_File> 〜 </Error_Log_File>
デバッグ文やエラー文を記録するログファイル名を設定します.
(3)部分レプリケーションの設定
レプリケーションをしないDBとテーブルの組み合わせを設定します.
<Not_Replicate_Info> 〜 </Not_Replicate_Info>
部分レプリケーションの設定を宣言します.設定終了タグまでの間にレプリケーションしないクエリーの設定値(DB名,テーブル名)を記述します. 部分レプリケーションの情報は複数設定しておくことができます.
・<DB_Name>〜</DB_Name>
レプリケーションをしないDB名の設定します.
・<Table_Name>〜</Table_Name>
レプリケーションをしないテーブル名の設定します.
|