← Back to team overview

maria-developers team mailing list archive

Re: Contributing in Support for GTID in mysqlbinlog for GSoC'15


Rohit Kashyap <rkgudboy@xxxxxxxxx> writes:

> I am Rohit Kashyap, I am currently working on MDEV-7569
> and recently came over to your post on Support for GTID in mysqlbinlog
> [MDEV-4989]
> I would like to ask you for guidance and leads on this so that I can
> take it up as my GSoC'15 Project under MariaDB.

So I took a quick look at what mysqlbinlog currently supports, and how it
could be extended to GTID. Looks like it's actually pretty clear:

 - The --start-position and --stop-position options should be able to take
   GTID positions; or maybe there should be new --start-gtid and --stop-gtid
   options. Like "--start-gtid=0-1-100,1-2-200,2-1-1000".

 - A GTID position means the point just _after_ that GTID. So starting from
   GTID 0-1-100 and stopping at GTID 0-1-200, the first GTID output will
   probably be 0-1-101 and the last one 0-1-200. Note that if some domain is
   not specified in the position, it means to start from the begining,
   respectively stop immediately in that domain.

 - Starting and stopping GTID should work both with local files, and with
   --read-from-remote-server. For the latter, there are a couple of extra
   things that need doing in the master-slave protocol, see
   get_master_version_and_clock() in sql/slave.cc.

 - At the end of the dump, put these statements as discussed in the bug:
   SET session.server_id = @@global.server_id,

Probably some more things will come up during the work, but this looks like a
reasonable start.

I would recommend to start by reading the GTID documentation, and
experimenting with all the relevant features described there, to familiarise
yourself with it. The main thing is to understand the concept of GTID position
and binlog order, and the relation to replication domains:


And similarly, familiarise yourself with mysqlbinlog and how it would make
sense for it to be extended to support GTID.

Then make a detailed proposal for how the user-visible interface of
mysqlbinlog should be extended, and send it to the list for comments.

The next step will be to understand the concept of binlog state
(@@gtid_binlog_state), and how it is used to deal correctly with out-of-order
GTID sequence numbers in binlogs. This is mostly an internal implementation
detail, but necessary to be able to correctly identify starting and stopping
GTID positions in all cases.

Hope this helps,

 - Kristian.

Follow ups