您好,登錄后才能下訂單哦!
前幾天有朋友讓幫忙寫一個(gè)mysql數(shù)據(jù)備份腳本,于是就有了下文通過mysqldump命令備份數(shù)據(jù)庫(kù)的腳本,貼出來跟大家交流,若有問題,請(qǐng)指正,謝謝。
實(shí)現(xiàn)功能:
1 備份指定的數(shù)據(jù)庫(kù)
2 刪除指定天數(shù)前的備份文件,默認(rèn)設(shè)定了7天
#!/bin/bash # # 文件名:mysql_bak.sh # #數(shù)據(jù)庫(kù)備份文件的目錄,若沒有請(qǐng)創(chuàng)建目錄或指定備份目錄 BACKUP_DIR="/bak/mysqlbak" #指定mysql所在主機(jī)的主機(jī)名 DB_HOSTNAME='hostname' #指定mysql登錄用戶名 DB_USERNAME='backupuser' #指定mysql登錄密碼 DB_PASSWORD='password' #指定備份的數(shù)據(jù)庫(kù)名 DB_NAME="dbname" #定義當(dāng)前日期為變量 CURRENT_DATE=$(date +"%Y%m%d$H") #定義刪除N天前的文件變量 DEL_DAYS_BEFORE_FILES=7 #指定mysqldump所在目錄 MYSQLDUMP_DIR="/usr/bin" #備份指定數(shù)據(jù)庫(kù) if $($MYSQLDUMP_DIR/mysqldump -h ${DB_HOSTNAME} -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME} > "${BACKUP_DIR}/${DB_NAME}_${CURRENT_DATE}.sql");then cd ${BACKUP_DIR} gzip ${DB_NAME}_${CURRENT_DATE}.sql echo "${CURRENT_DATE}--Backup database ${DB_NAME} successfully!" else echo "${CURRENT_DATE}--Backup database ${DB_NAME} unsuccessfully" fi #刪除指定N天前的備份文件 find ${BACKUP_DIR} -name "${DB_NAME}_*.sql.gz" -type f -mtime +${DEL_DAYS_BEFORE_FILES} -exec rm {} \; > /dev/null 2>&1
關(guān)于mysql備份腳本的使用說明:
1 備份操作是使用mysqldump命令完成,默認(rèn)設(shè)置保留近7天備份文件
2 建議創(chuàng)建備份使用的用戶 backupuser(host字段建議指定IP)
>CREATE USER 'backupuser'@'%' IDENTIFIED BY 'password';
>GRANT SELECT,LOCK TABLES,FILE,RELOAD ON *.* TO 'backupuser'@'%';
(個(gè)人認(rèn)為這些權(quán)限足夠了,若不夠自行添加)
3 注意需要在腳本中指定數(shù)據(jù)庫(kù)備份目錄
4 賦予腳本執(zhí)行權(quán)限
$chmod +x mysql_bak.sh
5 創(chuàng)建定時(shí)任務(wù),比如每天凌晨?jī)牲c(diǎn)執(zhí)行備份操作
Redhat下操作
$crontab -e
# $PWD是指?jìng)浞菽_本所在路徑
# $BACKUP_DIR是指數(shù)據(jù)庫(kù)備份目錄
* 2 * * * $PWD/mysql_bak.sh &> $BACKUP_DIR/mysql_bak.log
注意:運(yùn)行腳本用戶對(duì)所操作目錄的權(quán)限設(shè)置。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。