ログイン用ファイル作成 ※rootパスワード設定時
# vi /root/.my.cnf [mysqladmin] host = localhost user = root password = DBpassword [client] user = root password = DBpassword host = localhost
# chmod 400 /root/.my.cnf # mysql --defaults-extra-file=/root/.my.cnf
全データまとめてdump
mysqlalldump.sh
#!/bin/bash
#########################################
# 認証情報
DBUSER="root";
#DBPASSWD="パスワード";
# バックアップ先ディレクトリ //backup/database/20120327 みたいな感じになります。
BAKDIR="/database/backup/";
TODAYS_BAKDIR="$BAKDIR`date +%Y%m%d`";
#世代管理(何日分残すか)
DAYAGO="7"
########################################
# バックアップ先がなければ作成
[ ! -d $TODAYS_BAKDIR ] && mkdir -p $TODAYS_BAKDIR;
#mysqldump -u$DBUSER -p$DBPASSWD --opt --all-databases --single-transaction --master-data=2 | gzip > $TODAYS_BAKDIR/alldump.sql.gz;
mysqldump --defaults-extra-file=/root/.my.cnf --opt --all-databases --single-transaction --master-data=2 --flush-logs | gzip > $TODAYS_BAKDIR/alldump.sql.gz;
# 7 日より古いバックアップは削除
find $BAKDIR -type d -mtime +${DAYAGO} -print0 | xargs -0 rm -rf;
DB毎にそれぞれdump
# mkdir -p /backup/database/ # mkdir -p /backup/tmp/
mysqlalldump.sh
#!/bin/sh
######################################
#アーカイブ前の一時ディレクトリ
BACKDIRTMP=/backup/tmp/
# バックアップ先ディレクトリ
BKDIR=/backup/database/
MYPATH=$(cd $(dirname $0);pwd)
#世代管理(何日分残すか)
DAYAGO="8"
# MySQLrootパスワード
#ROOTPASS="パスワード"
######################################
#日付・時刻取得し変数に代入
TIMESET=`date +%Y%m%d-%H%I%M`
#バックアップ先ファイル名を設定 設定ファイルにあるファイル名+日付.tar.gzする
BKFILE=${BKDIR}/mysql.$TIMESET.tar.gz
# データベース名取得
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
#一時退避先掃除
rm -rf ${BACKDIRTMP}/*
# データベースごとに一時退避先にバックアップ
for DBNAME in $DBLIST
do
#mysqldumpによるバックアップ
#mysqldump --single-transaction --master-data=2 -u root -p${ROOTPASS} $DBNAME --opt > ${BACKDIRTMP}/${DBNAME}_dump.sql | logger -t mysqldump
mysqldump --single-transaction --master-data=2 --flush-logs --defaults-extra-file=/root/.my.cnf $DBNAME --opt > ${BACKDIRTMP}/${DBNAME}_dump.sql | logger -t mysqldump
if [ $? = 0 ]; then
logger -t mysqldump "Backup OK mysqldump:${DBNAME}"
echo "Backup OK mysqldump:${DBNAME}"
else
#失敗したらその旨を表示かつ、ログに保存、メール送信
logger -t mysqldump "Backup NG mysqldump:${DBNAME}"
echo "Backup NG mysqldump:${DBNAME}"
${MYPATH}/mailsend.sh "バックアップ失敗通知" "実行バックアップスクリプト: ${0}
バックアップ対象: mysqldump mysqlDB名:${DBNAME}
バックアップに失敗しました。"
fi
done
# 退避先のバックアップを処理日名をつけてアーカイブ圧縮(失敗時はメール送信)
cd $(dirname ${BACKDIRTMP})
tar vzcf $BKFILE $(basename ${BACKDIRTMP}) ||
${MYPATH}/mailsend.sh "バックアップ失敗通知" "実行バックアップスクリプト: ${0}
バックアップ対象: mysql一時ファイルのアーカイブ処理に失敗しました。"
#-------yyyymmdd形式のファイルから古い物を削除-------
# 削除しきい日付(yyyymmdd)を設定。(DAYAGO日前の日付求める)
tday=`date -d "${DAYAGO} day ago" +%Y%m%d`
# 対象Dir配下のファイル名をwhileに渡し「$list」となる
ls $BKDIR|while read list
do
#ファイル名に「数字x8」が含まれている場合、
if [[ $list =~ [0-9]{8} ]] ; then
# $listから、「yyyymmdd」を取り出しepoch時間($fday)にする
fday=`expr $list : "mysql\.\([0-9]\{8\}\).*.tar.gz"`
#ファイル名から取得した「yyyymmdd」が本日の「yyyymmdd」よりも小さい場合
if [ -n "$fday" ] && [ $fday -lt $tday ]; then
# echo する
#echo $list
#削除する
rm -f ${BKDIR}/${list}
fi
fi
done
![平均差の信頼区間とt検定[NOINDEX]](https://www.yuulinux.tokyo/contents/wp-content/uploads/2017/11/sinrai_20181104_1-150x150.jpg)


