← Back to team overview

drizzle-discuss team mailing list archive

Re: VOTE PLEASE - Drizzle Replication - Group ID vs. Global Transaction ID

 

On Wed, Dec 23, 2009 at 7:16 AM, Jay Pipes <Jay.Pipes@xxxxxxx> wrote:
> Hi all,
>
> I'd like to get some consensus votes to solidify the terminology around
> something that is soon to hit Drizzle's replication system:
>
> A way to uniquely identify a specific Transaction in a global replication
> environment.
>
> There are two different sets of terms in use regarding the above
> functionality, and I'd like to be able to settle on one set or the other.
>
> Indeed, if one looks at Google's implementation of the above functionality
> for MySQL 5.0, the terms "group id" and "global transaction ID" seem to be
> freely intermingled.  Even the URL and title of the Google FAQ on the
> subject/patch have contradicting terms!:

Inconsistent is not the same thing as contradicting. The popular term
for the feature has been 'global transaction IDs'. As briefly
described in the wiki there are things other then transactions that
advance the counter. MySQL uses 'groups' to describe this and is
likely to do the same when they implement the feature. So it might be
best to standardize on 'group ID'.

>
> http://code.google.com/p/google-mysql-tools/wiki/GlobalTransactionIds
>
> Note the URL says "Global Transaction IDs" and the page title says "Global
> Group IDs".  Very confusing to me.  Anyone else?
>
> I'd like to settle this confusion and just start referring to this
> functionality by a single term: "Group ID"
>
> The reason is that the group ID is actually *not* a global identifier. The
> global identifier is actually the server ID *plus* the group ID, and
> therefore referring to the group ID as the global transaction ID is a bit of
> a misnomer.

Why is it not a global identifier?

It is a global identifier according to how it is used. The scope in
which it must be unique is the set of servers (only one at a time)
that are the master for a set of mysql schemas/databases. Assuming
infinite archiving of binlogs, the slave can ask the current master
for the mapping from global group ID to a binlog filename/offset
regardless of whether that group ID originated on the current master
or a previous master. The server ID is not needed to perform that.

>
> I would like to change the TransactionContext message format from this:
>
> message TransactionContext
> {
>  required uint32 server_id = 1; /* Unique identifier of a server */
>  required uint64 transaction_id = 2;/*Globally-unique transaction ID */
>  required uint64 start_timestamp = 3;
>  required uint64 end_timestamp = 4;
> }
>
> to this:
>
> message TransactionContext
> {
>  required uint32 server_id = 1; /* Unique identifier of a server */
>  required uint64 group_id = 2;/* Unique ID of trx on this server */
>  required uint64 start_timestamp = 3;
>  required uint64 end_timestamp = 4;
> }
>
> Please let me know if this is OK with folks.  Thanks!
>
> Jay
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~drizzle-discuss
> Post to     : drizzle-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~drizzle-discuss
> More help   : https://help.launchpad.net/ListHelp
>



-- 
Mark Callaghan
mdcallag@xxxxxxxxx



References