博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux上进行指定数据库的指定表备份和清空脚本
阅读量:7120 次
发布时间:2019-06-28

本文共 2444 字,大约阅读时间需要 8 分钟。

hot3.png

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

转载于:https://my.oschina.net/u/2413597/blog/1607322

你可能感兴趣的文章
mysql中的事物处理
查看>>
Android 车联网天气
查看>>
POJ 2430 状压DP
查看>>
C++Primer第5版学习笔记(三)
查看>>
Centos7系统介绍
查看>>
GIT简单实用
查看>>
Sonar - 部署常见问题及解决方法
查看>>
IOS 学习笔记(3) 视图UITabbarController
查看>>
java基础知识(一)
查看>>
(转)Linux传输大文件(分割传输)
查看>>
1003. 我要通过!(20)
查看>>
phpstudy for linux版环境安装
查看>>
MinGW GCC 7.1.0 2017年6月份出炉啦
查看>>
二叉树的实现(Java语言描述)
查看>>
Json Datable Convert
查看>>
微信小程序制作-随笔4
查看>>
adt 22.6出现的问题
查看>>
Struts2(补充)
查看>>
Linux文件系统的目录结构详解
查看>>
MySQL server PID file could not be found!
查看>>