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
    评论
分库分表备份是一种将数据库中的数据按照一定规则分散存储在多个库和表中的备份方式。它可以通过将数据分散存储在多个库和表中,从而提高备份和恢复的效率。具体来说,分库分表备份可以降低数据迁移的时间的原因有以下几点: 1. 并行备份分库分表备份可以将数据分散存储在多个库和表中,这样在备份时可以同时备份多个库和表,实现并行备份。相比于单库备份分库分表备份可以同时备份更多的数据,从而提高备份的效率。 2. 减少备份数据量:分库分表备份可以将数据分散存储在多个库和表中,这样在备份时只需要备份需要备份的库和表,而不需要备份整个数据库。这样可以减少备份的数据量,从而降低备份的时间。 3. 灵活恢复:分库分表备份可以将数据分散存储在多个库和表中,这样在恢复时可以只恢复需要恢复的库和表,而不需要恢复整个数据库。这样可以灵活地进行数据恢复,提高恢复的效率。 总之,分库分表备份通过将数据分散存储在多个库和表中,实现并行备份、减少备份数据量和灵活恢复,从而降低数据迁移的时间。\[1\] #### 引用[.reference_title] - *1* *3* [MySQL分表备份方案(后附一键迁移脚本,经验证安全可用!!)](https://blog.csdn.net/ArrogantB/article/details/125988416)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MySQL分库,分表备份的思路和方法](https://blog.csdn.net/weixin_34293141/article/details/91499745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值