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