#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 "日誌表數據清空完成!"