[pgpool-general-jp: 793] recovery

ポンパー revivex36 @ gmail.com
2010年 8月 31日 (火) 13:50:54 JST


有り難うございます。

LOGの件参考になります。

プロセスの件ですが、これは言われる通り num_init_children の設定です。

また、リカバリーの件ですがARCHIVELOGを使用する事はPGPOOLのマニュアルでも紹介されていたと思います。
参考にしたサイトは、http://www.interdb.jp/techinfo/web+db48/pgpool.html です。

これらの参考資料ではPOSTGRESQLに設定して置くように書かれてあります。

ただ、復帰を行うときにPGPOOLを含めてバックエンドの停止も考えているので必要ないと
思います。AUTOVACUMもマスターを停止してしまう事で問題がなくなるような気がしますが
少々曖昧です。




---------- 転送メッセージ ----------
From: Tomoaki Sato <sato @ sraoss.co.jp>
日付: 2010年8月30日10:54
件名: Re: [pgpool-general-jp: 790] pgpool_node_info
To: revivex36 @ gmail.com
Cc: sato @ sraoss.co.jp


佐藤です。

From: ポンパー <revivex36 @ gmail.com>
Date: Sun, 29 Aug 2010 10:25:39 -0700

> 大変お騒がせしました。
> ポートの設定に誤りがありました。DEFAULTの9898で上手く表示してくれます。
> すみません。馬鹿なミスでした。

石井さんが指摘していましたが、私も見逃してしまっていました。

> ついで で申し訳ありませんが、別件の質問があります。
>
> 1、PGPOOLのログを出させています。このファイルが大きくなるのでローテ
> イトするのは自前でスクリプトの作成が必要ですか?/tmp/pgpool.log です。

スクリプトの作成は必要ないですが、pgpool-II 自体にはログを切り出す仕組
みがなので外部のプログラムを利用する必要があります。

例えば、Syslog で pgpool-II のログを取得するなら、以下のように -n オプ
ションを指定して pgpool-II を起動し、出力結果をパイプで logger コマン
ドに渡します。

 pgpool -n 2>&1 | logger -t pgpool -p local0.info &

その他には、Apache HTTP Server に付属する rotatelogs コマンドなどを使
用する方法もありますね。

 pgpool -n 2>&1 | /usr/sbin/rotatelogs /tmp/pgpool.log 86400 &

上記の例では 86400 秒 = 1 日ごとに新しいファイルを切り出します。

> 2、PGPOOLの常駐のプロセスの設定で、PGPOOLを使っていないPOSTGRESQLが
> 1台の時には、同時アクセスが800近いプロセスを立ち上げる事があるほ
> ど忙しいサーバーでした。PGPOOLとバックエンド3台、プラスMEMCACHEを併
> 用する事でPGPOOLの使用するプロセスが60~70程度に収まっています。
> この様な状況では現状の100以下の設定いいものでしょうか?現在は
> 512に設定してあり、128まで落とそうかと考えています。

「100 以下の設定」といっているのは num_init_children のことですかね。

> また、WEIGHTの設定で3台のバックエンドのDBに1対2対2の割合(現在マ
> スターが1です。)で比率を掛けているのですが各DBのプロセスの立ち上が
> り方が全て同じになっています。これは設定に誤りがあるのでしょうか?

backend_weight は振り分けの割合を指定するものなので、postgres プロセス
の数とは関係ないと思います。

差し支えがなければ個人宛てではなく ML 宛てに適切な回答が返ってくるかも
しれません。

> 現在のプロセスの個数は、
>
> PGPOOLが60~70
> DB0~2が全て50~60です。何か変な感じですがこの様なものですか?
>
> 3、オンラインRECOVERYですが、2、のようにかなり忙しいサーバーなので
> ARCHIVE_LOGを使用して行うと、リカバリー先へのRSYNC転送にかなり時間が
> かかります。また、AUTOVACUMをマスターになるDBについては停止する必要も
> あり現在はマニュアルで行うことが解決策になっています。自分としてはこ
> の機能を使いたいのですが、例えばAUTOVACUMについても、これを変更し直し
> てPOSTGRESを立ち上げ直す事もPG_CTLがPOSTGRESQL.CONFだけ再読み込みして
> くれないので難題になっています。問題点は、
>
> ア)PGPOOLが停止するときに、接続中のプロセスが落ちるまで待ってしまう。
> (24時間、アクセスされっぱなしです。)

pgpool stop で pgpool-II を停止する際に -m f (接続中のクライアントが切
断するのを待たずに停止) を指定すればいいという話ではないですよね。

