Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Backup MySQL Files
#!/bin/bash
# Backup From MySQL
#
# Copyright : 2011 Seiji Ogawa [Ogaaaan]
# http://torhamzedd.blogspot.com
# License : The MIT License
# [jp] http://goo.gl/0sFoc
# [en] http://goo.gl/KPxS
########
# 実装手順
# 1)Linuxでバックアップ専用ユーザ(buserとする)を作成
# 2)/home/buser/backup/log を作成
# 3)上記ディレクトリ内に世代分だけディレクトリを作成する
# 7世代なら0〜6まで。$ mkdir -p {0,1,2,3,4,5,6}などで一気に作成できる
# 4)cronでrootとしてこのシェルを実行させる(毎日1回)
# 仕組み
# 1)mysqldumpコマンドを使用してsqlファイル生成
# 2)sqlファイルの所有権を変更
# 運用
# 1)本日の日付を、世代数で割った余りを求める
# もし本日が6日なら、6/7で0。あまり6。つまり6のディレクトリが該当
# 2)1で求めたディレクトリをzipコマンドで圧縮する。ファイル名は今日の年月.zip。
# zip -r 20110706.zip 6/
# 3)Filezillaなどで接続し、作成したzipファイルをダウンロード
# 4)ダウンロードが終わったらzipファイルを削除する
########
# バックアップ世代設定
# (0から始まる世代分のディレクトリを作っておくこと)
GENERATION=7
# バックアップ先ディレクトリ設定
DAY=`date +%d`
GENERATIONDIR=`expr $DAY % $GENERATION`
# バックアップユーザ
LINUXUSER='buser'
# MySQLアカウント
MYSQLUSER='username'
MYSQLPASS='password'
# デーベース名
DATABASENAME='database_name'
# ダンプファイル名
SQLDUMPFILE='mysql_dump.sql'
# バックアップ先ディレクトリ
DESTINATIONDIR="/home/$LINUXUSER/Backup/$GENERATIONDIR"
# ダンプ
/usr/bin/mysqldump --opt --flush-logs --single-transaction --default-character-set=utf8 --hex-blob -u$MYSQLUSER -p$MYSQLPASS $DATABASENAME > $DESTINATIONDIR/$SQLDUMPFILE
# パーミッション変更
chown $LINUXUSER:$LINUXUSER $DESTINATIONDIR/$SQLDUMPFILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment