mysql使用全量备份文件进行单表数据还原

场景

现误删某一张表的数据,手上有一个数据库整库备份。备份内容为文本格式。

文本格式备份:包含了数据库的所有表、‌字段和数据的SQL语句。‌

问题

理论上是可以整库还原,但是备份文件又非常大,执行比较耗时。文本格式的备份导出的是DDL语句和insert语句,有没有办法只做单表还原。

文件已经9G了

[root@cs temp]# ll --block-size=M
-rw-r--r-- 1 root root 9932M Apr 12 10:15 xt_2024040201.sql

方案

在linux上拆分备份文件,只把需要还原的数据拿出来,然后在执行备份语句。

第一步:

 在linux上将单表数据过滤出来(例如:表名为test输出到test_data.sql)

grep "INSERT INTO \`test\` VALUES" xt_2024040201.sql > test_data.sql

 第二步:

 使用mysql命令进行导入(root:用户名,mrk为库名,tmp后面是第一步输出的文件)

mysql -uroot -p --verbose mrk < /tmp/test_data.sql

 回车后输入密码即可。

 总结:

   熟练了一个命令就ok,只是本人一般比较保守。

sed -n '/CREATE TABLE `test`/,/UNLOCK TABLES;/p' /tmp/text_data.sql | mysql -u root -p mrk

 (包含DDL语句,从CREATE TABLE `text`开始,到UNLOCK TABLES结束导入到mrk库)       

本次算是一个小窍门,分享下。数据库操作还是谨慎些,及时备份。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mrk_java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值