ITPub博客

首页 > 数据库 > MySQL > 课时7-备份与恢复----从dump文件中找出单个表的信息

课时7-备份与恢复----从dump文件中找出单个表的信息

原创 MySQL 作者:小亮520cl 时间:2015-11-24 10:11:55 0 删除 编辑
获取单表:
原文地址
https://blog.tsheets.com/2008/tips-tricks/extract-a-single-table-from-a-mysqldump-file


法1:perl extract_sql.pl -t mytable -r mydumpfile > mytable.sql
法2:cat test1db.sql | sed -n '/Table structure for table .test1./,/Table structure for table .test2./p'>/tmp/xxx.sql   ----打印test1与test2之间的内容
法3:awk '/Table structure for table .test1./,/Table structure for table .test2./{print}' test1db.sql    ----打印test1与test2之间的内容


获取多表:

使用tbdba-restore-mysqldump.pl切割mysqldump文件



  1. 这里介绍一个最近用得很多的一个小工具:tbdba-restore-mysqldump.pl

    主要有两个功能:

    (1) 尽可能快的从一个非常大的mysqldump文件的分离出某个单表的备份文件

    (2) 可以帮你把一个大的mysqldump文件,切割成非常小的单表备份文件(可继续做并行恢复)

    1. 什么时候需要这么做

    (1) 如果把MySQL中某一个表数据弄丢了,需要从很大的mysqldump备份文件中恢复这个表

    (2) 如果你想并行恢复整个mysqldump备份文件时,这个脚本可以帮你把大文件切割成多个小的单表备份文件,然后就可以方便并行恢复多个文件了

    2. 如何使用这个脚本

    这里以实例的方式介绍如何使用该脚本:

    (1) 从backup.sql文件中获取表process的备份:

    tbdba-restore-mysqldump.pl -t process -f backup.sql

    (2) 从backup.sql文件中获取数据库monitor中的表process的备份:

    tbdba-restore-mysqldump.pl -t process -s monitor -f backup.sql

    (3) 从backup.sql文件中获取多个表的备份文件(例如表process、users):

    tbdba-restore-mysqldump.pl -t process,user -s monitor -f backup.sql

    (4) 直接接收来自管道的输出(如果你的mysqldump备份是压缩后,则可以使用):

    gunzip -c backup.sql.gz|tbdba-restore-mysqldump.pl -t process,user -s monitor

    (5) 从backup.sql文件中获取数据库monitor下所有表的备份文件:

    gunzip -c backup.sql.gz|tbdba-restore-mysqldump.pl -s monitor

    (6) 从backup.sql文件中获取所有数据库下所有表的备份文件:

    gunzip -c backup.sql.gz|tbdba-restore-mysqldump.pl --all-tables

    (7) 使用-d参数,则可以看到切割的过程中的更多信息:

    date && gunzip -c /backdir/backup.sql.gz|tbdba-restore-mysqldump.pl -d -a && date
    3. tbdba-restore-mysqldump.pl有什么优势

    (1) 如果指定了-s(获取某个数据库中的备份)参数,则脚本在成功截取需要恢复的后就会立刻退出,所以如果你要恢复的表恰好在备份文件的比较靠前的位置时,该脚本的速度会非常快。

    一个实际工作例子:

    $ls -lh backup.sql.gz
    -rw-r--r-- 1 mysql dba 14G Nov 21 04:49 backup.sql.gz
    $date && gunzip -c backup.sql.gz|./tbdba-restore-mysqldump.pl -s monitor_general -t monitor_host_info && date
    Fri Nov 25 14:35:06 CST 2011
    Fri Nov 25 14:46:49 CST 2011
    (the unzip of backup.sql.gz is 88G)

    如果要全量恢复的话,根据经验值:88GB的sql文件完全恢复约需要400分钟(经验值)。

    (2) 为了让每个独立的单表备份文件能够准确恢复,脚本做了两个额外的处理工作:在每个单表备份前加上'use db',让该表能够恢复到正确的数据库;为了让单表恢复时字符集不出错误,脚本在某个单表备份前加上了对应的SET NAMES utf8、SET TIME_ZONE等命令。

脚本链接http://pan.baidu.com/s/1hrKMH5U


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-1845115/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
毕业以后专业任职数据库工程师职位,itpub一直作为自己的笔记记录的地方,blog写的不详细,草书笔记,仅供参考!

注册时间:2013-09-12

  • 博文量
    530
  • 访问量
    971376