I noticed that in the latest release of Percona XtraDB Cluster (PXC), the behavior of wsrep_RSU_method changed somewhat. Prior to this release, the variable was GLOBAL only, meaning to use it you would:
mysql> set GLOBAL wsrep_RSU_method='RSU'; mysql> ALTER TABLE ... mysql> set GLOBAL wsrep_RSU_method='TOI';
This had the (possibly negative) side-effect that ALL DDL’s issued on this node would be affected by the setting while in RSU mode.
So, in this latest release, this variable was made to also have a SESSION value, while retaining GLOBAL as well. This has a couple of side-effects that are common to MySQL variables that are both GLOBAL and SESSION:
- The SESSION copy is made from whatever the GLOBAL’s value is when a new connection (session) is established.
- SET GLOBAL does not affect existing connection’s SESSION values.
Therefore, our above workflow would only set the GLOBAL value to RSU and not the SESSION value for the local connection. Therefore, our ALTER TABLE will be TOI and NOT RSU!
So, for those using RSU, the proper workflow would be to make your connection, set the SESSION copy of the variable and then issue your DDL:
mysql> set SESSION wsrep_RSU_method='RSU'; mysql> ALTER TABLE ... ... disconnect ...
The advantage here is ONLY your session’s DDLs will be affected by RSU (handy if you possibly do DDLs automatically from your application).
The post TOI wsrep_RSU_method in PXC 5.6.24 and up appeared first on MySQL Performance Blog.