Statements executed in RSU mode produce GTID entries with local UUID
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Percona XtraDB Cluster moved to https://jira.percona.com/projects/PXC | Status tracked in 5.6 | |||||
5.6 |
Invalid
|
Undecided
|
Unassigned | |||
5.7 |
Invalid
|
Undecided
|
Unassigned |
Bug Description
DDL or other statements executed in wsrep_OSU_method = RSU, break cluster's consistency in terms of MySQL's GTID notation as they are add GTID entries with node's own UUID.
In fact, I don't think statements executed in RSU method should create any GTID event at all, as they do not increase the Galera's global transaction counter as well. Also it doesn't make sense to make those statements getting logged in the node's binary log, as it makes it inconsistent with the rest of the cluster (there is never a guarantee an RSU statement will be executed on all nodes, and when).
Here is example binary log from a session where I executed flush hosts first in TOI, and then in RSU method:
mysql> show binlog events in 'mysql1-
+------
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
| mysql1-
+------
11 rows in set (0.00 sec)
A workaround to that is to use set sql_log_bin=0; in the session that is supposed to be executed in RSU method.