> イ)AUTOVACUMの停止方法。
> ウ)ARCHIVEログの容量がGBクラスまで膨れ上がって転送時間が掛かりすぎ
> る。
>
> 等が大きな問題点です。仕方が無いのでRECOVERY中はサービスを停止し、
> DOWNTIMEは目をつぶって
>
> PGPOOLの強制終了 -> マスターのDBの強制終了 -> リカバリー先のDBへマス
> ターからRSYNC -> リカバリー先とマスターDBおよびPGPOOLの再起動。
>
> といった単純な流れで行う事を考えています。もし氏の方で何か他の方法で
> RECOVERYを実現できる参考資料があれば教えていただきたくよろしくお願い
> します。

ちょっと気になったのですが、オンラインリカバリ時に転送する大量のアーカ
イブログはすべてリカバリに必要なものでしょうか。

ご存じかもしれませんが、オンラインリカバリは 2 つのステージに処理が分
かれており、1st ステージでベースバックアップの取得と転送、2nd ステージ
で 1st ステージの実行中に発生したトランザクションログ (アーカイブログ)
の転送が行われます。

1st ステージの実行時間とその間の更新量に依存しますが、リカバリに必要な
アーカイブログの量が数 GB に昇るとは考えにくいです。

というか、具体的にどういった手順でオンラインリカバリを行っていますか。
参考にした URL などがあれば教えてください。

アーカイブログは自動的には削除されないので、データベースクラスタ以下に
アーカイブログを保存していたりすると、ベースバックアップの転送時に不要
なデータの転送に時間がかかっていたりするのではないかと思いました。

> すみません。長々と質問しました。
>
> 2010年8月29日9:25 ポンパー <revivex36 @ gmail.com>:
>
>> 早々ご返答いただき有り難うございます。
>>
>> このサーバーには実際にPGPOOLADMINを導入してあり
>> PCP.CONFは存在しています。これとは別にPGPOOLのクラスター
>> を立ち上げており、SECURITYの理由でWEBでのマネージができま
>> せん。ここにスクリプトを導入したいのですが、実際にコマンドを実行した
>> のは前者のPGPOOLの方で、言われるようにPGPOOLの管理画面にLOGINするユー
>> ザー名とパスワードを試しています。しかし、やはりEOFERRORが出る事は変
 >> わりません。
>>
>> すみません。何か他に原因があるでしょうか?
>>
>> 2010年8月28日18:59 Tomoaki Sato <sato @ sraoss.co.jp>:
>>
>>> 佐藤です。
>>>
>>> > お世話になります。
>>> >
>>> > PGPOOLのユーザーです。 PGPOOLADMINを使用せずに各
>>> > バックエンドのDBサーバーの接続状況を定期的に検査するスクリプト
>>> > を書く必要があるのですが、
>>> >
>>> > pgpool_node_info 10 localhost 5432 user passwd 0
>>> >
>>> > というコマンドを実行していますが、EOFERRORになります。
>>> > 質問なのですが、
>>>
>>> EOFError が発生するのは pcp.conf が存在していないことが原因だと考えら
>>> れます。
>>>
>>> > 実際にユーザー名は設定されていても、パスワードを設定していない場
>>> > 合にはこおコマンドのオプションフラッグをどのようにすればよろしい
>>> > ですか? 例えば、
>>> >
>>> >  pgpool_node_info 10 localhost 5432 user 0
>>> >
>>> > ブランだと駄目ですから、何かパスワードを設定しておかないとなりま
>>> > せんか?
>>>
>>> ソースコードを確認したわけではありませんが、パスワードの設定は必須だっ
>>> たと思います。
>>>
>>> > また、ユーザーは特にPOSTGRESQLに設定されている者であれ
>>> > ば誰でもいいのですか?
>>>
>>> PCP コマンド (pcp_*) では、PostgreSQL 上のユーザとは関係なく、pcp.conf
>>> というファイルでユーザ認証を行っています。
>>>
>>> マニュアルの pcp.conf の設定を読んで正しく設定できているかを確認してみ
>>> てください。
>>>
>>>
http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-ja.html#config


----
佐藤 友章 <sato @ sraoss.co.jp>
SRA OSS, Inc. 日本支社
PostgreSQL トレーニング: http://www.sraoss.co.jp/prod_serv/training/
PowerGres ファミリー: http://powergres.sraoss.co.jp/
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://www.sraoss.jp/pipermail/pgpool-general-jp/attachments/20100830/f0c47b94/attachment-0001.html 


pgpool-general-jp メーリングリストの案内