How can I force a MySQL table to become corrupted?

10,813

Solution 1

Generally you can't back up the databases by copying them from /var/lib/mysql and then copying them back because they get corrupted, you have to use mysqldump instead.

So if you go into one of the folders for the database in /var/lib/mysql, ie /var/lib/mysql/myDB/ and mess with some of the files that ought to do it :-)

So I would recommend copying one of the files, editing a little with a hex editor, and copying it back.

Solution 2

cat DB1.myd /dev/random > DB2.myd

Solution 3

You could use a fuzzing tool like zzuf to fuzz a preexisting database file, e.g.

zzuf < good.myd > fuzzed.myd

Solution 4

This should do it:

cat /dev/urandom > yourdb.myd

Solution 5

I'd suggest that a more realistic way to simulate fault would be to pull the rug out from beneath MySQL's feet while it's performing an intensive update. Issuing SIGKILL to the mysqld process should be sufficient. Chances are that when you restart MySQL the table(s) in question will be marked as crashed.

Alternatively I'd suggest applying other people's suggestions but to the .MYI indec file rather than the data file.

Share:
10,813

Related videos on Youtube

Araejay
Author by

Araejay

Updated on September 17, 2022

Comments

  • Araejay
    Araejay over 1 year

    I have written a simple Nagios plugin that calls mysqlcheck (which checks for corrupted tables) and will give a warning if any are corrupt.

    However none of my tables are corrupt now. So I'm not 100% sure that my plugin is working fine. I have a dev server that's not misson critical. How can I force one (or any) of the tables there to be corrupt so that I can test my nagios alert?

    For the record the server is Ubuntu Dapper and the mysql is version 5.0

    • Admin
      Admin over 14 years
      interesting.......
    • Admin
      Admin over 14 years
      Assuming they're MyISAM tables I'd imagine you could just open a window. A slight breaze should be enough to cause those ACID free tables to crash, tip over and catch fire ;)
  • Kyle Brandt
    Kyle Brandt over 14 years
    I like this one!
  • Araejay
    Araejay over 14 years
    Won't that keep pulling data from /dev/random until my harddisk fills up? :P
  • Matt Simmons
    Matt Simmons over 14 years
    Hey, you said corrupt, right? ;-)
  • Kyle Brandt
    Kyle Brandt over 14 years
    Rory, Ya, but just hit Ctrl-C at some point
  • Kyle Brandt
    Kyle Brandt over 14 years
    Rory, Or use head /dev/urandom, to a file and then cat those
  • Araejay
    Araejay over 14 years
    That will keep going till my harddisk fills up.