MySQL のデータベースをダンプして圧縮して 90 日間分保存するスクリプト

Posted by
ぴろり
Posted at
2009/02/17 20:54
Trackbacks
関連記事 (1)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 みなさん、お使いのデータベースのバックアップは大丈夫でしょうか? 今日、紹介するのは私が使っている MySQL のバックアップ用スクリプトです。元はどこかのサイトで見たものなのですが失念してしまいました。指定されたデータベースのダンプを取得した後、gzip でこれを圧縮し、指定された期間を過ぎたバックアップファイルは自動的に削除される仕組みになっています。これを cron を利用して一日に 1 回実行するようにしておくと便利です。

このエントリーをはてなブックマークに追加  

 簡単に解説すると、スクリプトは 4 つの部分にわけられます。パラメータを設定する部分、MySQL のダンプを取得する部分、取得したダンプを gzip 圧縮する部分、最後に指定日以前の古いバックアップファイルを削除する部分です。KEEPDAY に設定する値を変えることで、バックアップを残す日数を変更することができます。サーバのディスク容量と相談して適当な値に書き換えて使ってください。

#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

KEEPDAY=90

DB_HOST=mysqlX.db.sakura.ne.jp
DB_USER=username
DB_PASS=password
DB_NAME=database

MKFILE=mysql.`date +'%y%m%d'`
GZFILE=$MKFILE.gz
RMFILE=mysql.`date -v -"$KEEPDAY"d +'%y%m%d'`.gz



echo "Dumping to $MKFILE"
mysqldump --host=$DB_HOST --user=$DB_USER --password=$DB_PASS 
    --hex-blob --quote-names 
    $DB_NAME 
> $MKFILE

echo "Packing to $GZFILE"
if [ -f $GZFILE ]; then
  rm -f $GZFILE
fi
gzip $MKFILE

if [ -f $GZFILE -a -f $RMFILE ]; then
  rm -f $RMFILE
  echo "Removed $RMFILE"
  exit 0
fi

さくらインターネットのレンタルサーバ(FreeBSD)で稼動実績があります。

このエントリーをはてなブックマークに追加  



関連記事/トラックバック (全 1 件中、最新 5 件まで表示しています)

GUiLZ.ORG のスクリーンショット
タイトル
FreeBSDの date -v と同じ事をLinuxで実行するための方法
Trackbacked at
2011/06/09 13:14
from
GUiLZ.ORG
概要
私が使っているさくらのVPS(CentOS) では date -v というオプションが存在せず、バックアップは正常に取れるものの、自動削除がうまくいかない。これをLinuxで利用できるように修正したときのメモ。

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。