shell脚本备份mysql数据表(分表备份)

    有时候不仅需要备份指定的数据表,还需要备份数据库中的所有数据表,直接上代码。

#!/bin/bash
HOST=127.0.0.1         #ip地址
USER=LGL               #数据库用户名
PASSWORD=123           #数据库密码
DATABASE=backup        #数据库名字
BACKUP_PATH=/home/lgl/bkdata           #备份路径
logfile=/home/lgl/bkdata/data.log      #日志路径
 
DATE=`date '+%Y%m%d'`    #当前日期

#如果不存在该目录,就创建
if [ ! -d $BACKUP_PATH ]
then
mkdir -p "$BACKUP_PATH"
fi

#连接mysql数据库
mysql -h $HOST -u $USER -p$PASSWORD -s $DATABASE <<EOF
drop table if exists a;
create table a (
id int(10) not null,
name varchar(10) not null
);
insert into a values(2016,'LiuBei');
insert into a values(2017,'GuanYu');
insert into a values(2018,'ZhangFei');
 
drop table if exists b;
create table b (
id int(10) not null,
name varchar(10) not null
);
insert into b values(2019,'CaoCao');
insert into b values(2020,'ZhangLiao');
insert into b values(2021,'XuChu');
EOF
if [ $? -ne 0 ]
then
echo "Init data fail!">>$logfile
exit 4
fi
echo "Init data Successful!">>$logfile
 
#进入到备份目录
cd $BACKUP_PATH
#遍历数据库中的数据表
for table in $DATABASE
do
#获取表名
table=$(mysql -h $HOST -u $USER -p$PASSWORD $DATABASE -e "show tables;"|sed '1d')
for tb in $table
do
DUMPNAME=""$tb"_"$DATE".sql" #备份文件名
mysqldump -h $HOST -u $USER -p$PASSWORD $DATABASE $tb> $DUMPNAME
if [ $? = 0 ] 
then
echo "$DUMPNAME backup Successful!">>$logfile
else
echo "$DUMPNAME backup fail!" >>$logfile
fi
done
done
if [ $? = 0 ] 
then
echo "backup all tables Successful">>$logfile
else
echo "backup all tables fail!">>$logfile
exit 4
 
fi

注意:在linux下运行./test.sh时,即使代码没错,可能也会报错误,因为格式不对,只需要执行 dos2unix test.sh即可。sed '1d'表示删除show tables时出现的第一行。即   Tables_in_backup 这一行。

用for循环来遍历出数据库下所有的数据表,依次使用mysqldump导出到指定文件中。

 

 

 

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值