mysql 資料庫備份指令碼 計畫任務 修正版)

2021-09-22 01:44:07 字數 1615 閱讀 9056

功能:備份同一資料庫乙個或多個庫,最新備份檔案保留數量可以設定

修改這行: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...