線上mysql數(shù)據(jù)庫備份

#!/bin/bash
#=============================================================================
# FileName: MySQLBackup.sh
# Desc: MySQL Databases backup tool.
# Author: chenzm
# Email:969113439@qq.com
# HomePage: http://chenzm0592.blog.51cto.com/
# Version: 0.0.1
# LastChange: 2013-11-15 09:16:39
# History:
#=============================================================================

cd /opt/MySQLBackup
. /etc/profile

USERNAME='root'
PASSWORD='password'

U_ID=0
G_ID=

# 設置mysqldump參數(shù)
MYSQLDUMP="mysqldump --opt --default-character-set=utf8 --skip-lock-tables -C"

# 設置壓縮參數(shù) 從stdin讀取
COMPRESS="gzip -9"

# 設置壓縮文件的后綴名, 請與壓縮參數(shù)相對應
COMPRESS_EXT="gz"

DATE=$(date +%Y-%m-%d)
mkdir -p logs/

# 定義日志輸入
function log() {
    #echo -ne ${1}
    echo -ne ${1} >>logs/backup-${DATE}.log
}

# 計算字符時,分, 秒
function charDate() {
    DATE=$1
    if [ ${DATE} -lt 60  ]; then
        echo "${DATE}秒"
    elif [ ${DATE} -ge 60 ] && [ ${DATE} -lt 3600 ]; then
        echo "$((DATE/60))分$((DATE%60))秒"
    else
        M=$((DATE%3600))
        echo "$((DATE/3600))小時$((M/60))分$((M%60))秒"
    fi
}

TIME_HOST_START=$(date +%s)
retry=0
while :
do
    data=$(mysql -u${USERNAME} -p${PASSWORD} -h IP -e 'SHOW DATABASES' 2>&1)
    if [ $? == 0 ]; then
        break
    elif [ ${retry} -ge 5 ]; then
        log "連接到數(shù)據(jù)庫失敗...退出.\n"
        exit 1
    fi
    ((retry++))
done

DBS=$(echo ${data} | awk 'BEGIN{split("test|information_schema",arr,"|"); for (i in arr) b[arr[i]]} END{for(i=2;i<=NF;i++) if($i in b==0) print $i}')
DB_TOTAL=$(echo ${DBS} | awk '{print NF}')

log "總計數(shù)據(jù)庫數(shù)量: ${DB_TOTAL}\n"
log "正在備份,請稍后....\n"

mkdir -p /databak/IP/db/${DATE}
for DB in ${DBS}
do
    TIME_DB_START=$(date +%s)
    log "正在導出: ${DB}..."
    ${MYSQLDUMP} -u${USERNAME} -p${PASSWORD} -h IP ${DB} 2>>logs/error.log | ${COMPRESS} > /databak/IP/db/${DATE}/${DB}.sql.${COMPRESS_EXT}

    # 使用$PIPESTATUS獲取管道之前的exit status
    if [ ${PIPESTATUS[0]} != 0  ]; then
        log "失敗"
    else
        ((OK++))
        log "成功"
    fi
    TIME_DB_END=$(date +%s)
    ELAPSED=$((TIME_DB_END - TIME_DB_START))
    log " - 耗時: $(charDate ${ELAPSED})\n"
done
#chown -R ${U_ID}:${G_ID} /db/ip/${DATE}

TIME_HOST_END=$(date +%s)
ELAPSED=$((TIME_HOST_END - TIME_HOST_START))
log "總計: ${DB_TOTAL} 成功: ${OK} 失敗: $((DB_TOTAL-OK)) - 耗時: $(charDate ${ELAPSED})\n"
log "$(printf '%30s\n' | tr ' ' -) $(date "+%Y-%m-%d %H:%M:%S") $(printf '%30s\n' | tr ' ' -)\n"
                                                                                           

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站制作、網(wǎng)站建設與策劃設計,靖遠網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設十余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:靖遠等地區(qū)。靖遠做網(wǎng)站價格咨詢:18980820575

本文名稱:線上mysql數(shù)據(jù)庫備份
標題網(wǎng)址:http://muchs.cn/article34/ijdsse.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站制作、域名注冊定制開發(fā)、企業(yè)網(wǎng)站制作靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設