/opt/shells/bak_test_table.sh

#!/bin/bash
datastr=/nas/bakup/mysql_table
DBHost="mysql.host"
DB="test"
user="root"
password="123456"
port="3306"
backupstr=mysqlbak$(date +%Y%m%d%H%M)
#不备份表名,按最后一个下划线截取,匹配所有分表,如log_0 log_1
db_table_not_bak="log imei"

cd $datastr
mkdir $backupstr
cd $backupstr


#遍历表名称
#mysqldump  -h $DBHost  -u$user  -p$password   -P$port  --default-character-set=utf8 --single-transaction --master-data=2 -R -E -dt $db   >$db.sql
totalTABLE=$(mysql -N -h $DBHost -u$user -p$password -P$port <<EOF
use $DB;
show tables;
EOF
)

###IFS
OLD1_IFS="$IFS"
IFS=" "
arr1=($totalTABLE)
IFS="$OLD1_IFS"
mkdir -p $backupstr"/"$DB
for table in ${arr1[@]}
do 

    #table名称去掉最后一个下划线以后在$db_table_not_bak中
    if [[ $db_table_not_bak =~ ${table%_*} ]];then
        echo "不备份" $DB"."$table
    else
        echo $DB"."$table" dumping..."
        mysqldump  -h $DBHost  -u$user  -p$password   -P$port  --default-character-set=utf8 --single-transaction   $DB $table  >$backupstr"/"$DB"/"$DB.$table.sql
    fi
done

# 压缩为tgz
cd $datastr
tar zcvf $backupstr".tgz" $backupstr
if [ "0" -eq $? ];then
    rm -rf $backupstr
fi


crontab

#echo "00 */3 * * * /opt/shells/bak_test_table.sh" >> /var/spool/cron/crontabs/root
chmod +x /opt/shells/bak_test_table.sh
echo "30 */3 * * * /opt/shells/bak_test_table.sh" >> /var/spool/cron/root

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code