mysql全量备份的sql文件,可以恢复到具体某一个时间点以及单张表啊?
今天凌晨3点备份的mysql20101221030000.sql。
1, 单独恢复csf库到昨天下午13:15:00的数据。2,单独恢复csf库下面的csf_put表到昨天上午13:05:00时的数据。大家有什么方案没有啊,谢谢了!

解决方案 »

  1.   

    没有binlog是还原不了的,要想还原到昨天下午13:15:00 需要昨天该时间前的全备和全备之后的binlog日志.才能定点还原.
      

  2.   

    不能!
    全备只不过是你做备份时间点的一个“快照”你的这种需求只能通过增备的文件(BINLOG)来实现。1, 单独恢复csf库到昨天下午13:15:00的数据。
    找到 昨天下午13:15:00 之前的最新的备份,比如  昨天凌晨3点, 然后再通过BINLOG进行恢复,恢复中你可以MYSQLBINLOG --DATABASE来仅导出你需要的数据库 csf库 的SQL语句。2,单独恢复csf库下面的csf_put表到昨天上午13:05:00时的数据。
    “昨天上午13:05:00” 这是什么时候?!基本同第一条,对单表,你需要自己手工在导出的SQL语句中进行筛选。更常见的做法,先恢复全数据库CSF到另一个空的临时数据库中,然后再把其中的表csf_put导出。
      

  3.   

    那就拿昨天凌晨3点全备恢复,再用该备份后的binlog 按狼头大哥说的这样还原就可以了.还原单表的话,则需要自己手动筛选找出相应操作的sql语句.
      

  4.   


    我的是myisam存储引擎,也可以这样恢复吗?
      

  5.   

    可以.myisam,innodb存储引起都可以用该方法.
      

  6.   


    [root@ldap-mysql-svn-trac var]# /usr/local/mysql/bin/mysqlbinlog --stop-date="2010-12-20 13:15:00" mysql-bin.000006|mysql -uroot -p123456;
    ERROR 1051 (42S02) at line 32: Unknown table 'fin_cell_attr_his'我这样恢复报错,怎么办?这个'fin_cell_attr_his'表是历史数据表,没有用,我删除掉了。我的存储引擎是myisam,现在如何办?
      

  7.   

    1,要么你手动创建该表,完成恢复后再删除;
    2,用下该参数:         --force-read,-f
    使用该选项,如果mysqlbinlog读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果mysqlbinlog读到此类事件则停止。
      

  8.   


    第一种办法我试过了,命令没有报错,但是恢复不了别的表的truncate数据了!
      

  9.   

    那就说明你这个时刻的binlog没有 别的表的 记录呗.
      

  10.   


    但是我的表是这个时候truncate的啊!
      

  11.   

    mysqlbinlog --stop-date="2010-12-20 13:15:00" mysql-bin.000006 > .txt里面看看.是不是正确的.
    要是大的话,你修改时间来还原:比如2010-12-20 13:15:00 改成2010-12-20 13:00:00 ...看看别的表的数据有没有恢复.
    还原的方法是这样,
    你仔细检查下.