功能:備份同一資料庫乙個或多個庫,最新備份檔案保留數量可以設定
修改這行:datebases=(sharebed) ,如果是多個庫,例如:datebases=(sharebed step awk) 以空格做間隔
修改這行:bak_num=10 (這裡寫了10份,如果是多個庫備份,每個庫都是自動保留10份)
#!/bin/bash
# 配置項
# 備份存放目錄
dataurl=/data/sqlbak
[ ! -d $dataurl ] && mkdir -p $dataurl
# 檔名
dhost="39.10.74.15"
# 資料庫連線埠
dport=3389
# 資料庫使用者名稱
duser='root'
# 資料庫密碼
dpwd='hjhk6hg4555'
# 要單獨備份的資料庫名,可以設定多個庫備份,空格做分隔
datebases=(sharebed)
# 備份日誌檔案
bak_log=/data/sqlbak/.bak150.
for i in $
do [ ! -f $bak_log ] && : > "$bak_log$i"
done
#---主功能塊
# 備份功能
dataname="$(date +%y%m%d%h%m)"
cd $dataurl
for d in $
do /usr/bin/mysqldump -r -e --host=$dhost -p$dport -u$duser -p$dpwd $d > temp.sql
temp_name=$dataurl/$d.$dataname.tar.gz
/usr/bin/tar -zcpf $temp_name temp.sql
rm -rf temp.sql
echo "$dataname::$temp_name" >> $bak_log
done
# 刪除多餘備份(當單個庫或多個庫備份時,每個備份庫數量都分別只保留十個最新備份)
cd $dataurl
for i in $
do temp=`cat $bak_log$i | wc -l`
row=$((temp+0))
del_row=$((row-10))
if [ $row -ge 11 ]; then
head -$del_row $bak_log$i | awk -f "::" '' | xargs -n1 rm -rf {};
sleep 1
sed 1,"$del_row"d $bak_log$i -i
fidone
[root@ald8 / ]# crontab -l
#-s1-----資料庫備份任務(只備份sharebed庫、每天早上3點1分備份一次,指令碼自動保留最新十個備份 |>備份指令碼:/data/shell/sqlallbak.sh |>備份存放目錄:/data/sqlbak>)
1 3 * * * /data/shell/sqlallbak.sh
MySQL資料庫備份指令碼
1.指令碼內容 單獨的指令碼 bin sh if 4 then echo usage 0 db host db user db pwd db name exit fiprefix date y m d h m s filepath root dbbackup date y m 4 prefix if...
mysql資料庫備份指令碼
第一步 編寫資料庫備份指令碼database mysql shell.sh bin bash date date y m d h m every minute database springboot admin database name db username root database user...
備份MySQL資料庫指令碼
備份mysql資料庫中 mysql 庫 規定每週日24點備份 root mysql vim root mysqldump.sh bin bash backup database mysql owner weijia date 2019 04 13 mysql user root 登入使用者 mysq...