Take a look at

I used this in the way Lorna Jane mentions, for DDL changes, only. This also runs nicely inside a Phing script.

This does not allow rollbacks, but does allow roll-forwards from the beginning.

Perhaps it is not unreasonable to dump data as XML or CSV, especially if all tables have timestamps.

I like the idea of example data, which can be used in PhpUnit testing