Bug #79188 | Distribution of schema operations stops or timeouts | ||
---|---|---|---|
Submitted: | 9 Nov 2015 14:49 | Modified: | 23 Nov 2015 14:12 |
Reporter: | Ole John Aske | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Cluster: Cluster (NDB) storage engine | Severity: | S3 (Non-critical) |
Version: | 7.4.8 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[9 Nov 2015 14:49]
Ole John Aske
[23 Nov 2015 14:12]
Jon Stephens
Documented fix in the NDB 7.2.23, 7.3.12, and 7.4.9 changelogs, as follows: When executing a schema operation such as CREATE TABLE while running a MySQL Cluster with multiple SQL nodes, it was possible for the SQL node on which the operation was performed to time out while waiting for an acknowledgement from the others. This could occur when different SQL nodes had different settings for --ndb-log-updated-only, --ndb-log-update-as-write, or other options effecting binary logging. This happened due to the fact that, in order to distribute schema changes between them, all SQL nodes subscribe to changes in the ndb_schema system table, and that all SQL nodes are made aware of each others subscriptions by subscribing to TE_SUBSCRIBE and TE_UNSUBSCRIBE events. The names of events to subscribe to are constructed from the table names, adding REPL$ or REPLF$ as a suffix. REPLF$ is used when full binary logging is specified for the table. The issue described previously arose because different values for the options mentioned could lead to different events being subscribed to by different SQL nodes, meaning that all SQL nodes were not necessarily aware of each other, so that the code that handled waiting for schema distribution to complete did not work as designed. To fix this issue, MySQL Cluster now treats the ndb_schema table as a special case and enforces full binary logging at all times for this table, independent of any settings for mysqld binary logging options. Closed.