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