Mysql按表循环压缩备份

#!/bin/sh

#mysql定时备份处理文件
#---------------------------------

db_user=root

db_passwd=123456

db_host=127.0.0.1

database=test

#---------------------------------

#备份目录
backup_dir=/tmp

#备份时间
time=date +%Y%m%d%H%M%S

#mysql执行文件路径
MYSQL=/usr/local/mysql/bin/mysql

#mysqldump执行文件路径

MYSQLDUMP=/usr/local/mysql/bin/mysqldump

#mysql 备份压缩

GZIP=/bin/gzip

###所有表的文件信息
#
tables_file=${backup_dir}/tables.txt

####重新组合目录
#
real_backup_dir=${backup_dir}/date +%Y%m%d%H%M

###如果目录不存在,创建目录
[ ! -d "${real_backup_dir}" ] && mkdir -p ${real_backup_dir}

###导出当前数据库所有表
#
${MYSQL} -u${db_user} -p${db_passwd} -e "use ${database};show tables;" >${tables_file} 2>&1;

###删除第一行(自己查看文件,如果报错,自己删除)
/bin/sed -i '1d' ${tables_file}

####循环导出表
#

for table in $(cat ${tables_file})
do
    $MYSQLDUMP -u ${db_user} -p ${db_passwd} ${database} ${table} | $GZIP -9 > "${real_backup_dir}/${time}.${table}.gz" 2>&1
done

exit 0;

0 条评论