Friday, 20 May 2011

Mydumper now with MyISAM consistent snapshots!

Mydumper 0.2.2 has been released today with a number of fixes and new features.  The one that most people have been asking for is consistent snapshots for non-InnoDB tables (such as MyISAM).  We have been able to achieve this without locking the database for the entire backup using the following method:

  1. Flush tables with read lock (and start transaction with consistent snapshot on all threads)

  2. Dump non-InnoDB

  3. Start InnoDB dump

  4. When non-InnoDB dump has finished (whilst InnoDB is dumping) unlock tables

  5. ...

  6. Profit

I have also started work on Drizzle support this week.  The Drizzle support is not entirely complete mostly down to Drizzle's handling of SHOW TABLE STATUS and I expect to have it fully working next week.

Here is the list of changes since 0.2.1:

  • Consistent snapshots for non-InnoDB (non-transactional) tables

  • Fix --binlogs breaking consistent snapshots

  • (very) Minor performance improvement to mydumper

  • Initial support for Drizzle

  • Add --verbose option

  • Fix multiple ';' at end of file

  • Fix myloader not closing files

  • Improve myloader error messages

  • Several fixes to documentation building

  • Make myloader tell mysqld to not binlog imports by default (new option --enable-binlog to log them)

  • Add --database to myloader for single database import to a different database

  • Change mydumper's --schemas to --no-schemas (--schemas is now default)

  • Add verbose messages (with --verbose=3)

  • Fix memory leaks in myloader

You can download mydumper 0.2.2 from Launchpad or by clicking here.

Many thanks to everyone who has been testing mydumper and giving feedback.  Your comments and suggestions go a long way to improving mydumper.

1 comment: