qldump 备份所有表_如何从全部MySQL数据库转储文件导出中表备份

mysqldump是一个实用的为MySQL / MariaDB提供数据库和表备份的工具。一般来说,我们经常完整的保存数据库。有些时候,我们需要恢复单个或备份2-3表。那么,问题就是如果如何从完整备份文件还原特定表。本文将帮助你如何从完整数据库备份文件中恢复表备份。此外,我们也可以在单个文件中提取所有表备份/表。。

第1步:下载MySQL存储拆分的脚本

要拆分一个完整的mysqldump数据库备份文件,分离备份文件,备份特定的表。创建一个名为splitDB.sh文件,并复制下面的脚本。

#!/bin/bash

####

# Split MySQL dump SQL file into one file per table

# based on http://blog.tty.nl/2011/12/28/splitting-a-database-dump

####

if [ $# -lt 1 ] ; then

echo "USAGE $0 DUMP_FILE [TABLE]"

exit

fi

if [ $# -ge 2 ] ; then

csplit -s -ftable $1 "/-- Table structure for table/" "%-- Table structure for table `$2`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1"

else

csplit -s -ftable $1 "/-- Table structure for table/" {*}

fi

[ $? -eq 0 ] || exit

mv table00 head

FILE=`ls -1 table* | tail -n 1`

if [ $# -ge 2 ] ; then

mv $FILE foot

else

csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*}

mv ${FILE}1 foot

fi

for FILE in `ls -1 table*`; do

NAME=`head -n1 $FILE | cut -d$'x60' -f2`

cat head $FILE foot > "$NAME.sql"

done

rm head foot table*

这个脚本来源https://gist.github.com/jasny/1608062 。

第2步:从存储文件中提取所有的表

在这个例子中,有一个名为mydb.sql存储文件,我想单独备份每一个表。 为此,我创建了一个新目录/ opt / splitdb并且复制上面的脚本splitDB.sh到这个目录中。现在,使用下面的命令来提取备份文件中所有表,单独备份每一个表。

# cd /opt/splitdb

# sh splitDB.sh mydb.sql

第3步:从备份文件中恢复单个表

如果我们只想恢复一个表,我们可以使用命令如下图所示。比如我想要分割my_tbl1和my_tbl2两个表。 在当前目录中将会恢复出my_tbl1.sql和my_tbl2.sql备份。

# cd /opt/splitdb

# sh splitDB.sh mydb.sql my_tbl1

# sh splitDB.sh mydb.sql my_tbl2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值