http://qs1969.pair.com?node_id=724057


in reply to Re: Read a mysql .MYD file without a working .MYI file?
in thread Read a mysql .MYD file without a working .MYI file?

I looked at the docs, yes, and I've tried various repairs. There are numerous errors about bad links going outside the data file (these occur as the .MYD file is being regenerated). The killer errors come up during the rebuilding of the index:
| itrade_new.offers | repair | info | Found link that points at 82 +43107105727870068 (outside data file) at 42211469888 | | itrade_new.offers | repair | info | Found link that points at 82 +43107105727870068 (outside data file) at 42211469944 | | itrade_new.offers | repair | info | Found link that points at 82 +43107105727870068 (outside data file) at 42211470004 | | itrade_new.offers | repair | info | Found link that points at 44 +71241038974708841 (outside data file) at 42211470120 | | itrade_new.offers | repair | info | Found link that points at 44 +71296179294533182 (outside data file) at 42211470284 | | itrade_new.offers | repair | info | Found link that points at 83 +67816172579929378 (outside data file) at 42211470300 | | itrade_new.offers | repair | info | Found link that points at 33 +42363012281692769 (outside data file) at 42211470900 | | itrade_new.offers | repair | info | Found link that points at 44 +71433271728779990 (outside data file) at 42211470952 | | itrade_new.offers | repair | info | Found link that points at 73 +7591309940387956 (outside data file) at 42211471032 | | itrade_new.offers | repair | info | Found link that points at 44 +71296179294533182 (outside data file) at 42211471756 | | itrade_new.offers | repair | info | Found link that points at 10 +612976429166 (outside data file) at 42211471860 | | itrade_new.offers | repair | info | Found link that points at 78 +10403350942084128 (outside data file) at 42211471872 | | itrade_new.offers | repair | info | Found link that points at 71 +64208255722136163 (outside data file) at 42211472196 | | itrade_new.offers | repair | info | Found link that points at 82 +43107105727870068 (outside data file) at 42211472360 | | itrade_new.offers | repair | error | sort_buffer_size is to small + | | itrade_new.offers | repair | error | Can't copy datafile-header t +o tempfile, error 9 | | itrade_new.offers | repair | status | Operation failed
That "sort_buffer_size" error comes up even when I set that value to 4G (the max value permitted). I haven't found much helpful information concerning "Can't copy datafile-header to tempfile, error 9".

Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
Nos autem praedicamus Christum crucifixum (1 Cor. 1:23) - The Cross Reference (My Blog)

Replies are listed 'Best First'.
Re^3: Read a mysql .MYD file without a working .MYI file?
by converter (Priest) on Nov 17, 2008 at 15:35 UTC
    Have you run fsck to make sure your filesystem isn't hosed? Never hurts to be paranoid.
      Good idea, I suppose. Can I do that while the system is being used, though? This box holds some other databases, including the temporary table set up while this particular table is giving me woe.

      Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
      Nos autem praedicamus Christum crucifixum (1 Cor. 1:23) - The Cross Reference (My Blog)
        You should probably unmount the partition before running fsck against it. You can either drop to single user mode or boot from a rescue CD if you want to fsck all the partitions, including the root partition.
Re^3: Read a mysql .MYD file without a working .MYI file?
by Gilimanjaro (Hermit) on Nov 18, 2008 at 01:32 UTC

    REPAIR TABLE rebuilds the entire table and index, so you'll need to have enough diskspace. The error 9 is probably mysql running out of space during the rebuild. You won't notice it after because it discards the temp files.

    You'll need table size + index size + extra to do a full repair. Also, because mysql doesn't run as root, you won't have your entire disk available for the repair (if you're running Linux on ext2 or ext3) because of the reserved blocks. Check tune2fs's manpage for more info on those...

    I've worked with 80Gb+ tables more then I care for, and have run into this sort of issue way too often...

      Oh, I have the space. I also made a copy of the temporary file (.TMD or whatever). But actually, good news: I repaired it from the command-line using myisamchk --safe-repair and it worked.

      Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
      Nos autem praedicamus Christum crucifixum (1 Cor. 1:23) - The Cross Reference (My Blog)
        I had a similar issue where the .MYI file ended up on a bad block on disk. For me, I had similar tables and just moved the old .MYI to another name, then copied the .MYI from another table into its place. Then I ran REPAIR table db.table extended in the mysql client. Problem solved.