vstreamer: include gtid events in binlog commit queries #14163
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The
vstreamer
assumes that commit events in the binlog take the form ofXid
events. This poses a problem when doingMoveTables
from external datastores that produce different kinds of binlogs, such as MySQL NDB clusters.Details
Given a schema like:
Inserting a row produces a binlog like:
Notice the
Xid
event. The VTTabletvstreamer
only produces GTID VEvents when it encounters theseXid
binlog events:vitess/go/vt/vttablet/tabletserver/vstreamer/vstreamer.go
Lines 451 to 457 in 2f1fc13
Meanwhile, the
vplayer
depends on these GTID VEvents in order to advance thevreplication.pos
:vitess/go/vt/vttablet/tabletmanager/vreplication/vplayer.go
Lines 481 to 486 in 2f1fc13
This setup won't work for MySQL NDB clusters, which, given the same schema and insert above, produce binlogs that look like this:
Related Issue(s)
Addresses #14166
Checklist
TODO
was added oris not requiredDeployment Notes