前幾天有朋友讓幫忙寫一個mysql數據備份腳本,因而就有了下文經過mysqldump命令備份數據庫的腳本,貼出來跟你們交流,如有問題,請指正,謝謝。mysql
實現功能:sql
1 備份指定的數據庫
數據庫
2 刪除指定天數前的備份文件,默認設定了7天
bash
#!/bin/bash # # 文件名:mysql_bak.sh # #數據庫備份文件的目錄,若沒有請建立目錄或指定備份目錄 BACKUP_DIR="/bak/mysqlbak" #指定mysql所在主機的主機名 DB_HOSTNAME='hostname' #指定mysql登陸用戶名 DB_USERNAME='backupuser' #指定mysql登陸密碼 DB_PASSWORD='password' #指定備份的數據庫名 DB_NAME="dbname" #定義當前日期爲變量 CURRENT_DATE=$(date +"%Y%m%d$H") #定義刪除N天前的文件變量 DEL_DAYS_BEFORE_FILES=7 #指定mysqldump所在目錄 MYSQLDUMP_DIR="/usr/bin" #備份指定數據庫 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
關於mysql備份腳本的使用說明:ide
1 備份操做是使用mysqldump命令完成,默認設置保留近7天備份文件spa
2 建議建立備份使用的用戶 backupuser(host字段建議指定IP)crontab
>CREATE USER 'backupuser'@'%' IDENTIFIED BY 'password';ip
>GRANT SELECT,LOCK TABLES,FILE,RELOAD ON *.* TO 'backupuser'@'%';it
(我的認爲這些權限足夠了,若不夠自行添加)class
3 注意須要在腳本中指定數據庫備份目錄
4 賦予腳本執行權限
$chmod +x mysql_bak.sh
5 建立定時任務,好比天天凌晨兩點執行備份操做
Redhat下操做
$crontab -e
# $PWD是指備份腳本所在路徑
# $BACKUP_DIR是指數據庫備份目錄
* 2 * * * $PWD/mysql_bak.sh &> $BACKUP_DIR/mysql_bak.log
注意:運行腳本用戶對所操做目錄的權限設置。