Linux 下 MySQL 自動備份腳本 原

源碼 mysqlDump.sh

#!/bin/bash
################################################
# TODO: 備份當前服務器上指定的數據庫(多個庫,以 , 分隔)
# 示例:
#       ./mysqlDump.sh 備份默認設置的數據庫
#       ./mysqlDump.sh db_name1,db_name2,... 備份指定名稱的數據庫
#
# Author: whoru.S.Q <[email protected]>
# Version: 1.0
################################################

# 數據庫連接參數
DB_HOST="127.0.0.1"
DB_USER="root"
DB_PWD=""
DB_PORT="3306"

# 待備份的數據庫名稱,多個庫時以 , 分隔
DB_NAME=

# 備份文件路徑
DUMP_FILE_PATH=/opt/backup

function main {
    # 參數檢查
    # 如果當前腳本在執行時傳遞了參數,則優先級高於當前腳本文件中變量的默認設置
    if [ -n "$1" ]; then
        DB_NAME=$1
    else
        if [ ! "$DB_NAME" ]; then
            read -p "請輸入要備份的數據庫名稱:" dbname
            DB_NAME=$dbname
        fi
    fi
	
    # 檢查備份目錄是否存在
    if [ ! -d "$DUMP_FILE_PATH" ]; then
        mkdir -p $DUMP_FILE_PATH
        if [ "$?" -ne "0" ]; then
            echo -en "無法創建備份文件目錄:$DUMP_FILE_PATH"
            exit 1
        fi
    fi
	
    # 操作開始
    OLD_IFS="$IFS"
    IFS=","
    arr=($DB_NAME)
    IFS="$OLD_IFS"
    for db in ${arr[@]}
    do
        # echo "$db"
        doDump $db
    done
}

function doDump {

    echo -en "\n\033[32m==>\033[0m 開始備份數據庫:$1\n"

    dump_date=`date +%Y%m%d%H%M%S`
    dump_file=$1"_"$dump_date".sql"
    final_dump_file=$dump_file".tar.gz"

    # 備份
    # 考慮還原數據庫時的通用性,備份的同時不執行壓縮操作
    $(which mysqldump) -u$DB_USER -p$DB_PWD -P $DB_PORT $DB_NAME > $dump_file
    if [ "$?" -ne "0" ]; then
        echo -en "操作失敗"
        exit 1
    fi

    # 壓縮、轉移備份的文件
    tar -zcvf $final_dump_file $dump_file
    mv $final_dump_file $DUMP_FILE_PATH
    rm -rf $dump_file

    echo -en "\n\033[32m==>\033[0m 備份完成,生成備份文件:$DUMP_FILE_PATH/$final_dump_file\n"
}

# 運行
main $1

使用說明

  1. 使用前先設置數據庫連接參數

  2. 設置待備份的數據庫名稱

    • 方式一:在腳本文件裏修改變量 DB_NAME
    • 方式二:運行腳本時動態傳參,如 ./mysqlDump.sh db_name

    注意:腳本運行參數優先級高於腳本文件中的設置;待備份的數據庫名稱支持多個,以 , 分隔。

示例

[root@local wwwroot]# ./mysqlDump.sh online_v3.0

==> 開始備份數據庫:online_v3.0
Warning: Using a password on the command line interface can be insecure.
online_v3.0_20181012164400.sql

==> 備份完成,生成備份文件:/opt/backup/online_v3.0_20181012164400.sql.tar.gz

更新:https://github.com/whorusq/linux-learning/blob/master/shell/mysqlDump.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章