Recent Comments

BIND+PHPによるDiCEで更新可能なダイナミックDNSサーバ構築
 [09/09] Big Black Ass様
 [09/09] Buy Vicodin様
 [09/09] Stop drinking and take zoloft様
DiCEのプラグイン編集
 [09/09] susie様
 [09/09] ikfepzemjah様
 [09/09] lakia様
日記:携帯ストラップにUSBメモリ
 [09/07] [doxycycline hyclate 100mg]様
日記:Windows7RCがDVDドライブを認識しない
 [09/07] what is doxycycline様
買った(日記):Dynabook SS 1610 11L/2
 [09/07] [doxycycline lyme disease]様

Profile

名前:げんき
職業:ねじ屋さん
趣味:機械いじり
  買ったものや試したことを日記混じりで書きつづっております。

中の人

なかのひと
Graph 207.11.27
Year:  Month:  Day

<<< PHP:一定以上古いファイルを削除する <<<  ||  >>> PHP:WOLを使ってWWW経由で非常時起動マシンを起動 >>>

PostgreSQLの自動バックアップ

2007年11月27日

データベースのバックアップ
PostgreSQLのデータのバックアップには、pg_dumpというコマンドを利用するといいらしい。
これでデータベースの中身がテキストでダンプされるので、それをファイルに保存してやるといい。

$ pg_dump > pgdump.txt

しかしこれは実行したユーザのデータベースしかダンプしてくれなくて、pg_dumpallというコマンドで全部のデータベースがダンプされる。
でもこれは権限が足りないテーブルとかがあったら止まっちゃうから、root権限で実行してやるとよいのかな?
postgresで実行してもいいみたい。

でもcronでrootでやりゃいいや。

自動実行
てことで、週1回ぐらいのペースでデータベースのバックアップを取ってやる。
しかしこれはテキストデータなので、そのまま保存してもディスクスペースの無駄遣い。
ログ保存用ディレクトリに、pg_dumpallして作ったファイルをzip圧縮するようなシェルスクリプトを書く。

$ vi pg_backup.sh

#!/bin/bash
DATE=`date '+%Y%m%d'`
FILENAME=pg_dump_$DATE
pg_dumpall > $FILENAME
zip $FILENAME.zip $FILENAME
rm -f $FILENAME

$ chmod 760 pg_backup.sh
$ sudo chown root:admin pg_backup.sh

/etc/ctontabにこいつを毎週実行する行を足す。
$ sudo vi /etc/crontab

# 毎週日曜朝2時にpgsqlのバックアップを作成
00 3 * * sun cd /xxx/yyy/logs/ ; ./pg_backup.sh

$ sudo crontab /etc/crontab

このディレクトリには、apacheのログやらmaillogやらいろんなログファイルが一定以上のサイズになったら移動されてくるようにしてるので、すべてzip圧縮して5GBぐらいになったらDVDに焼いてディスクスペースを空けてやる。

<<< PHP:一定以上古いファイルを削除する <<<  ||  >>> PHP:WOLを使ってWWW経由で非常時起動マシンを起動 >>>

アンケート

このページの内容はいかがでしたか?
片手間にポチっと送信してやってください。
役に立った 5
おもしろかった 0
ふつー 0
つまらなかった 1
欲しい情報と違った 0
Score:8

トラックバック

このエントリーのトラックバックURL:
http://www.genkikko.net/mt/mt-tb.cgi/63

コメントを投稿