トップ «前の日記(2007-04-30(Mon)) 最新 次の日記(2007-05-02(Wed))» 編集

ぽっぺん日記@karashi.org


2007-05-01(Tue) [長年日記]

雨

_ AutoPostgreSQLBackup

AutoMySQLBackupをMySQLのバックアップに使っているんだけども、PostgreSQLでも同じようなものがないかなーとググってみたところ、その名もAutoPostgreSQLBackupというスクリプトを見付けた。

ただ、2005年から更新されていなくて、多少古い感じなので、さらにググってみたところ、AutoMySQLBackup2.5相当の非公式(?)パッチを見付けた(本家は2.2相当)。

非公式版を落としてきて、手元のFreeBSDで動かしてみたところ、どうやらLinuxを想定しているらしくうまく動作しなかった。と言う訳で、とりあえず、FreeBSDで動作するように下記のパッチを作成。

Index: autopostgresqlbackup
===================================================================
--- autopostgresqlbackup	(revision 271)
+++ autopostgresqlbackup	(working copy)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/local/bin/bash
 #
 # PostgreSQL Backup Script Ver 1.1
 # http://autopgsqlbackup.frozenpc.net
@@ -31,7 +31,7 @@
 #=====================================================================

 # Username to access the PostgreSQL server e.g. dbuser
-USERNAME=postgres
+USERNAME=pgsql

 # Password
 # create a file $HOME/.pgpass containing a line like this
@@ -242,7 +242,7 @@
 #=====================================================================
 #=====================================================================
 PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/postgres/bin:/usr/local/pgsql/bin
-DATE=`date +%Y-%m-%d`				# Datestamp e.g 2002-09-21
+DATE=`date +%Y-%m-%d_%Hh%Mm`			# Datestamp e.g 2002-09-21
 DOW=`date +%A`					# Day of the week e.g. Monday
 DNOW=`date +%u`					# Day number of the week 1 to 7 where 1 represents Monday
 DOM=`date +%d`					# Date of the Month e.g. 27
@@ -252,19 +252,19 @@
 LOGFILE=$BACKUPDIR/$DBHOST-`date +%N`.log	# Logfile Name
 LOGERR=$BACKUPDIR/ERRORS_$DBHOST-`date +%N`.log		# Logfile Name
 BACKUPFILES=""
-OPT="--quote-names --opt"			# OPT string for use with mysqldump ( see man mysqldump )
+#OPT="--quote-names --opt"			# OPT string for use with mysqldump ( see man mysqldump )

 # Add --compress mysqldump option to $OPT
 if [ "$COMMCOMP" = "yes" ];
 	then
-		OPT="$OPT --compress"
+		OPT="$OPT -Fc --compress"
 	fi

 # Add --compress mysqldump option to $OPT
-if [ "$MAX_ALLOWED_PACKET" ];
-	then
-		OPT="$OPT --max_allowed_packet=$MAX_ALLOWED_PACKET"
-	fi
+#if [ "$MAX_ALLOWED_PACKET" ];
+#	then
+#		OPT="$OPT --max_allowed_packet=$MAX_ALLOWED_PACKET"
+#	fi

 # Create required directories
 if [ ! -e "$BACKUPDIR" ]		# Check Backup Directory exists.
@@ -363,7 +363,7 @@

 # Hostname for LOG information
 if [ "$DBHOST" = "localhost" ]; then
-	DBHOST="`hostname -f`"
+	DBHOST="`hostname`"
 	HOST=""
 else
 	HOST="-h $DBHOST"
@@ -371,7 +371,8 @@

 # If backing up all DBs on the server
 if [ "$DBNAMES" = "all" ]; then
-	DBNAMES="`psql -U $USERNAME $HOST -l -A -F: | sed -ne "/:/ { /Name:Owner/d; /template0/d; s/:.*$//; p }"`"
+	#DBNAMES="`psql -U $USERNAME $HOST -l -A -F: | sed -ne "/:/ { /Name:Owner/d; /template0/d; s/:.*$//; p }"`"
+	DBNAMES="`psql -U $USERNAME $HOST -l -A -F: -t | sed -e "/:/ { /Name:Owner/d; /template0/d; s/:.*$//;  }"`"

 	# If DBs are excluded
 	for exclude in $DBEXCLUDE
@@ -567,7 +568,7 @@
 			cat "$LOGFILE"
 			echo
 			echo "###### WARNING ######"
-			echo "Errors reported during AutoMySQLBackup execution.. Backup failed"
+			echo "Errors reported during AutoPostgreSQLBackup execution.. Backup failed"
 			echo "Error log below.."
 			cat "$LOGERR"
 	else

mysqldumpのオプションがまんま残っていたりして、なんだか作者も使っていないんじゃないかと思われる節もないではないが、とりあえず手元の環境では動いている。

今のところ、dailyバックアップまでしか想定されていないので、hourlyバックアップの機能も追加したいところ。

_ 民間刑務所で Ruby によるソフトウェア開発者を養成、アウトソーシング業務を

これは凄い。

開発言語には、教育工数が低いフレームワークを持つ Ruby を採用するとのこと。

ここは、ちょっと意味が分からないんだけど、Railsのことなのかな?

Tags: Ruby | | | | | | | Permalink
[]
本日のPingbacks(全0件)

トップ «前の日記(2007-04-30(Mon)) 最新 次の日記(2007-05-02(Wed))» 編集