MySQLのバックアップスクリプトを書いてみた

投稿者: | 2013年7月10日

借りているレンタルサーバーのMySQLのデーターのバックアップをとるために、バックアップスクリプトを書いてみた。指定した日にちだけバックアップを保持して古いバックアップは自動で消けすという仕様にしてみた。


#!/bin/sh
#
# MySQLのバックアップスクリプト
#

# バックアップを取得するディレクトリ
BackupDir="/home/admin/backup"

# ユーザーアカウントの設定
User="user"
Pass="pass"

# 圧縮に使用するプログラム
Compress_command="gzip"

# バックアップファイルの拡張子
Suffix="gz"

# バックアップファイルの名前
File_name="$BackupDir/db-backup.`date '+%Y-%m-%d'`.dump.$Suffix"

# バックアップを保持する日数
Days="7"

echo -e "backup started => `date`\n"
echo -e "Back up file => $File_name\n"

# バックアップの取得
if [ -z $Pass ] ; then
mysqldump -u $User -x --alldatabases --events | $Compress_command > $File_name
else
mysqldump -u $User -p$Pass -x --alldatabases --events | $Compress_command > $File_name
fi

echo -e "Backup file size => `ls -lah $File_name | awk '{ print $5 }'`\n"
echo -e "Backup ended => `date`\n"

# 古いバックアップの消去
echo -e "Delete backup files started => `date`\n"
find $BackupDir -mtime +$Days -name "db-backup*" print -exec rm -f {} \;

echo -e "Delete old backups files( $Days days passed )\n"
echo -e "Delete backup files ended => `date`\n"

このスクリプトをこんな感じでcronで定期実行すればバックアップが完了したらメールで通知を出すようにできる。

0 5 * * * /home/admin/scripts/mysql-backup.sh 2>&1 | mail -s “MySQL Backup” example@example.com 2>&1

MySQLのチューニング その1

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください