centos7编写shell脚本,使用mysqldump导出库数据并忽略指定库表

#我们在用mysqldump导出mysql的库数据时,库中有些表可能较大并且我们也不需要它。此时mysqldump命令的一个--ignore-table参数便派上了用场,它在导出库时可以跳过指定库表。

#centos7上亲测无问题,shell脚本内容如下:

#!/bin/bash

#变量定义部分

dbuser="root"   #mysql用户名

dbpassword="Test@320"  #mysql用户密码

db_ip_host="10.0.0.184"  #mysql服务所在ip或主机

database=("db1" "db2")  #定义mysql库的数组db1和db2

ignore_tb_db1=("table0" "table1" "table2")  #定义指定库db1要导出忽略的表

ignore_tb_db2=("table3" "table4" "table5")  #定义指定库db2要导出忽略的表

backup_dir=/root/sql_dump_dir  #定义导出sql文件的存放目录

#检查存放sql文件目录部分

cd && ls | grep -x 'sql_dump_dir' &>/dev/ull  #查看目录是否已创建

if [ $? -ne 0 ];then

   mkdir -p "${backup_dir}" &>/dev/null && echo "备份目录:$backup_dir 刚刚创建成功"  #if判断,没有目录的话创建目录

else

   echo "备份目录:$backup_dir 之前已创建"  #有目录无需创建

fi

#for循环遍历和导出部分

for db in "${database[@]}"  #for循环遍历库的数组

do

    ignore_tables=()  #定义空数组,存放导出时忽略的表

    if [ "$db" == "db1" ]; then  #判断是否是库db1

        for tb1 in "${ignore_tb_ab1[@]}" #遍历db1要忽略的表

        do

        ignore_tables+=("--ignore-table=${db}.${tb1}")  #追加到库数组中

        done

    else

        for tb2 in "${ignore_tb_db2[@]}"  #遍历db2要忽略的表

        do

            ignore_tables+=("--ignore-table=${db}.${tb2}")  #追加到数组中

        done

    fi

    output_file="${backup_dir}/${db}_$(date +%F_%H:%M:%S).sql"  #定义导出文件路径和文件名称,格式:库名称_时间.sql

    mysqldump -u"${dbuser}" -p"${dbpassword}" -h"${db_ip_host}" "${db}" "${ignore_tables[@]}" > "${output_file}" &>/dev/null && \

    echo "`date +%F_%H:%M:%S`-"${db}"数据备份成功"  #导出sql文件到指定路径下的指定文件并输出备份成功

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值