博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从mysqldump整库备份文件中恢复单表
阅读量:5277 次
发布时间:2019-06-14

本文共 1182 字,大约阅读时间需要 3 分钟。

最近,系统更新出现了问题,比较紧急,需要对三张表进行回档。由于我们都是采用mysqldump进行每天全备整库,数据量比较大,一个备份文件大概有70G,需要从这个70G文件中恢复三张表,真是蛋疼至极啊,搞了整整一个下午,下面就介绍下具体操作。

1、采用grep查找:由于mysqldump文件导出的是insert into ...values(),(),()...这种形式,其实多行都是属于一行文本的。

cat fullbk20151108031001 | grep --ignore-case  'insert into `t_user`' > user.sql

结果:15G大小的文件大概2小时之类能够搞定,但是对于70G的文件,迟迟没有结果,干着急啊,于是乎,就想换个命令吧。希望能快点

2、采用sed命令:

sed -n '/INSERT INTO `t_user_pve_ranking`/p' fullbk20151108031001

又等了好久,还是没有出结果啊,坐不住了,开发开始深深的鄙视我们了,最后,死马当活马医吧,把这个70G大文件切分成多个小文件,然后在小文件中进行sed:

3、采用split切分大文件方法:

    split [参数选项] infile [outfile]

  split 把输入的文件拆分为若干体积或长度相等的文件,输入文件保持不变,只是把结果拆分结果写到outfileaa、outfileab ... ... 等文件中。如果我们不指定outfile,被拆分后的文件会写到 xaa、xab ... ...。

    常用参数:

        -l n 把infile拆分为具有n行的段,默认值为1000

        -b n[bkm] 以体积为单位的拆分,约定每拆分后每个文件的大小 ,b代表512B,k代表1KB,m代表1MB。

       
-C bytes[bkm] 把bytes的最大值放入文件,坚持增加完整的行;
#按1000行一个文件进行切分,最好在后台运行 split -l 1000 fullbk20151108031001 &

然后在通过sed命令进行一个一个文件查找:

sed -n '/INSERT INTO `t_user_pve_ranking`/p' aaa
sed -n '/INSERT INTO `t_user_pve_ranking`/p' bbb ........

这样,每个小文件查找很快,这里可以写个shell脚本,循环遍历的。

最后通过这种方法找到了表。简直就是坑爹啊,我不知道还有其他更好的方式了,反正mysqldump备份大库恢复指定表很慢很慢的,强烈建议使用innobackupex,我测试了也就半个小时就可以搞定了。

转载于:https://www.cnblogs.com/mysql-dba/p/4958612.html

你可能感兴趣的文章
PuTTY 命令行改进 有效解决 中文乱码
查看>>
常用技巧—离散化
查看>>
percona-xtrabackup-8.0.7简单快捷使用
查看>>
达观数据CTO纪达麒:小标注数据量下自然语言处理实战经验
查看>>
SQL Serve里你总要去改变的3个配置选项
查看>>
线性规划实战—投资的收益和风险
查看>>
Golang 函数function
查看>>
flask的日志输出current_app.logger.debug
查看>>
js:自动亮起100盏灯
查看>>
httplib 和 httplib2区别之 gzip解压
查看>>
UVA1629 Cake slicing
查看>>
微信公众号开发入门---STATE 1:入门回复,菜单
查看>>
SSH学习(2)
查看>>
应用系统开发思想的变迁
查看>>
queue
查看>>
记录-- vue+element树节点的标注
查看>>
Inherits、CodeFile、CodeBehind
查看>>
使用Exceptionless记录日志
查看>>
Migration Necessary
查看>>
php第七节课
查看>>