MySQLのバックアップSHサンプル

ありがとうございます!

参考にしたサイト
http://qiita.com/crimson_21/items/6171a95f8ddb2861e2e6


1.ルートのホームにディレクトリ制作
mkdir -p /root/backup/mysql


2.shファイル制作
vi /root/mysqlBackup.sh


3.中身記述

#!/bin/sh

# 他のユーザからバックアップを読み込めないようにする
umask 077

# バックアップファイルを何日分残しておくか(一ヶ月分)
period=31
# バックアップファイルを保存するディレクトリ
dirpath='/root/backup/mysql'

# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
filename=`date +%y%m%d`

# mysqldump実行(ファイルサイズ圧縮の為gzで圧縮しておきます。)
mysqldump --opt --all-databases --events --default-character-set=binary -u root --password=パスワード | gzip > $dirpath/$filename.sql.gz

# 古いバックアップファイルを削除
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$oldfile.sql.gz


4.生のパスワードデータが入っているのでルート以外は見られないように
chmod 0700 /root/mysqlBackup.sh


5.クーロンに記述
#crontab -e

0 3 * * * root /root/mysqlBackup.sh



6.ちなみにあまり推奨されないけどSCPで一週間に一回送る
vi /root/mysqlBackup2.sh

#!/bin/sh
dirpath='/root/backup/mysql'
filename=`date +%y%m%d`

HOST=[バックアップ先のIP]
USER=root
PASS=[パスワード]
TARGET_FILE=$dirpath/$filename.sql.gz
TARGET_DIR=/var/backup/motebeauty.jp

expect -c "
spawn scp ${TARGET_FILE} ${USER}@${HOST}:${TARGET_DIR}
expect {
\"Are you sure you want to continue connecting (yes/no)? \" {
send \"yes\r\"
expect \"password:\"
send \"${PASS}\r\"
} \"password:\" {
send \"${PASS}\r\"
}
}
interact
"


7.生のパスワードデータが入っているのでルート以外は見られないように
chmod 0700 /root/mysqlBackup2.sh


8.クーロンに記述(日曜の4時20分に転送!)
#crontab -e

20 4 * * 0 root /root/mysqlBackup.sh