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になってたりすると、よくつまづくのですよ。)
これが動けば、あとは先ほどの「手段」の定義にこのバッチ文を記述すれば完了。
―参考にさせて頂いたサイトー
Windowsで運用しているPosgreSQL 9.2のバックアップとリストア pg_dumpとpsqlのバッチ処理 | IT関連の技術情報サイト
IISとASP.NETの関連付けでハマったMEMO
調べると結構ヒットするのね。
IISのやつ。
.NETFrameworkより後にインターネット インフォメーション サービス (IIS) を
追加した場合にASP.NETアプリが動かない。
「ASP.NETがインストールされていません」なんて言いやがる。
うむ、、、正しくインストールされていないのが原因らしい
(そんなはずないのだけれど。。)
ちなみにWindwsでのインターネット インフォメーション サービス (IIS) を
使えるようにするには、
コントロールパネル
―プログラム
――Windowsの機能の有効化または無効化
必要なサービスをチェックする。
さて本題の
コマンドプロンプトで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()
.......
以下、情報収集してみた
- Webブラウザでレスポンスが帰ってくる前に何度もSubmit。
- IEの問題らしい?Firefox出ない、Chrome出ない。
- java.net.SocketOutputStream.socketWrite0() とは、
ソケットに対してデータを書き込むメソッド。この途中でパイプが切断(ソケットがクローズ)レスポンスをクライアント(ブラウザ)に送信している途中にブラウザを閉じるなど送信が不可能になったいうこと。大きなファイルをダウンロードしている途中でブラウザを終了させれば再現できる。
(サーバーのメモリ不足や性能に依存する可能性)
確認:
コマンド「netstat -an」でサーバーの通信状況確認、stateで以下のステータス、「LISTEN」「ESTABLISHED」「CLOSING」「TIME_WAIT」「CLOSE」以外、「SYN_RECEIVED」があった場合、大量のパケットを送られている可能性がある。
結果:
なし
むむむむ。。。