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