MySQL 自動備份併傳送到郵箱

Ucer發表於2018-06-18

準備工作

  • 閱讀本文章之前請先檢視 mutt 郵件傳送 並搭建好郵件傳送環境
  • 本文假定你已經搭建好了 mysql 環境,並且能使用 msyqldump 命令

備份指令碼

mkdir -p /data/backup/mysql
chown xxx:xxx /data/backup
mkdir /opt/shells

vim /data/shells/mysqlBackup.sh

#!/bin/bash

BACKUP_PATH=/data/backup/mysql
CURRENT_TIME=$(date +%Y%m%d_%H%M%S)

[ ! -d "$BACKUP_PATH" ] && mkdir -p "$BACKUP_PATH"

#資料庫地址
HOST=localhost
#資料庫使用者名稱
DB_USER=root
#資料庫密碼
DB_PW=password

# 要備份的資料庫名
DATABASE=blog
FILE_GZ=${BACKUP_PATH}/$CURRENT_TIME.$DATABASE.sql.gz
/usr/local/bin/mysqldump -u${DB_USER} -p${DB_PW} --host=$HOST -q -R --databases $DATABASE  | gzip > $FILE_GZ # 此處必須要用絕對路徑

# 所有資料庫
#mysqldump --all-databases -xxxxx

echo "資料庫備份--$FILE_GZ" | mutt -s "$DATABASE備份" ucer183@163.com -a $FILE_GZ

# 刪除 7 天以前的備份 「注意寫法」
cd $BACKUP_PATH
find $BACKUP_PATH -mtime +7 -name "*sql.gz"  -exec rm -f {} \;
chmod u+x mysqlBackup.sh

# 執行下指令碼看看有沒有錯誤;
./mysqlBackup.sh

凌晨三點三十分執行一次

crontab -e
30 03 * * * /data/shells/mysqlBackup.sh

do it now

相關文章