linux上進行指定數據庫的指定表備份和清空腳本


#mysql帳號
echo $1
#mysql密碼
echo $2mysql

#主機IP
MHOST="localhost"
#數據庫名
MDB="audit4"sql

#mysqldump  -uroot -p123456 --databases mydb1 > mydb1.bak;      
#將本地mysql服務器上的mydb1數據庫導出到本地的mydb1.bak文件中數據庫

#mysqldump -h192.168.1.1 -uroot -p123456 mydb tb1 > tb1.bak;                       
#將192.168.1.1主機上的mydb數據庫的tb1數據表導出到本地的tb1.bak文件中bash


#!/bin/bash
# MySQL數據庫的用戶名,可自定義
MYSQLDBUSERNAME=$1
# MySQL數據庫的密碼,可自定義
MYSQLDBPASSWORD=$2
# MySQL數據庫的安裝目錄,--prefix=$MYSQBASEDIR,可自定義
MYSQBASEDIR=/usr/local/mysql
# MYSQL是mysql命令的絕對路徑,可自定義
MYSQL=$MYSQBASEDIR/bin/mysql
# MYSQLDUMP是mysqldump命令的絕對路徑,可自定義
MYSQLDUMP=$MYSQBASEDIR/bin/mysqldump服務器

# BACKDIR是數據庫備份的存放地址,能夠自定義修改爲遠程地址
BACKDIR=/home/backup/logtables/
# 獲取當前時間,格式爲:年-月-日,用於生成以這種時間格式的目錄名稱
DATEFORMATTYPE1=$(date +%Y-%m-%d)
# 獲取當前時間,格式爲:年月日時分秒,用於生成以這種時間格式的文件名稱
DATEFORMATTYPE2=$(date +%Y%m%d%H%M%S)日誌

# 若是存在MYSQBASEDIR目錄,則將MYSQDATADIR設置爲$MYSQBASEDIR/data,具體是什麼路徑,就把data改爲什麼路徑,不然將MYSQBASEDIR設定爲/var/lib/mysql,可自定義
[ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR/data || MYSQDATADIR=/var/lib/mysql
# 若是mysql命令存在並可執行,則繼續,不然將MYSQL設定爲mysql,默認路徑下的mysql
[ -x $MYSQL ] || MYSQL=mysql
# 若是mysqldump命令存在並可執行,則繼續,不然將MYSQLDUMP設定爲mysqldump,默認路徑下的mysqldump
[ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump
# 若是不存在備份目錄則建立這個目錄
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}it

#若是存在則刪除該文件,防止屢次備份數據混亂
if [ -d ${BACKDIR}/${DATEFORMATTYPE1} ] io

    then  
        echo '存在目錄:'+ ${BACKDIR}/${DATEFORMATTYPE1} +',則進行刪除'
        rm -rf ${BACKDIR}/${DATEFORMATTYPE1}
fitable

[ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1}date


DBLIST="account_synchronization_log commonuser_operation_log error_log exception_log dictionarymanagement manager_operation_log registuser_log user_access_log"
 #開始備份表
 echo "日誌表數據備份開始..."
 
 for DBNAME in $DBLIST
    do
        echo $DBNAME
        ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD}  audit4 ${DBNAME} > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}.sql;  
        [ $? -eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed"
        # 等待3s,可自定義
        /bin/sleep 1
 done
 #備份表結束
 
 
 echo $(date +%Y-%m-%d %H%M%S)
 echo "日誌表數據備份完成,即將開始日誌表數據清空操做..."
 
 
 #開始清理表

  for DBNAME in $DBLIST
    do
        
        echo "Truncate $DBNAME table from $MDB database..."
        
        $MYSQL -u $MYSQLDBUSERNAME -p$MYSQLDBPASSWORD -h $MHOST $MDB -e "TRUNCATE TABLE  $DBNAME"
        
        [ $? -eq 0 ] && echo "${DBNAME} has been TRUNCATE successful" || echo "${DBNAME} has been TRUNCATE failed"
        # 等待3s,可自定義
        /bin/sleep 1
 done
 #清理表結束

 echo $(date +%Y-%m-%d %H%M%S)  echo "日誌表數據清空完成!"

相關文章
相關標籤/搜索