乙個Mysql自動備份指令碼

2021-04-13 09:21:03 字數 3582 閱讀 1240

寫了乙個mysql備份的指令碼,大家看看,有什麼不妥地方。

這是我寫的第乙個shell指令碼,大家幫忙看看,

有誰需要的,我可以發給他。

可以將這個指令碼放進crontab,每天凌晨執行一次,自動備份

這個指令碼每天最多隻執行一次,而且只保留最近五天的備份在伺服器上。  #

!/bin/

bash

#this is a shellscript 

forauto db 

backup

#powered by aspbiz

#2004-09

#setting

#設定資料庫名,資料庫登入名,密碼,備份路徑,日誌路徑,資料檔案位置,以及備份方式

#預設情況下備份方式是tar,還可以是mysqldump

,mysqldotcopy

#預設情況下,用root(空

)登入mysql資料庫,備份至

/root

/db***xx

.tgz

dbname="

data

"dbuser="

root

"dbpasswd=""

backuppath="

/web1/back/

"logfile="

/web1/back/db.log

"dbpath="

/usr/local/mysql/"#

backupmethod

=mysqldump

#backupmethod

=mysqlhotcopy

#backupmethod

=tar

#setting 

endnewfile="

$backuppath"db

$(date

+%y%m%d

).tgz

dumpfile="

$backuppath"db

$(date

+%y%m%d

)oldfile="

$backuppath"db

$(date

+%y%m%d --

date='

5days ago'

).tgz

echo

"-------------------------------------------

">>

$logfile

echo

$(date+"

%y-%m-%d %h:%m:%s")

>>

$logfile

echo

"--------------------------

">>

$logfile

#delete old file

if[ -f 

$oldfile ]

then

rm -f 

$oldfile 

>>

$logfile 

2>&1

echo

"[$oldfile]delete old file success!

">>

$logfile

else

echo

"[$oldfile]no old backup file!

">>

$logfile

fiif

[ -f 

$newfile ]

then

echo

"[$newfile]the backup file is exists,can't backup!

">>

$logfile

else

case 

$backupmethod in

mysqldump)if

[ -z 

$dbpasswd ]

then

mysqldump -u 

$dbuser --opt 

$dbname 

>

$dumpfile

else

mysqldump -u 

$dbuser -p

$dbpasswd --opt 

$dbname 

>

$dumpfile

fitar czvf 

$newfile 

$dumpfile 

>>

$logfile 

2>&1

echo

"[$newfile]backup success!

">>

$logfile

rm -rf 

$dumpfile

;;mysqlhotcopy

)rm -rf 

$dumpfile

mkdir

$dumpfile

if[ -z 

$dbpasswd ]

then

mysqlhotcopy -u 

$dbuser 

$dbname 

$dumpfile 

>>

$logfile 

2>&1

else

mysqlhotcopy -u 

$dbuser -p 

$dbpasswd 

$dbname 

$dumpfile 

>>$

logfile 

2>&1

fitar czvf 

$newfile 

$dumpfile 

>>

$logfile 

2>&1

echo

"[$newfile]backup success!

">>

$logfile

rm -rf 

$dumpfile;;*

)/etc/

init.d

/mysqld stop 

>/

dev/

null 

2>&1

tar czvf 

$newfile 

$dbpath

$dbname 

>>

$logfile 

2>&1

/etc

/init.d

/mysqld 

start

>/

dev/

null 

2>&1

echo

"[$newfile]backup success!

">>

$logfile

;;esac

fiecho

"-------------------------------------------

">>

$logfile

格式個linuxshell指令碼,需要注意的是必須用vi建立,我本來用window記事本建立的一直不能執行,搞了很長時間,檔名稱存為exec.sh就好了,還有linuxshell指令碼比較嚴格,多乙個空格少乙個空格都不行。。我確定上面的指令碼是可以執行的。只要鍵入

sh exec.sh 

這樣就可以了。

MYSQL自動備份指令碼

1.備份指令碼 cat usr local script backupdatabase bin bash shell command for backup mysql database everyday automatically by crontab time 2015 5 20 name hux...

Mysql 自動備份指令碼

cd data shell vim auto backup mysql.sh bin bash auto backup mysql db by authors kanghui 2016 6 12 define backup path bak dir data backup date y m d my...

mysql自動備份指令碼

bin bash auto backup mysql shell by csy 2015 11 11 自動備份資料庫 並新增任務計畫指令碼 定義變數 bak cmd usr bin mysqldump bak host localhost bak db csy bak user root bak p...