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

本文介绍了一个用于一键备份MySQL数据库所有表的Shell脚本。通过简单的配置,如数据库地址、用户名、密码等信息,即可实现对指定数据库下所有数据表的备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#!/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导出到指定文件中。

 

 

 

 

使用shell脚本查询数据库表,你可以通过以下步骤来实现: 1. 使用mysql命令连接到数据库。你可以使用以下命令来连接到数据库: ``` mysql -h 主机名 -u 用户名 -p 密码 数据库名 ``` 其中,主机名是数据库所在的主机地址,用户名和密码是用于登录数据库的凭据,数据库名是你要查询的数据库的名称。 2. 编写SQL查询语句。在连接到数据库后,你可以编写SQL查询语句来查询表中的数据。例如,要查询名为"表名"的表中的所有数据,你可以使用以下语句: ``` SELECT * FROM 表名; ``` 通过修改"表名"为你要查询的表的名称,你可以查询该表中的所有数据。 3. 将查询结果保存到变量中。使用shell脚本的变量来保存查询结果。你可以使用以下命令将查询结果保存到变量中: ``` result=$(mysql -h 主机名 -u 用户名 -p 密码 -D 数据库名 -s -N -e "SELECT * FROM 表名;") ``` 在这个命令中,通过将查询语句放在双引号中,你可以将查询结果保存到名为"result"的变量中。 4. 处理查询结果。你可以使用shell脚本的字符串处理函数来处理查询结果。例如,你可以使用"cut"命令来提取特定列的数据,使用"grep"命令来过滤特定条件的数据等等。根据你的需求,使用适当的命令来处理查询结果。 通过以上步骤,你可以使用shell脚本查询数据库表并对查询结果进行处理。请根据你的具体需求和情况进行相应的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [shell脚本进行数据库查询(分库分表)](https://blog.youkuaiyun.com/jiange_zh/article/details/78154119)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【shell脚本批量查询数据库数据】](https://blog.youkuaiyun.com/qq_42065917/article/details/125488510)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值