1. GTID = source_id:transaction_id
The source_id identifies the originating server
The transaction_id is a sequence number determined by the order in which the transaction was committed on this server
source_id 用来识别 transaction的<orginating server>
transaction_id 是一个 sequence number
3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5
a sequence of GTIDs originating from the same server may be collapsed into a single expression
gtid_set
uuid_set [, uuid_set] ...
uuid_set:
uuid:interval[:interval]...
uuid:
hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh
h:
[0-9|A-F]
interval:
n[-n]
(n>=1)
once a transaction with a given GTID is committed on a given server, any subsequent transaction having the same GTID is ignored by that server. Thus, a transaction committed on the master can be applied no more than once on the slave, which helps to guarantee consistency.
The generation and lifecycle of a GTID consists of the following steps:
-
a transaction is executed and committed on the master
his transaction is assigned a GTID using the master's UUID and the smallest nonzero transaction sequence number not yet used on this server; the GTID is written to the master's binary log (immediately preceding the transaction itself in the log). -
After the binary log data is transmitted to the slave and stored in the slave's relay log. the slave reads the GTID and sets the value of its
gtid_next
system variable as this GTID. This tells the slave that the next transaction must be logged using this GTID.
The slave sets gtid_next in a session context. -
The slave checks to make sure that this GTID has not already been used to log a transaction in its own binary log,Because
gtid_next
is not empty, the slave does not attempt to generate a GTID for this transaction but instead writes the GTID stored in this variable
网友评论