← Back to team overview

maria-developers team mailing list archive

Testing group commit with XtraBackup


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.

Follow ups