おじょろじょの、「河童の話は聞かないで。」

プログラムに関しての覚え書きや、仕事のぼやきなど。。

PostgreSQLのpgAdminⅢでpgAgentを使って定期バックアップもMEMO。。なんだかなぁ

windows環境でPostgreSQLを動かしているので

GUIで簡単なジョブスケジューリングツール「pgAgent」なるものを

pgAdminⅢにいれてみる。

インストールは簡単、Application Stack Builderを使えばすぐできますので。

気になるのが、 pgAgentのインストール時にオペレーションユーザーを設定する個所がでてくるけど、これpgAgentはwindows環境だとサービスとして起動するので、ログインユーザーを指定するようだ。但しパスワードなど変更になったらサービスのほうも変えなきゃなんだろうな。。なんだかややこしい。

pgAdminⅢのサーバー配下に「ジョブ」が現れる

「スケジュール」に細かいスケジュールを設定。

「手段」にはSQL・バッチかを設定し、定義のところにSQL文やバッチ文を記述。

 

バックアップなので、PostgreSQLのバックアップ・ユーティリティの、

pg_dump と pg_dumpall を使ったバッチ構文を作る。

pg_dump.exe  データベース単位のバックアップ
・pg_dumpall.exe PostgreSQLの全てのデータベースをバックアップ
psql.exe    リストア

試しにコマンドプロンプトから実行してみる。

pg_dump】(データベース名dbtestをバックアップ)

C:\PostgreSQL\9.3\bin\pg_dump.exe -h localhost -p 5432 -U postgres -F plain -v -f C:\postgres_dbtest_backup.sql db 2> C:\postgres_dbtest_backup.log

pg_dump.exeの場所は環境によって変更、dbはデータベース名)

postgres_db_backup.sqlファイルとpostgres_db_backup.logログファイルが

Cドライブ直下に出来ましたかね。

場合によってはパスワードの要求があるので、postgresのpgpass.confファイルに登録しておく。

場所:C:\Users\ユーザー名\AppData\Roaming\postgresql

書式:hostname : port : database : username : password

 

【pg_dumpall】(データベースを全てバックアップ)

C:\PostgreSQL\9.3\bin\pg_dumpall.exe -h localhost -p 5432 -U postgres -v -f C:\postgres_all_backup.sql 2> C:\postgres_all_backup.log

 

psql.exe】(データベース名dbをリストア)

C:\PostgreSQL\9.3\bin\psql.exe -h localhost -p 5432 -U postgres -f C:\postgres_test_backup.sql

 

そうそう知ってると思うけど、パスに半角スペースが入ってたら、ダブルコーテーションで ”囲って” 。
(インストールディレクトリがC:\Program Filesになってたりすると、よくつまづくのですよ。)

 

これが動けば、あとは先ほどの「手段」の定義にこのバッチ文を記述すれば完了。

 

―参考にさせて頂いたサイトー

pgAgentでジョブを定期実行する

Windowsで運用しているPosgreSQL 9.2のバックアップとリストア pg_dumpとpsqlのバッチ処理 | IT関連の技術情報サイト

IISとASP.NETの関連付けでハマったMEMO

調べると結構ヒットするのね。

IISのやつ。

.NETFrameworkより後にインターネット インフォメーション サービス (IIS) を
追加した場合にASP.NETアプリが動かない。
ASP.NETがインストールされていません」なんて言いやがる。

うむ、、、正しくインストールされていないのが原因らしい
(そんなはずないのだけれど。。)

 

ちなみにWindwsでのインターネット インフォメーション サービス (IIS) を

使えるようにするには、

コントロールパネル
―プログラム
――Windowsの機能の有効化または無効化

f:id:ojorojoro:20140916132626j:plain

必要なサービスをチェックする。

 

さて本題の

コマンドプロンプトASP.NETインストーラーを実行です。

コマンドプロンプトは右クリック【管理者として実行】で起動
(通常、なにも変更していなければ、VISTA以降はAdminでログインしても、exeの実行はUserレベルになるということで)

 

exeの場所(VISTA環境)

C:\Windows\Microsoft.NET\Framework\v4.0.30319 ここにありました。
64bitならFramework64\v4.0.30319かな。

 

コマンド

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

(コマンドなどはここを参考に ASP.NET IIS 登録ツール (Aspnet_regiis.exe)

 

はい、これで脱出成功。

あるWEBサービスで頻発していたログ【警告: processCallbacks status 2】とか、なんとやら。

環境/tomcat5.5・jre1.5

頻発しているログ、

org.apache.jk.common.ChannelSocket processConnection

警告: processCallbacks status 2

.......

原因:

想定を超えたリクエストをサーバ側に送信した事によって、コンテナのアプリケーションが処理できず、リクエストの処理中にサーブレットゲートウェイタイムアウト時間に達し、接続が切断された為。

 

対策:

server.xmlのconnectionTimeoutを増やす。(レスポンス返却した後で接続先との接続を切断する時間)
現在の設定は20000ミリ秒
デフォルトは60000ミリ秒
デフォルトに戻してみる(後日、サーバーアプリが稼働していない時に。。)

 

多分その影響からか、もう一つ続けて出るログ、

org.apache.jk.core.MsgContext action

警告: Error sending end packet

java.net.SocketException: Broken pipe

java.net.SocketOutputStream.socketWrite0()

.......

以下、情報収集してみた

  1. Webブラウザでレスポンスが帰ってくる前に何度もSubmit。
  2. IEの問題らしい?Firefox出ない、Chrome出ない。
  3. java.net.SocketOutputStream.socketWrite0() とは、
    ソケットに対してデータを書き込むメソッド。この途中でパイプが切断(ソケットがクローズ)レスポンスをクライアント(ブラウザ)に送信している途中にブラウザを閉じるなど送信が不可能になったいうこと。大きなファイルをダウンロードしている途中でブラウザを終了させれば再現できる。
    (サーバーのメモリ不足や性能に依存する可能性)

 

確認:

コマンド「netstat -an」でサーバーの通信状況確認、stateで以下のステータス、「LISTEN」「ESTABLISHED」「CLOSING」「TIME_WAIT」「CLOSE」以外、「SYN_RECEIVED」があった場合、大量のパケットを送られている可能性がある。

 

結果:

なし

      むむむむ。。。