Hi Philip,
I thought of another test of group commit that ought to be done (not sure
why
I didn't think to mention this earlier, sorry about that). It's not
urgent,
just something for the list.
The test is basically the same you already did for non-blocking `mysqldump
--master-data --single-transaction` used to provision a slave, but using
XtraBackup instead of mysqldump.
From what I could learn, the original reason that InnoDB added the mutex
that
kills group commit when binlog is enabled is the following: To ensure that
commit order in the InnoDB transaction log is the same as in the binlog.
This
is needed when XtraBackup (innobackup really, but they work the same and
XtraBackup is Free Software) takes a non-blocking backup of the InnoDB
data
(only), and this is used to provision a new slave. If commit order was
different, there might not be any binlog position on the master
corresponding
to the backup snapshot used to setup the new slave.
Now, my group commit work also guarantees consistent commit order, but
using a
completely different method that does not kill group commit. So we ought
to
test this.
So the test would be similar to your existing mysqldump test. But while
the
master is running, we would use non-blocking XtraBackup to take a
snapshot. This snapshot we would then restore onto a new slave. The slave
would then be configured with CHANGE MASTER TO, I believe one gets the
correct
binlog position to start from in the log file of XtraDB and/or slave
mysqld (I
need to check up on details). Then the test proceeds as the mysqldump
case,
letting the slave catch up and checking that replication is ok etc.
What do you think?
Now, to do this we would need to be able to use XtraBackup. I am wondering
if
it wouldn't make sense to at the same time include XtraBackup into
MariaDB?
XtraBackup seems to me quite mature already, and a very good product
besides. It is arguably long overdue for us to include it.
So if we include XtraBackup in mariadb-5.2-rpl (/5.3), I think this should
be
possible to setup without too much trouble (I can provide specific
details/scripts for how to actually run XtraBackup and setup slave start
position, I just need to research that a bit).
Or we could also do the test first with XtraBackup as external, shouldn't
be
much harder, and would give us some experience with it.
What do you think? Maybe we can look at it in more detail in Lisbon.
- Kristian.