linux上进行指定数据库的指定表备份和清空脚本

原创
2018/01/15 15:03
阅读数 258


#mysql账号
echo $1
#mysql密码
echo $2

#主机IP
MHOST="localhost"
#数据库名
MDB="audit4"

#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文件中


#!/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}

#如果存在则删除该文件,防止多次备份数据混乱
if [ -d ${BACKDIR}/${DATEFORMATTYPE1} ] 

    then  
        echo '存在目录:'+ ${BACKDIR}/${DATEFORMATTYPE1} +',则进行删除'
        rm -rf ${BACKDIR}/${DATEFORMATTYPE1}
fi

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


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 "日志表数据清空完成!"

展开阅读全文
打赏
0
0 收藏
分享
加载中
yeqiang2015博主
自己搜索归纳,作为知识积累,有不足或有更好的办法的朋友请指点
2018/01/15 15:05
回复
举报
更多评论
打赏
1 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部