mysql備份腳本(shell)

mysql數據庫shell備份腳本

任何項目的運行都離不開數據,持久化數據對於一個企業尤爲重要,任何時候都不可掉以輕心,下面是我自己寫的一個shell腳本,用來備份數據,分享給大家。

#!/bin/bash
# 數據庫連接信息
MY_user=""
MY_pass=""
MY_port="3306"

# 環境變量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/data/mysql_57/bin
export PATH
MY_data=`date "+%F"`

# 腳本日誌
SHELL_LOG="/root/mysql_bak.sh.log"

# mysql 目錄
Mysql_datadir="/data/mysql_57"
Mysql_Binlog_dir="/data/mysql_57/logs/bin-log"

# 備份目錄
Bak_dir="/root/mysql_data"
Full_dir=${Bak_dir}/full  # 全量備份目錄
DB_dir=${Bak_dir}/db  # 單庫備份目錄
Binlog_dir=${Bak_dir}/binlog  # 增量二進制備份目錄

# Write Log 
shell_log(){
    LOG_INFO=$1
    echo "$(date "+%F") $(date "+%T") : $0 : ${LOG_INFO}" >> ${SHELL_LOG}
}
case $1 in
# 全量備份
Full)
    mysqldump -u${MY_user} -p${MY_pass} -P${MY_port} -A -B -F -R -x --events|gzip > ${Full_dir}/${MY_data}_all.sql.gz
    if [[ $? -eq 0 ]];then
        shell_log "SUCCESS: mysql Full database bak is success"
    else
        shell_log "ERROR: mysql Full database bak error"
    fi
;;
# 單庫備份
db)
    db_fun(){
        DB_name=$1
        mysqldump -u${MY_user} -p${MY_pass} -P${MY_port} -F -B  ${DB_name}|gzip > ${DB_dir}/${MY_data}_${DB_name}.sql.gz
        if [[ $? -eq 0 ]];then
            shell_log "SUCCESS: mysql database ${DB_name} bak is success"
        else
            shell_log "ERROR: mysql database ${DB_name} bak error"
        fi
    }
    db_fun cadavertrace
;;
# 增量備份(全量和單庫備份都會刷新二進制日誌)
increment)
    cd ${Mysql_Binlog_dir}
    binlog=`ls -At mysql-bin* | head -n 1`
    gzip -c ${binlog} > ${Binlog_dir}/${binlog}.gz
    mysql -u${MY_user} -p${MY_pass} -P${MY_port} -e "flush logs;" 2> /dev/null
;;
*)
    echo "ERROR: Usage: mysqlbak [ Full | db | increment ]"
;;
esac
#if [[ $# -eq 0 ]];then
#   echo "Invalid paramete;Full | db | increment"   
#fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章