闲着无聊,就测试一下mysql 二进制日志的恢复功能,我的数据库中的表有很多都是分区表,我发现在使用二进制日志恢复分区表的数据的时候mysqlbinlog不会报错,但是实际上数据没有恢复,但是我在普通表上(非分区表)测试发现mysqlbinlog正常工作,数据也能正常恢复,我想问下mysql二进制日志的恢复策略对分区表是否是无效的?

解决方案 »

  1.   

    分区对sql都是透明的 怎么可能不成功呢  mysqlbinlog导入的时候有报错吗
      

  2.   

    我测试的时候是这样的:     1、 我有一张分区表,使用alter table tablename drop partition 来删除一个分区,然后使mysqlbinlog
    来恢复数据,mysqlbinlog报错:Error in list of partitions to DROP,我通过手动创建删除的那一个分区,然后继续使用mysqlbinlog恢复,没有任何错误,但是分区表的数据没有恢复。      2、使用delete from tablename where id < xxx  来删除分区表的部分数据,然后使用mysqlbinlog来恢复数据,没有报错,但是数据依然没有恢复
      

  3.   

    我把表(这是一个分区表)的所有内容都删除了,通过delete from table删除,记录这个删除操作的二进制日志是一个单独的文件xxx.000003,mysqlbinlog /var/lib/mysql/xxx.000003 | mysql -uroot -p,没有报错,但是数据就是没有恢复。然后我用同样的步骤来操作一张非分区表,mysqlbinlog表现正常,而且能正常恢复数据,我的数据库版本是5.5 
      

  4.   


    我测试的时候发现无法对分区表进行数据恢复,对alter table xxx drop partition这样的操作还需要手动建立删除过的分区,无论怎样,数据就是不会恢复,但是对于非分区表,我的mysqlbinlog表现正常。我都弄了一天了,还是没有解决。