環境:
Centos7、MySQL 5.6 (Docker 安裝)
需求:
實現每小時備份指定的數據庫到本地及遠程機器
1.shell腳本
#docker 安裝Mysql時指定的容器名稱
DOCKERNAME=mymysql
#備份的目錄
BAKDIR=/data/backup/mysql/`date +%Y-%m-%d-%H`
#備份指定的數據庫名稱
MYSQLDB=cbec
#數據庫連接密碼
MYSQLPW=Qwe123456.
#數據庫用戶名
MYSQLUSR=root
#數據庫服務地址
MYSQLHOST=localhost
#數據庫端口號
PORT=3306
if
[ $UID -ne 0 ];then
echo This script must use the root user ! ! !
sleep 2
exit 0
fi
#Define DIR and mkdir DIR 判斷目錄是否存在,不存在則新建
if
[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
else
echo This is $BAKDIR exists....
fi
#執行備份操作
#非docker安裝執行這條 mysqldump -u$MYSQLUSR -P$PORT -p$MYSQLPW -h$MYSQLHOST --default-character-set=utf8 $MYSQLDB >$BAKDIR/$MYSQLDB.sql
docker exec -it $DOCKERNAME mysqldump -u$MYSQLUSR -P$PORT -p$MYSQLPW -h$MYSQLHOST --default-character-set=utf8 $MYSQLDB >$BAKDIR/$MYSQLDB.sql
#將備份sql文件複製到遠程機器(可選)注意這個操作是需要遠程密碼才能執行的,[使用ssh代替密碼登錄](https://blog.csdn.net/xyang81/article/details/51477925)
scp -r $BAKDIR [email protected]:/data/backup/mysql
cd $BAKDIR ; tar -czf $MYSQLDB.tar.gz *.sql
find . -type f -name \*.sql |xargs rm -rf
[ $? -eq 0 ]&&echo “This `date +%Y-%m-%d` MySQL BACKUP is SUCCESS”
cd /data/backup/mysql/ ;find . -type d -mtime +30 |xargs rm -rf
echo "The mysql backup successfully "
執行腳本:
//添加可執行權限
chmod +x bakupmysql.sh
//執行
./bakupmysql.sh
2.編寫定時任務
輸入crontab -e
添加定時任務,按 i
進入編輯模式,輸入:0 */1 * * * /bin/sh /sh/bakupmysql.sh
。保存退出,先按Esc然後輸入:wq
,最後回車。
最後再靜靜觀察結果,每小時備份一次