1.安裝定時器
apt-get install cron 一般已經(jīng)安裝無需重新安裝、
2.查看是否安裝
service cron status

image.png
3.創(chuàng)建腳本
目錄:/home/backups/mysql/bak.sh
\#!/bin/bash
\#mysql容器名稱
mysql_container="mysql_172"
\#MySQL備份用戶
mysql_user="root"
\#MySQL備份用戶的密碼
mysql_password="數(shù)據(jù)庫密碼"
\#數(shù)據(jù)庫名,可以定義多個數(shù)據(jù)庫,中間以空格隔開,如:test test1 test2
dbname='superzig-operatingtable'
\#備份時間
backtime=`date +%Y%m%d%H%M%S`
\#日志備份路徑 此處指向你創(chuàng)建的文件夾
logpath='/home/backups/mysql/log'
\#數(shù)據(jù)備份路徑 此處指向你創(chuàng)建的文件夾
datapath='/home/backups/mysql/data'
\#查看備份目錄
if [ ! -d "$logpath" ]; then
mkdir -p "$logpath"
fi
\#查看備份目錄
if [ ! -d "$datapath" ]; then
mkdir -p "$datapath"
fi
\#日志記錄頭部
echo ‘”備份時間為${backtime},備份數(shù)據(jù)庫表 ${dbname} 開始” >> ${logpath}/mysqllog.log
\#正式備份數(shù)據(jù)庫
for table in $dbname;
do
source=`docker exec -i ${mysql_container} mysqldump -u${mysql_user} -p\'${mysql_password}\' --single-transaction ${table}> ${datapath}/${backtime}+.sql` 2>> ${logpath}/mysqllog.log;
#備份成功以下操作
if [ "$?" != 0 ] ; then
#備份失敗則進行以下操作
echo “數(shù)據(jù)庫表 ${dbname} 備份失敗!!” >> ${logpath}/mysqllog.log
else
cd $datapath
\#為節(jié)約硬盤空間,將數(shù)據(jù)庫壓縮
tar -zcvf ${table}${backtime}.tar.gz ${backtime}.sql > /dev/null
\#刪除原始文件,只留壓縮后文件
rm -f ${datapath}/${backtime}.sql
\#刪除30天前備份
find $datapath -name "*.tar.gz" -type f -mtime +90 -exec rm -rf {} \; > /dev/null 2>&1
echo “數(shù)據(jù)庫表 ${dbname} 備份成功!!” >> ${logpath}/mysqllog.log
fi
done
4.添加定時任務(wù): crontab –e

image.png

image.png
5.重啟定時器:service cron restart
6./home/backups/mysql/data中存儲的是sql語句 /home/backups/mysql/log中存儲的是日志
7.如果數(shù)據(jù)庫端口號不是默認(rèn)的3306,這時備份腳本中可以添加 -P3320, 3320為指定端口號, 如果容器名稱改變了,需要改變腳本中的容器名稱

image.png