I Use This!
Very High Activity

News

Analyzed 18 days ago. based on code collected 21 days ago.
Posted about 2 months ago by Bjørn Munch
Dear MySQL Users, MySQL Cluster is the distributed, shared-nothing variant of MySQL. This storage engine provides: - In-Memory storage - Real-time performance (with optional checkpointing to disk) - Transparent Auto-Sharding - Read ... [More] & write scalability - Active-Active/Multi-Master geographic replication - 99.999% High Availability with no single point of failure and on-line maintenance - NoSQL and SQL APIs (including C++, Java, http, Memcached and JavaScript/Node.js) MySQL Cluster 7.3.15, has been released and can be downloaded from http://www.mysql.com/downloads/cluster/ where you will also find Quick Start guides to help you get your first MySQL Cluster database up and running. The release notes are available from http://dev.mysql.com/doc/relnotes/mysql-cluster/7.3/en/index.html MySQL Cluster enables users to meet the database challenges of next generation web, cloud, and communications services with uncompromising scalability, uptime and agility. More details can be found at http://www.mysql.com/products/cluster/ Enjoy ! Changes in MySQL Cluster NDB 7.3.15 (5.6.34-ndb-7.3.15) (2016-10-18) MySQL Cluster NDB 7.3.15 is a new release of MySQL Cluster, based on MySQL Server 5.6 and including features from version 7.3 of the NDB storage engine, as well as fixing a number of recently discovered bugs in previous MySQL Cluster releases. Obtaining MySQL Cluster NDB 7.3. MySQL Cluster NDB 7.3 source code and binaries can be obtained from http://dev.mysql.com/downloads/cluster/. For an overview of changes made in MySQL Cluster NDB 7.3, see What is New in MySQL Cluster NDB 7.3 (http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-what-is-new-7-3.html). This release also incorporates all bugfixes and changes made in previous MySQL Cluster releases, as well as all bugfixes and feature changes which were added in mainline MySQL 5.6 through MySQL 5.6.34 (see Changes in MySQL 5.6.34 (2016-10-12, General Availability) (http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-34.html)). * Functionality Added or Changed * Bugs Fixed Functionality Added or Changed * ClusterJ: To help applications handle database errors better, a number of new features have been added to the ClusterJDatastoreException class: + A new method, getCode(), returns code from the NdbError object. + A new method, getMysqlCode(), returns mysql_code from the NdbError object. + A new subclass, ClusterJDatastoreException.Classification, gives users the ability to decode the result from getClassification(). The method Classification.toString() gives the name of the error classification as listed in NDB Error Classifications (http://dev.mysql.com/doc/ndbapi/en/ndb-error-classifications.html). (Bug #22353594) Bugs Fixed * Removed an invalid assertion to the effect that all cascading child scans are closed at the time API connection records are released following an abort of the main transaction. The assertion was invalid because closing of scans in such cases is by design asynchronous with respect to the main transaction, which means that subscans may well take some time to close after the main transaction is closed. (Bug #23709284) * A number of potential buffer overflow issues were found and fixed in the NDB codebase. (Bug #23152979) * When a data node has insufficient redo buffer during a system restart, it does not participate in the restart until after the other nodes have started. After this, it performs a takeover of its fragments from the nodes in its node group that have already started; during this time, the cluster is already running and user activity is possible, including DML and DDL operations. During a system restart, table creation is handled differently in the DIH kernel block than normally, as this creation actually consists of reloading table definition data from disk on the master node. Thus, DIH assumed that any table creation that occurred before all nodes had restarted must be related to the restart and thus always on the master node. However, during the takeover, table creation can occur on non-master nodes due to user activity; when this happened, the cluster underwent a forced shutdown. Now an extra check is made during system restarts to detect in such cases whether the executing node is the master node, and use that information to determine whether the table creation is part of the restart proper, or is taking place during a subsequent takeover. (Bug #23028418) * Several object constructors and similar functions in the NDB codebase did not always perform sanity checks when creating new instances. These checks are now performed under such circumstances. (Bug #77408, Bug #21286722) * Cluster API: Reuse of transaction IDs could occur when Ndb objects were created and deleted concurrently. As part of this fix, the NDB API methods lock_ndb_objects() and unlock_ndb_objects are now declared as const. (Bug #23709232) [Less]
Posted about 2 months ago by Sreedhar S
Dear MySQL users, MySQL Connector/J 6.0.5 m4 Development Release is a developer milestone release for the 6.0.x series. This release includes the following new features and changes, also described in more detail on ... [More] http://dev.mysql.com/doc/relnotes/connector-j/6.0/en/news-6-0-5.html. As always, we recommend that you check the "CHANGES" file in the download archive to be aware of changes in behavior that might affect your application. To download MySQL Connector/J 6.0.5 M4, see the "Development Releases" tab at http://dev.mysql.com/downloads/connector/j/ Enjoy! Changes in MySQL Connector/J 6.0.5 (2016-10-19, Milestone 4) Version 6.0.5 Milestone is the forth development release of the 6.0 branch of MySQL Connector/J, providing an insight into upcoming features. It is suitable for use with MySQL server versions 5.5, 5.6, and 5.7. It supports the Java Database Connectivity (JDBC) 4.2 API. Functionality Added or Changed * Added support for the error codes of two MySQL server errors, ER_XA_RBTIMEOUT (http://dev.mysql.com/doc/refman/5.7/en/error-messages-se rver.html#error_er_xa_rbtimeout) and ER_XA_RBDEADLOCK (http://dev.mysql.com/doc/refman/5.7/en/error-messages-se rver.html#error_er_xa_rbdeadlock). (Bug #13702433, Bug #64188) * X DevAPI: Client-side failover is now supported. It is enabled by specifying multiple hosts in the X DevAPI connection URL. See X DevAPI URL Format for more details. * com.mysql.cj.core.MysqlType can now be used as java.sql.SQLType in JDBC methods. * X DevAPI: A new method, createTable(), has been added to the Schema interface. See MySQL Connector/J X DevAPI Reference (http://dev.mysql.com/doc/dev/connector-j/) for details. * X DevAPI: A new method, bindToDefaultShard(), has been added to the XSession interface. It creates a "virtual" NodeSession instance, which shares the connection to the router with the XSession that was used to create it. See MySQL Connector/J X DevAPI Reference (http://dev.mysql.com/doc/dev/connector-j/) for details. * X DevAPI: For any function that takes a value list of parameters for its argument, there is now more flexibility with how the parameters are to be specified: they can now be supplied either as a value list or a list of individual parameters. * The Extension interface has been removed. Extension classes now implement their own interfaces. Bugs Fixed * In certain cases, the exception interceptor was being triggered twice in the internal SQLException factory method. Also, if the exception interceptor returned an exception with the cause already initialized, the same factory method would fail to initialize the cause again, and the real cause for the exception remained uncaptured. (Bug #23743956) * getLength() returned -1 for fields of the LONGBLOBL, LONGTEXT, and GEOMETRY data types. This is due to the way these data types are handled by protocol buffers, and this fix makes the method return the right values. (Bug #22988922) * A memory leakage occurred when the connection properties cachePrepStmts and useServerPrepStmts were both set to be true and server-side prepared statements were set as non-poolable, which resulted in the prepared statement being not closable by the client, and the number of prepared statements then kept on increasing. When the memory leakage described above occurred, it did not make Connector/J fail, as Connector/J switched to using client-side prepared statements when the maximum number of prepared statements was reached. However, when rewriteBatchedStatements was also set to true, the switch to client-side prepared statements did not occur, and Connector/J threw the MySQLSyntaxErrorException ("Can't create more than max_prepared_stmt_count statements") when the client wanted to create more prepared statements than allowed. This fix corrected the way prepared statements are handled in order to avoid both of the problems described above. (Bug #22954007, Bug #80615) * ResultSet.getString() sometimes returned garbled data for columns of the JSON data type. This was because JSON data was binary encoded by MySQL using the utf8mb4 character set, but decoded by Connector/J using the ISO-8859-1 character set. This patch fixes the decoding for JSON data. Thanks to Dong Song Ling for contributing to the fix. (Bug #22891845, Bug #80631) * When Connector/J retrieved the value of a BIT column as a string using, for example, getString(), it returned the wrong string if the BIT value happened to be equivalent to the decimal value of some ASCII character. This was because Connector/J treated the BIT value as a character code; thus, for example, the value "01100001" (decimal 97 in binary) was interpreted as the character "a" (whose ASCII value in decimal is 97), which was returned by the function. This fix corrected the parsing behavior of Connector/J on BIT values, so that a string representation of the number ("97" in the last example) is returned by getString(). (Bug #21938551, Bug #78685) * When the connection property useLocalTransactionState was set to "true" and autocommit was set to "false" on the server, if any exception was thrown, any further calls for rollback() or commit() were not sent to the server. It was because when there was an exception while executing a query, Connector/J lost the information regarding the server's transaction state. This patch fixes this issue by preserving the previous transaction state for the current connection when any exception is thrown. (Bug #20212882, Bug #75209) * An invalid connection URL caused Connector/J to throw a NullPointerException. With this fix, an SQLException is thrown instead in the situation. (Bug #18759269, Bug #72632) * When a very large amount of compressed data is transmitted from the server to the client and under very special circumstances, a CommunicationsException might occur. It happened when a single compressed packet from the server was not big enough to provide an entire uncompressed packet to the client side. With this fix, Connector/J reads as many compressed packets as necessary to fill the size of the uncompressed packet that was being requested. Thanks to Ryosuke Yamazaki for contributing to the fix. (Bug #11756431, Bug #48346) Documentation -------------- Online: http://dev.mysql.com/doc/connector-j/6.0/en/index.html Reporting Bugs --------------- We welcome and appreciate your feedback and bug reports: http://bugs.mysql.com/ On behalf of the MySQL Release Team -Sreedhar S [Less]
Posted about 2 months ago by Sreedhar S
Dear MySQL users, MySQL Connector/J 6.0.5 m4 Development Release is a developer milestone release for the 6.0.x series. This release includes the following new features and changes, also described in more detail on ... [More] http://dev.mysql.com/doc/relnotes/connector-j/en/news-6-0-5.html. As always, we recommend that you check the "CHANGES" file in the download archive to be aware of changes in behavior that might affect your application. To download MySQL Connector/J 6.0.5 M4, see the "Development Releases" tab at http://dev.mysql.com/downloads/connector/j/ Enjoy! Changes in MySQL Connector/J 6.0.5 (2016-10-19, Milestone 4) Version 6.0.5 Milestone is the forth development release of the 6.0 branch of MySQL Connector/J, providing an insight into upcoming features. It is suitable for use with MySQL server versions 5.5, 5.6, and 5.7. It supports the Java Database Connectivity (JDBC) 4.2 API. Functionality Added or Changed * Added support for the error codes of two MySQL server errors, ER_XA_RBTIMEOUT (http://dev.mysql.com/doc/refman/5.7/en/error-messages-se rver.html#error_er_xa_rbtimeout) and ER_XA_RBDEADLOCK (http://dev.mysql.com/doc/refman/5.7/en/error-messages-se rver.html#error_er_xa_rbdeadlock). (Bug #13702433, Bug #64188) * X DevAPI: Client-side failover is now supported. It is enabled by specifying multiple hosts in the X DevAPI connection URL. See X DevAPI URL Format for more details. * com.mysql.cj.core.MysqlType can now be used as java.sql.SQLType in JDBC methods. * X DevAPI: A new method, createTable(), has been added to the Schema interface. See MySQL Connector/J X DevAPI Reference (http://dev.mysql.com/doc/dev/connector-j/) for details. * X DevAPI: A new method, bindToDefaultShard(), has been added to the XSession interface. It creates a "virtual" NodeSession instance, which shares the connection to the router with the XSession that was used to create it. See MySQL Connector/J X DevAPI Reference (http://dev.mysql.com/doc/dev/connector-j/) for details. * X DevAPI: For any function that takes a value list of parameters for its argument, there is now more flexibility with how the parameters are to be specified: they can now be supplied either as a value list or a list of individual parameters. * The Extension interface has been removed. Extension classes now implement their own interfaces. Bugs Fixed * In certain cases, the exception interceptor was being triggered twice in the internal SQLException factory method. Also, if the exception interceptor returned an exception with the cause already initialized, the same factory method would fail to initialize the cause again, and the real cause for the exception remained uncaptured. (Bug #23743956) * getLength() returned -1 for fields of the LONGBLOBL, LONGTEXT, and GEOMETRY data types. This is due to the way these data types are handled by protocol buffers, and this fix makes the method return the right values. (Bug #22988922) * A memory leakage occurred when the connection properties cachePrepStmts and useServerPrepStmts were both set to be true and server-side prepared statements were set as non-poolable, which resulted in the prepared statement being not closable by the client, and the number of prepared statements then kept on increasing. When the memory leakage described above occurred, it did not make Connector/J fail, as Connector/J switched to using client-side prepared statements when the maximum number of prepared statements was reached. However, when rewriteBatchedStatements was also set to true, the switch to client-side prepared statements did not occur, and Connector/J threw the MySQLSyntaxErrorException ("Can't create more than max_prepared_stmt_count statements") when the client wanted to create more prepared statements than allowed. This fix corrected the way prepared statements are handled in order to avoid both of the problems described above. (Bug #22954007, Bug #80615) * ResultSet.getString() sometimes returned garbled data for columns of the JSON data type. This was because JSON data was binary encoded by MySQL using the utf8mb4 character set, but decoded by Connector/J using the ISO-8859-1 character set. This patch fixes the decoding for JSON data. Thanks to Dong Song Ling for contributing to the fix. (Bug #22891845, Bug #80631) * When Connector/J retrieved the value of a BIT column as a string using, for example, getString(), it returned the wrong string if the BIT value happened to be equivalent to the decimal value of some ASCII character. This was because Connector/J treated the BIT value as a character code; thus, for example, the value "01100001" (decimal 97 in binary) was interpreted as the character "a" (whose ASCII value in decimal is 97), which was returned by the function. This fix corrected the parsing behavior of Connector/J on BIT values, so that a string representation of the number ("97" in the last example) is returned by getString(). (Bug #21938551, Bug #78685) * When the connection property useLocalTransactionState was set to "true" and autocommit was set to "false" on the server, if any exception was thrown, any further calls for rollback() or commit() were not sent to the server. It was because when there was an exception while executing a query, Connector/J lost the information regarding the server's transaction state. This patch fixes this issue by preserving the previous transaction state for the current connection when any exception is thrown. (Bug #20212882, Bug #75209) * An invalid connection URL caused Connector/J to throw a NullPointerException. With this fix, an SQLException is thrown instead in the situation. (Bug #18759269, Bug #72632) * When a very large amount of compressed data is transmitted from the server to the client and under very special circumstances, a CommunicationsException might occur. It happened when a single compressed packet from the server was not big enough to provide an entire uncompressed packet to the client side. With this fix, Connector/J reads as many compressed packets as necessary to fill the size of the uncompressed packet that was being requested. Thanks to Ryosuke Yamazaki for contributing to the fix. (Bug #11756431, Bug #48346) Documentation -------------- Online: http://dev.mysql.com/doc/connector-j/6.0/en/index.html Reporting Bugs --------------- We welcome and appreciate your feedback and bug reports: http://bugs.mysql.com/ On behalf of the MySQL Release Team -Sreedhar S [Less]
Posted about 2 months ago by Sreedhar S
Dear MySQL Users, MySQL Cluster is the distributed, shared-nothing variant of MySQL. This storage engine provides: - In-Memory storage - Real-time performance - Transparent Auto-Sharding - Read & write scalability - ... [More] Active-Active/Multi-Master geographic replication - 99.999% High Availability with no single point of failure and on-line maintenance - NoSQL and SQL APIs (including C++, Java, http, Memcached and JavaScript/Node.js) MySQL Cluster 7.4 makes significant advances in performance; operational efficiency (such as enhanced reporting and faster restarts and upgrades) and conflict detection and resolution for active-active replication between MySQL Clusters. MySQL Cluster 7.4.13, has been released and can be downloaded from http://www.mysql.com/downloads/cluster/ where you will also find Quick Start guides to help you get your first MySQL Cluster database up and running. The release notes are available from http://dev.mysql.com/doc/relnotes/mysql-cluster/7.4/en/index.html MySQL Cluster enables users to meet the database challenges of next generation web, cloud, and communications services with uncompromising scalability, uptime and agility. More details can be found at http://www.mysql.com/products/cluster/ Enjoy ! ============================================================================== Changes in MySQL Cluster NDB 7.4.13 (5.6.34-ndb-7.4.13) (2016-10-18) MySQL Cluster NDB 7.4.13 is a new release of MySQL Cluster 7.4, based on MySQL Server 5.6 and including features in version 7.4 of the NDB storage engine, as well as fixing recently discovered bugs in previous MySQL Cluster releases. Obtaining MySQL Cluster NDB 7.4. MySQL Cluster NDB 7.4 source code and binaries can be obtained from http://dev.mysql.com/downloads/cluster/. For an overview of changes made in MySQL Cluster NDB 7.4, see What is New in MySQL Cluster NDB 7.4 (http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-what-is -new-7-4.html). This release also incorporates all bugfixes and changes made in previous MySQL Cluster releases, as well as all bugfixes and feature changes which were added in mainline MySQL 5.6 through MySQL 5.6.34 (see Changes in MySQL 5.6.34 (Not yet released) (http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-34.h tml). Bugs Fixed * Passing a nonexistent node ID to CREATE NODEGROUP led to random data node failures. (Bug #23748958) * DROP TABLE followed by a node shutdown and subesequent master takeover---and with the containing local checkpoint not yet complete prior to the takeover---caused the LCP to be ignored, and in some cases, the data node to fail. (Bug #23735996) References: See also: Bug #23288252. * Removed an invalid assertion to the effect that all cascading child scans are closed at the time API connection records are released following an abort of the main transaction. The assertion was invalid because closing of scans in such cases is by design asynchronous with respect to the main transaction, which means that subscans may well take some time to close after the main transaction is closed. (Bug #23709284) * A number of potential buffer overflow issues were found and fixed in the NDB codebase. (Bug #23152979) * A SIGNAL_DROPPED_REP handler invoked in response to long message buffer exhaustion was defined in the SPJ kernel block, but not actually used. This meant that the default handler from SimulatedBlock was used instead in such cases, which shut down the data node. (Bug #23048816) References: See also: Bug #23251145, Bug #23251423. * When a data node has insufficient redo buffer during a system restart, it does not participate in the restart until after the other nodes have started. After this, it performs a takeover of its fragments from the nodes in its node group that have already started; during this time, the cluster is already running and user activity is possible, including DML and DDL operations. During a system restart, table creation is handled differently in the DIH kernel block than normally, as this creation actually consists of reloading table definition data from disk on the master node. Thus, DIH assumed that any table creation that occurred before all nodes had restarted must be related to the restart and thus always on the master node. However, during the takeover, table creation can occur on non-master nodes due to user activity; when this happened, the cluster underwent a forced shutdown. Now an extra check is made during system restarts to detect in such cases whether the executing node is the master node, and use that information to determine whether the table creation is part of the restart proper, or is taking place during a subsequent takeover. (Bug #23028418) * ndb_restore set the MAX_ROWS attribute for a table for which it had not been set prior to taking the backup. (Bug #22904640) * Whenever data nodes are added to or dropped from the cluster, the NDB kernel's Event API is notified of this using a SUB_GCP_COMPLETE_REP signal with either the ADD (add) flag or SUB (drop) flag set, as well as the number of nodes to add or drop; this allows NDB to maintain a correct count of SUB_GCP_COMPLETE_REP signals pending for every incomplete bucket. In addition to handling the bucket for the epoch associated with the addition or removal, it must also compensate for any later incomplete buckets associated with later epochs. Although it was possible to complete such buckets out of order, there was no handling of these, leading a stall in to event reception. This fix adds detection and handling of such out of order bucket completion. (Bug #20402364) References: See also: Bug #82424, Bug #24399450. * The count displayed by the c_exec column in the ndbinfo.threadstat table was incomplete. (Bug #82635, Bug #24482218) * The internal function ndbcluster_binlog_wait(), which provides a way to make sure that all events originating from a given thread arrive in the binary log, is used by SHOW BINLOG EVENTS as well as when resetting the binary log. This function waits on an injector condition while the latest global epoch handled by NDB is more recent than the epoch last committed in this session, which implies that this condition must be signalled whenever the binary log thread completes and updates a new latest global epoch. Inspection of the code revealed that this condition signalling was missing, and that, instead of being awakened whenever a new latest global epoch completes (~100ms), client threads waited for the maximum timeout (1 second). This fix adds the missing injector condition signalling, while also changing it to a condition broadcast to make sure that all client threads are alerted. (Bug #82630, Bug #24481551) * During a node restart, a fragment can be restored using information obtained from local checkpoints (LCPs); up to 2 restorable LCPs are retained at any given time. When an LCP is reported to the DIH kernel block as completed, but the node fails before the last global checkpoint index written into this LCP has actually completed, the latest LCP is not restorable. Although it should be possible to use the older LCP, it was instead assumed that no LCP existed for the fragment, which slowed the restart process. Now in such cases, the older, restorable LCP is used, which should help decrease long node restart times. (Bug #81894, Bug #23602217) * While a mysqld was waiting to connect to the management server during initialization of the NDB handler, it was not possible to shut down the mysqld. If the mysqld was not able to make the connection, it could become stuck at this point. This was due to an internal wait condition in the utility and index statistics threads that could go unmet indefinitely. This condition has been augmented with a maximum timeout of 1 second, which makes it more likely that these threads terminate themselves properly in such cases. In addition, the connection thread waiting for the management server connection performed 2 sleeps in the case just described, instead of 1 sleep, as intended. (Bug #81585, Bug #23343673) * The list of deferred tree node lookup requests created when preparing to abort a DBSPJ request were not cleared when this was complete, which could lead to deferred operations being started even after the DBSPJ request aborted. (Bug #81355, Bug #23251423) References: See also: Bug #23048816. * Error and abort handling in Dbspj::execTRANSID_AI() was implemented such that its abort() method was called before processing of the incoming signal was complete. Since this method sends signals to the LDM, this partly overwrote the contents of the signal which was later required by execTRANSID_AI(). This could result in aborted DBSPJ requests cleaning up their allocated resources too early, or not at all. (Bug #81353, Bug #23251145) References: See also: Bug #23048816. * Several object constructors and similar functions in the NDB codebase did not always perform sanity checks when creating new instances. These checks are now performed under such circumstances. (Bug #77408, Bug #21286722) * Cluster API: Reuse of transaction IDs could occur when Ndb objects were created and deleted concurrently. As part of this fix, the NDB API methods lock_ndb_objects() and unlock_ndb_objects are now declared as const. (Bug #23709232) * Cluster API: When the management server was restarted while running an MGM API application that continuously monitored events, subsequent events were not reported to the application, with timeouts being returned indefinitely instead of an error. This occurred because sockets for event listeners were not closed when restarting mgmd. This is fixed by ensuring that event listener sockets are closed when the management server shuts down, causing applications using functions such as ndb_logevent_get_next() to receive a read error following the restart. (Bug #19474782) Enjoy and thanks for the support! On behalf of the MySQL Release Team -Sreedhar S [Less]
Posted about 2 months ago by Piotr Obrzut
Dear MySQL Users, MySQL Cluster is the distributed, shared-nothing variant of MySQL. This storage engine provides: - In-Memory storage - Real-time performance (with optional checkpointing to disk) - Transparent Auto-Sharding - Read & ... [More] write scalability - Active-Active/Multi-Master geographic replication - 99.999% High Availability with no single point of failure and on-line maintenance - NoSQL and SQL APIs (including C++, Java, http and Memcached) MySQL Cluster 7.2.26, has been released and can be downloaded from http://www.mysql.com/downloads/cluster/ where you will also find Quick Start guides to help you get your first MySQL Cluster database up and running. The release notes are available from http://dev.mysql.com/doc/relnotes/mysql-cluster/7.2/en/index.html MySQL Cluster enables users to meet the database challenges of next generation web, cloud, and communications services with uncompromising scalability, uptime and agility. More details can be found at http://www.mysql.com/products/cluster/ Enjoy ! Changes in MySQL Cluster NDB 7.2.26 (5.5.53-ndb-7.2.26) (2016-10-18, General Availability) MySQL Cluster NDB 7.2.26 is a new release of MySQL Cluster, incorporating new features in the NDB storage engine, and fixing recently discovered bugs in previous MySQL Cluster NDB 7.2 development releases. Obtaining MySQL Cluster NDB 7.2. MySQL Cluster NDB 7.2 source code and binaries can be obtained from http://dev.mysql.com/downloads/cluster/. This release also incorporates all bugfixes and changes made in previous MySQL Cluster releases, as well as all bugfixes and feature changes which were added in mainline MySQL 5.5 through MySQL 5.5.53 (see Changes in MySQL 5.5.53 (Not yet released) (http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-53.html)). Bugs Fixed * Several object constructors and similar functions in the NDB codebase did not always perform sanity checks when creating new instances. These checks are now performed under such circumstances. (Bug #77408, Bug #21286722) On behalf of the Oracle MySQL RE Team Piotr Obrzut [Less]
Posted about 2 months ago by Balasubramanian Kandasamy
[This is part 2 of the announcement] * When performing online reorganization of tables, unique indexes were not included in the reorganization. (Bug #13714258) * Local reads of unique index and blob tables did not work ... [More] correctly for fully replicated tables using more than one node group. (Bug #83016, Bug #24675602) * The effects of an ALTER TABLE (http://dev.mysql.com/doc/refman/5.7/en/alter-table.html) statement changing a table to use READ_BACKUP were not preserved after a restart of the cluster. (Bug #82812, Bug #24570439) * Using FOR_RP_BY_NODE or FOR_RP_BY_LDM for PARTITION_BALANCE did not work with fully replicated tables. (Bug #82801, Bug #24565265) * Changes to READ_BACKUP settings were not propagated to internal blob tables. (Bug #82788, Bug #24558232) * The count displayed by the c_exec column in the ndbinfo.threadstat (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-threadstat.html) table was incomplete. (Bug #82635, Bug #24482218) * The default PARTITION_BALANCE setting for NDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) tables created with READ_BACKUP=1 (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) has been changed from FOR_RA_BY_LDM to FOR_RP_BY_LDM. (Bug #82634, Bug #24482114) * The internal function ndbcluster_binlog_wait(), which provides a way to make sure that all events originating from a given thread arrive in the binary log, is used by SHOW BINLOG EVENTS (http://dev.mysql.com/doc/refman/5.7/en/show-binlog-events.html) as well as when resetting the binary log. This function waits on an injector condition while the latest global epoch handled by NDB is more recent than the epoch last committed in this session, which implies that this condition must be signalled whenever the binary log thread completes and updates a new latest global epoch. Inspection of the code revealed that this condition signalling was missing, and that, instead of being awakened whenever a new latest global epoch completes (~100ms), client threads waited for the maximum timeout (1 second). This fix adds the missing injector condition signalling, while also changing it to a condition broadcast to make sure that all client threads are alerted. (Bug #82630, Bug #24481551) * Fully replicated internal foreign key or unique index triggers could fire multiple times, which led to aborted transactions for an insert or a delete operation. This happened due to redundant deferred constraint triggers firing during pre-commit. Now in such cases, we ensure that only triggers specific to unique indexes are fired in this stage. (Bug #82570, Bug #24454378) * Backups potentially could fail when using fully replicated tables due to their high usage (and subsequent exhaustion) of internal trigger resources. To compensate for this, the amount of memory reserved in the NDB kernel for internal triggers has been increased, and is now based in part on the maximum number of tables. (Bug #82569, Bug #24454262) References: See also: Bug #23539733. * In the DBTC function executeFullyReplicatedTrigger() in the NDB kernel, an incorrect check of state led in some cases to failure handling when no failure had actually occurred. (Bug #82568, Bug #24454093) References: See also: Bug #23539733. * When returning from LQHKEYREQ with failure in LQHKEYREF in an internal trigger operation, no check was made as to whether the trigger was fully replicated, so that those triggers that were fully replicated were never handled. (Bug #82566, Bug #24453949) References: See also: Bug #23539733. * When READ_BACKUP had not previously been set, then was set to 1 as part of an ALTER TABLE ... ALGORITHM=INPLACE (http://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html) statement, the change was not propagated to internal unique index tables or BLOB (http://dev.mysql.com/doc/refman/5.7/en/blob.html) tables. (Bug #82491, Bug #24424459) * Distribution of MySQL privileges was incomplete due to the failure of the mysql_cluster_move_privileges() procedure to convert the mysql.proxies_priv table to NDB. The root cause of this was an ALTER TABLE ... ENGINE NDB (http://dev.mysql.com/doc/refman/5.7/en/alter-table.html) statement which sometimes failed when this table contained illegal TIMESTAMP (http://dev.mysql.com/doc/refman/5.7/en/datetime.html) values. (Bug #82464, Bug #24430209) * The internal variable m_max_warning_level was not initialized in storage/ndb/src/kernel/blocks/thrman.cpp. This sometimes led to node failures during a restart when the uninitialized value was treated as 0. (Bug #82053, Bug #23717703) * Usually, when performing a system restart, all nodes are restored from redo logs and local checkpoints (LCPs), but in some cases some node might require a copy phase before it is finished with the system restart. When this happens, the node in question waits for all other nodes to start up completely before performing the copy phase. Notwithstanding the fact that it is thus possible to begin a local checkpoint before reaching start phase 4 in the DBDIH block, LCP status was initialized to IDLE in all cases, which could lead to a node failure. Now, when performing this variant of a system restart, the LCP status is no longer initialized. (Bug #82050, Bug #23717479) * After adding a new node group online and executing ALTER TABLE ... ALGORITHM=INPLACE REORGANIZE PARTITION (http://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html), partition IDs were not set correctly for new fragments. In a related change done as part of fixing this issue, ndb_desc -p (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-desc.html#option_ndb_desc_extra-partition-info) now displays rows relating to partitions in order of partition ID. (Bug #82037, Bug #23710999) * When executing STOP BACKUP it is possible sometimes that a few bytes are written to the backup data file before the backup process actually terminates. When using ODIRECT (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-odirect), this resulted in the wrong error code being returned. Now in such cases, nothing is written to O_DIRECT files unless the alignment is correct. (Bug #82017, Bug #23701911) * When transaction coordinator (TC) connection records were used up, it was possible to handle scans only for local checkpoints and backups, so that operations coming from the DBUTIL block---used for ALTER TABLE ... REORGANIZE PARTITION (http://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html) and other operations that reorganize metadata---were unnecessarily blocked. In addition, such operations were not always retried when TC records were exhausted. To fix this issue, a number of operation records are now earmarked for DBUTIL usage, as well as for LCP and backup usage so that these operations are also not negatively impacted by operations coming from DBUTIL. For more information, see The DBUTIL Block (http://dev.mysql.com/doc/ndbapi/en/ndb-internals-kernel-blocks-dbutil.html). (Bug #81992, Bug #23642198) * Operations performing multiple updates of the same row within the same transaction could sometimes lead to corruption of lengths of page entries. (Bug #81938, Bug #23619031) * During a node restart, a fragment can be restored using information obtained from local checkpoints (LCPs); up to 2 restorable LCPs are retained at any given time. When an LCP is reported to the DIH kernel block as completed, but the node fails before the last global checkpoint index written into this LCP has actually completed, the latest LCP is not restorable. Although it should be possible to use the older LCP, it was instead assumed that no LCP existed for the fragment, which slowed the restart process. Now in such cases, the older, restorable LCP is used, which should help decrease long node restart times. (Bug #81894, Bug #23602217) * Optimized node selection (ndb_optimized_node_selection (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#sysvar_ndb_optimized_node_selection) setting) was not respected by ndb_data_node_neighbour (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#sysvar_ndb_data_node_neighbour) when this was enabled. (Bug #81778, Bug #23555834) * NDB no longer retries a global schema lock if this has failed due to a timeout (default 3000ms) and there is the potential for this lock request to participate in a metadata lock-global schema lock deadlock. Now in such cases it selects itself as a "victim", and returns the decision to the requestor of the metadata lock, which then handles the request as a failed lock request (preferable to remaining deadlocked indefinitely), or, where a deadlock handler exists, retries the metadata lock-global schema lock. (Bug #81775, Bug #23553267) * Two issues were found in the implementation of hash maps---used by NDB for mapping a table row's hash value to a partition---for fully replicated tables: 1. Hash maps were selected based on the number of fragments rather than the number of partitions. This was previously undetected due to the fact that, for other kinds of tables, these values are always the same. 2. The hash map was employed as a partition-to-partition map, using the table row's hash value modulus the partition count as input. This fix addresses both of the problems just described. (Bug #81757, Bug #23544220) References: See also: Bug #81761, Bug #23547525, Bug #23553996. * Using mysqld together with --initialize (http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_initialize) and --ndbcluster (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#option_mysqld_ndbcluster) led to problems later when attempting to use mysql_upgrade. When running with --initialize, the server does not require NDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) support, and having it enabled can lead to issues with ndbinfo (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo.html) tables. To prevent this from happening, using the --initialize option now causes mysqld to ignore the --ndbcluster option if the latter is also specified. This issue affects upgrades from MySQL Cluster NDB 7.5.3 or 7.5.3 only. In cases where such upgrades fail for the reasons outlined previously, you can work around the issue by deleting all .frm files in the data/ndbinfo directory following a rolling restart of the entire cluster, then running mysql_upgrade. (Bug #81689, Bug #23518923) References: See also: Bug #82724, Bug #24521927. * While a mysqld was waiting to connect to the management server during initialization of the NDB handler, it was not possible to shut down the mysqld. If the mysqld was not able to make the connection, it could become stuck at this point. This was due to an internal wait condition in the utility and index statistics threads that could go unmet indefinitely. This condition has been augmented with a maximum timeout of 1 second, which makes it more likely that these threads terminate themselves properly in such cases. In addition, the connection thread waiting for the management server connection performed 2 sleeps in the case just described, instead of 1 sleep, as intended. (Bug #81585, Bug #23343673) * ALTER TABLE ... ALGORITHM=INPLACE (http://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html) on a fully replicated table did not copy the associated trigger ID, leading to a failure in the DBDICT kernel block. (Bug #81544, Bug #23330359) * The list of deferred tree node lookup requests created when preparing to abort a DBSPJ request were not cleared when this was complete, which could lead to deferred operations being started even after the DBSPJ request aborted. (Bug #81355, Bug #23251423) References: See also: Bug #23048816. * Error and abort handling in Dbspj::execTRANSID_AI() was implemented such that its abort() method was called before processing of the incoming signal was complete. Since this method sends signals to the LDM, this partly overwrote the contents of the signal which was later required by execTRANSID_AI(). This could result in aborted DBSPJ requests cleaning up their allocated resources too early, or not at all. (Bug #81353, Bug #23251145) References: See also: Bug #23048816. * The read backup feature added in MySQL Cluster NDB 7.5.2 that makes it possible to read from backup replicas was not used for reads with lock, or for reads of BLOB (http://dev.mysql.com/doc/refman/5.7/en/blob.html) tables or unique key tables where locks were upgraded to reads with lock. Now the TCKEYREQ and SCAN_TABREQ signals use a flag to convey information about such locks making it possible to read from a backup replica when a read lock was upgraded due to being the read of the base table for a BLOB table, or due to being the read for a unique key. (Bug #80861, Bug #23001841) * Primary replicas of partitioned tables were not distributed evenly among node groups and local data managers. As part of the fix for this issue, the maximum number of node groups supported for a single MySQL Cluster, which was previously not determined, is now set at 48 (MAX_NDB_NODE_GROUPS). (Bug #80845, Bug #22996305) * Several object constructors and similar functions in the NDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) codebase did not always perform sanity checks when creating new instances. These checks are now performed under such circumstances. (Bug #77408, Bug #21286722) * Cluster API: Reuse of transaction IDs could occur when Ndb (http://dev.mysql.com/doc/ndbapi/en/ndb-ndb.html) objects were created and deleted concurrently. As part of this fix, the NDB API methods lock_ndb_objects() (http://dev.mysql.com/doc/ndbapi/en/ndb-ndb-cluster-connection-lock-ndb-objects.html) and unlock_ndb_objects (http://dev.mysql.com/doc/ndbapi/en/ndb-ndb-cluster-connection-unlock-ndb-objects.html) are now declared as const. (Bug #23709232) * Cluster API: When the management server was restarted while running an MGM API application that continuously monitored events, subsequent events were not reported to the application, with timeouts being returned indefinitely instead of an error. This occurred because sockets for event listeners were not closed when restarting mgmd. This is fixed by ensuring that event listener sockets are closed when the management server shuts down, causing applications using functions such as ndb_logevent_get_next() (http://dev.mysql.com/doc/ndbapi/en/mgm-ndb-logevent-get-next.html) to receive a read error following the restart. (Bug #19474782) * Cluster API: To process incoming signals, a thread which wants to act as a receiver must acquire polling rights from the transporter layer. This can be requested and assigned to a separate receiver thread, or each client thread can take the receiver role when it is waiting for a result. When the thread acting as poll owner receives a sufficient amount of data, it releases locks on any other clients taken while delivering signals to them. This could make them runnable again, and the operating system scheduler could decide that it was time to wake them up, which happened at the expense of the poll owner threads, which were in turn excluded from the CPU while still holding polling rights on it. After this fix, polling rights are released by a thread before unlocking and signalling other threads. This makes polling rights available for other threads that are actively executing on this CPU. This change increases concurrency when polling receiver data, which should also reduce latency for clients waiting to be woken up. (Bug #83129, Bug #24716756) * Cluster API: libndbclient and libmysqlclient exported conflicting symbols, resulting in a segmentation fault in debug builds on Linux. To fix this issue, the conflicting symbols in libndbclient.so are no longer publicly visible. Due to this change, the version number for libndbclient.so has been raised from 6.0.0 to 6.1.0. (Bug #83093, Bug #24707521) References: See also: Bug #80352, Bug #22722555. * Cluster API: When NDB schema object ownership checks are enabled by a given NdbTransaction (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbtransaction.html), objects used by this transaction are checked to make sure that they belong to the NdbDictionary (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbdictionary.html) owned by this connection. An attempt to create a NdbOperation (http://dev.mysql.com/doc/ndbapi/en/ndb-ndboperation.html), NdbScanOperation (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanoperation.html), or NdbIndexScanOperation (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbindexscanoperation.html) on a table or index not belonging to the same connection fails. This fix corrects a resource leak which occurred when the operation object to be created was allocated before checking schema object ownership and subsequently not released when the object creation failed. (Bug #81949, Bug #23623978) References: See also: Bug #81945, Bug #23623251. * Cluster API: NDB API objects are allocated in the context of an Ndb (http://dev.mysql.com/doc/ndbapi/en/ndb-ndb.html) object, or of an NdbTransaction (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbtransaction.html) object which is itself owned by an Ndb object. When a given Ndb object is destroyed, all remaining NdbTransaction objects are terminated, and all NDB API objects related to this Ndb object should be released at this time as well. It was found, when there remained unclosed NdbTransaction objects when their parent Ndb object was destroyed, leaks of objects allocated from the NdbTransaction objects could occur. (However, the NdbTransaction objects themselves did not leak.) While it is advisable (and, indeed, recommended) to close an NdbTransaction explicitly as soon as its lifetime ends, the destruction of the parent Ndb object should be sufficient to release whatever objects are dependent on it. Now in cases such as described previously, the Ndb destructor checks to ensure that all objects derived from a given Ndb instance are truly released. (Bug #81945, Bug #23623251) * Cluster API: In some of the NDB API example programs included with the MySQL Cluster distribution, ndb_end() was called prior to calling the Ndb_cluster_connection (http://dev.mysql.com/doc/ndbapi/en/ndb-ndb-cluster-connection.html) destructor. This caused a segmentation fault in debug builds on all platforms. The example programs affected have also been extensively revised and refactored. See NDB API Examples (http://dev.mysql.com/doc/ndbapi/en/ndb-examples.html), for more information. (Bug #80352, Bug #22722555) References: See also: Bug #83093, Bug #24707521. On behalf of the Oracle MySQL RE Team Balasubramanian Kandasamy [Less]
Posted about 2 months ago by Balasubramanian Kandasamy
Dear MySQL Users, MySQL Cluster 7.5.4 (GA) is the first GA release for MySQL Cluster 7.5. MySQL Cluster is the distributed, shared-nothing variant of MySQL. This storage engine provides: - In-Memory storage - Real-time performance (with ... [More] optional checkpointing to disk) - Transparent Auto-Sharding - Read & write scalability - Active-Active/Multi-Master geographic replication - 99.999% High Availability with no single point of failure and on-line maintenance - NoSQL and SQL APIs (including C++, Java, http, Memcached and JavaScript/Node.js) [Due to size limitations on forum/email, this announcement had to be split into two parts. This is part 1.] MySQL Cluster 7.5.4, has been released and can be downloaded from http://www.mysql.com/downloads/cluster/ where you will also find Quick Start guides to help you get your first MySQL Cluster database up and running. The release notes are available from http://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/index.html MySQL Cluster enables users to meet the database challenges of next generation web, cloud, and communications services with uncompromising scalability, uptime and agility. More details can be found at http://www.mysql.com/products/cluster/ Enjoy ! Changes in MySQL Cluster NDB 7.5.4 (5.7.16-ndb-7.5.4) (2016-10-18, General Availability) MySQL Cluster NDB 7.5.4 is a new release of MySQL Cluster 7.5, based on MySQL Server 5.7 and including features in version 7.5 of the NDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) storage engine, as well as fixing recently discovered bugs in previous MySQL Cluster releases. Obtaining MySQL Cluster NDB 7.5. MySQL Cluster NDB 7.5 source code and binaries can be obtained from http://dev.mysql.com/downloads/cluster/. For an overview of changes made in MySQL Cluster NDB 7.5, see What is New in MySQL Cluster NDB 7.5 (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new.html). This release also incorporates all bugfixes and changes made in previous MySQL Cluster releases, as well as all bugfixes and feature changes which were added in mainline MySQL 5.7 through MySQL 5.7.16 (see Changes in MySQL 5.7.16 (2016-10-12, General Availability) (http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-16.html)). * Functionality Added or Changed * Bugs Fixed Functionality Added or Changed * Important Change; Packaging: Naming and organization of the RPMs provided for MySQL Cluster have been changed to align with those released for the MySQL server. All MySQL Cluster RPM package names are now prefixed with mysql-cluster. Data nodes are now installed using the data-node package; management nodes are now installed from the management-server package; and SQL nodes require the server and common packages. Important: SQL nodes must use the mysql-cluster version of these RPMs; the versions released for the standard MySQL server do not provide support for the NDB storage engine. All client programs, including both the mysql client and the ndb_mgm management client, are now included in the client RPM. For more information, see Installing MySQL Cluster from RPM (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-rpm.html). * Added the --print-sql-log (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-restore.html#option_ndb_restore_print-sql-log) option for the ndb_restore program included with the MySQL Cluster distribution. This option causes the program to log SQL statements to stdout. Note that each table being restored in this fashion must have an explicitly defined primary key; the hidden primary key implemented by the NDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) storage engine is not sufficient for this purpose. (Bug #13511949) * For fully replicated tables, ndb_desc shows only nodes holding main fragment replicas for partitions; nodes with copy fragment replicas only are ignored. To make this information available in the mysql client, several new tables have been introduced in the ndbinfo (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo.html) information database. These tables are listed here, with brief descriptions: + dict_obj_info (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-dict-obj-info.html) provides the names and types of database (DICT) objects in NDB, such as tables and indexes, as well as information about parent objects where applicable + table_distribution_status (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-distribution-status.html) provides NDB table distribution status information + table_fragments (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-fragments.html) provides information about the distribution of NDB table fragments + table_info (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-info.html) provides information about logging, checkpointing, storage, and other options in force for each NDB table + table_replicas (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-replicas.html) provides information about fragment replicas For more information, see The ndbinfo MySQL Cluster Information Database (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo.html). (Bug #81762, Bug #23547643) * ClusterJ: To help applications handle database errors better, a number of new features have been added to the ClusterJDatastoreException class: + A new method, getCode(), returns code from the NdbError object. + A new method, getMysqlCode(), returns mysql_code from the NdbError object. + A new subclass, ClusterJDatastoreException.Classification, gives users the ability to decode the result from getClassification(). The method Classification.toString() gives the name of the error classification as listed in NDB Error Classifications (http://dev.mysql.com/doc/ndbapi/en/ndb-error-classifications.html). (Bug #22353594) Bugs Fixed * Important Change: The default value of the --ndb-default-column-format (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#option_mysqld_ndb-default-column-format) server option has been changed from DYNAMIC to FIXED. This has been done for backwards compatibility. Only the default has been changed; setting this option to DYNAMIC continues to cause DYNAMIC to be used for ROW_FORMAT and COLUMN_FORMAT unless overridden. (Bug #24487363) * Important Change: Event buffer status reporting has been improved by altering the semantics for calculating lag or slippage. Rather than defining this lag as the number of epochs behind, lag is now taken as the number of epochs completely buffered in the event buffer, but not yet consumed by the binlog injector thread. As part of this work, the default value for the ndb_report_thresh_binlog_epoch_slip (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#sysvar_ndb_report_thresh_binlog_epoch_slip) system variable has been increased from 3 to 10. For more information, see the description of this variable in the documentation, as well as Event Buffer Reporting in the Cluster Log (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-logs-event-buffer.html). (Bug #22916457) References: See also: Bug #22901309. * Cluster API: The term "fragment count type" has been superceded by "partition balance". This change affects NDB_TABLE options for NDB tables as well as in the NDB API. In NDB_TABLE table option syntax, the FRAGMENT_COUNT_TYPE keyword is replaced with PARTITION_BALANCE. In the NDB API, the Table (http://dev.mysql.com/doc/ndbapi/en/ndb-table.html) methods getFragmentCountType() and setFragmentCountType() have been renamed to getPartitionBalance() (http://dev.mysql.com/doc/ndbapi/en/ndb-table-getpartitionbalance.html) and setPartitionBalance() (http://dev.mysql.com/doc/ndbapi/en/ndb-table-setpartitionbalance.html), respectively; getFragmentCountTypeString() is renamed to getPartitionBalanceString() (http://dev.mysql.com/doc/ndbapi/en/ndb-table-getpartitionbalancestring.html). In addition, Object::FragmentCountType has been renamed to PartitionBalance (http://dev.mysql.com/doc/ndbapi/en/ndb-object-partitionbalance.html), and the names of its enumerated values have been updated to be consistent with the new nomenclature. For more information on how these changes affect NDB API applications, see the indicated Table (http://dev.mysql.com/doc/ndbapi/en/ndb-table.html) and Object (http://dev.mysql.com/doc/ndbapi/en/ndb-object.html) member descriptions. For more information on the SQL-level changes made as part of this fix, Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html). (Bug #81761, Bug #23547525) References: See also: Bug #83147, Bug #24733331. * If more than 4096 seconds elapsed while calculating an internal NdbDuration::microSec() value, this could cause an assert warning that the calculation would overflow. We fix this to avoid any overflow or precision loss when converting from the internal "tick" format to microseconds and nanoseconds, by performing the calculation in two parts corresponding to seconds and fractions of a second. (Bug #24695026) * The serial commit protocol---which commits each operation at each replica individually and serially, and is used by the DBTC kernel block (see The DBTC Block (http://dev.mysql.com/doc/ndbapi/en/ndb-internals-kernel-blocks-dbtc.html)) for takeover and when a transaction is judged to have timed out during the COMMIT or COMPLETE phase---had no support for LATE_COMMIT, which is required for the READ_BACKUP and FULLY_REPLICATED protocols. (Bug #24681305) * In some cases, ALTER TABLE ... REORGANIZE PARTITION (http://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html) could lead to an unplanned shutdown of the cluster. This was due to the fact that, for fully replicated tables. the log part ID was assumed to be the same as the partition ID. This worked when FOR_RA_BY_LDM was used, but not necessarily for the other partition balancing types. (Bug #24610551) * Using ALGORITHM=INPLACE when changing any of a table's NDB_TABLE properties (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) caused the server to fail. (Bug #24584741) * Following successive ALTER TABLE (http://dev.mysql.com/doc/refman/5.7/en/alter-table.html) statements updating NDB_TABLE properties (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)), the current values were not always shown by SHOW CREATE TABLE (http://dev.mysql.com/doc/refman/5.7/en/show-create-table.html) or ndb_desc. (Bug #24584690) * Case-insensitivity of keywords such as FULLY_REPLICATED in NDB_TABLE comments was not honored. (Bug #24577931) * An ALTER TABLE (http://dev.mysql.com/doc/refman/5.7/en/alter-table.html) statement attempting to set both FULLY_REPLICATED and PARTITION_BALANCE (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) failed with a garbled error message. (Bug #24577894) * A number of dependencies between the binlog injector thread and the NDB utility thread---a recurring source of synchronization and other problems---were removed. The principal changes are listed here: + Moved the setup of binlog injector structures from the utility thread to the injector thread itself. + Removed sharing of some utility and injector thread structures between these threads. + Moved stopping of the utility thread from the injector thread into a common block in which other such threads are stopped. + Removed a number of hacks required by the previous design. + Removed some injector mutex locking and injector condition signaling which were made obsolete by the changes already listed. (Bug #24496910) References: See also: Bug #22204186. * A late commit ACK signal used for FULLY_REPLICATED or READ_BACKUP tables caused the associated ApiConnectionRecord to have an invalid state. (Bug #24459817) References: See also: Bug #24444861. * Added missing error information for a failure occurring when tables on disk became full. (Bug #24425373) * When ndbmtd crashed, the resulting error log incorrectly specified the name of the trace for thread 0, appending the nonexistent suffix _t0 to the file name. (Bug #24353408) * Passing a nonexistent node ID to CREATE NODEGROUP (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-mgm-client-commands.html#ndbclient-create-nodegroup) led to random data node failures. (Bug #23748958) * DROP TABLE (http://dev.mysql.com/doc/refman/5.7/en/drop-table.html) followed by a node shutdown and subesequent master takeover---and with the containing local checkpoint not yet complete prior to the takeover---caused the LCP to be ignored, and in some cases, the data node to fail. (Bug #23735996) References: See also: Bug #23288252. * Removed an invalid assertion to the effect that all cascading child scans are closed at the time API connection records are released following an abort of the main transaction. The assertion was invalid because closing of scans in such cases is by design asynchronous with respect to the main transaction, which means that subscans may well take some time to close after the main transaction is closed. (Bug #23709284) * Although arguments to the DUMP (http://dev.mysql.com/doc/ndbapi/en/ndb-internals-dump-commands.html) command are 32-bit integers, ndb_mgmd used a buffer of only 10 bytes when processing them. (Bug #23708039) * The READ_BACKUP setting was not honored when performing scans on BLOB tables. (Bug #23703536) * Setting FULLY_REPLICATED=1 (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) did not propagate to the internal BLOB part tables used for BLOB (http://dev.mysql.com/doc/refman/5.7/en/blob.html) and TEXT (http://dev.mysql.com/doc/refman/5.7/en/blob.html) columns. (Bug #23703343) * The READ_BACKUP setting was not applied to unique indexes. (Bug #23702848) * In ReadCommitted mode, DBSPJ read primary fragment replicas for tables with READ_BACKUP (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)), even when a local fragment was available. (Bug #23633848) * ALL REPORT MemoryUsage produced incorrect output when fully replicated tables were in use. (Bug #23539805) * Ordered indexes did not inherit READ_BACKUP (see Setting NDB_TABLE options in table comments (http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) from an indexed table, which meant that ordered index scans continued to be routed to only to primary fragment replicas and never to backup fragment replicas. Now DBDICT sets this property on ordered indexes from the table property when it distributes this information to instances of DBTC and DBSPJ. (Bug #23522027) * Updates to a table containing a virtual column could cause the binary logging thread to fail. (Bug #23514050) * A number of potential buffer overflow issues were found and fixed in the NDB codebase. (Bug #23152979) * During an online upgrade from a MySQL Cluster NDB 7.3 release to an NDB 7.4 (or later) release, the failures of several data nodes running the lower version during local checkpoints (LCPs), and just prior to upgrading these nodes, led to additional node failures following the upgrade. This was due to lingering elements of the EMPTY_LCP protocol initiated by the older nodes as part of an LCP-plus-restart sequence, and which is no longer used in NDB 7.4 and later due to LCP optimizations implemented in those versions. (Bug #23129433) * A SIGNAL_DROPPED_REP handler invoked in response to long message buffer exhaustion was defined in the SPJ kernel block, but not actually used. This meant that the default handler from SimulatedBlock was used instead in such cases, which shut down the data node. (Bug #23048816) References: See also: Bug #23251145, Bug #23251423. * When a data node has insufficient redo buffer during a system restart, it does not participate in the restart until after the other nodes have started. After this, it performs a takeover of its fragments from the nodes in its node group that have already started; during this time, the cluster is already running and user activity is possible, including DML and DDL operations. During a system restart, table creation is handled differently in the DIH kernel block than normally, as this creation actually consists of reloading table definition data from disk on the master node. Thus, DIH assumed that any table creation that occurred before all nodes had restarted must be related to the restart and thus always on the master node. However, during the takeover, table creation can occur on non-master nodes due to user activity; when this happened, the cluster underwent a forced shutdown. Now an extra check is made during system restarts to detect in such cases whether the executing node is the master node, and use that information to determine whether the table creation is part of the restart proper, or is taking place during a subsequent takeover. (Bug #23028418) * ndb_restore set the MAX_ROWS attribute for a table for which it had not been set prior to taking the backup. (Bug #22904640) * Whenever data nodes are added to or dropped from the cluster, the NDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) kernel's Event API is notified of this using a SUB_GCP_COMPLETE_REP signal with either the ADD (add) flag or SUB (drop) flag set, as well as the number of nodes to add or drop; this allows NDB to maintain a correct count of SUB_GCP_COMPLETE_REP signals pending for every incomplete bucket. In addition to handling the bucket for the epoch associated with the addition or removal, it must also compensate for any later incomplete buckets associated with later epochs. Although it was possible to complete such buckets out of order, there was no handling of these, leading a stall in to event reception. This fix adds detection and handling of such out of order bucket completion. (Bug #20402364) References: See also: Bug #82424, Bug #24399450. * To be continued in part 2.... [Less]
Posted about 2 months ago
Posted about 2 months ago by Andy Bang
We are pleased to announce that MySQL Enterprise Monitor 3.1.5 is now available for download on the My Oracle Support (MOS) web site. This is a maintenance release that includes a few enhancements and fixes a number of bugs. You can find more ... [More] information on the contents of this release in the change log: http://dev.mysql.com/doc/relnotes/mysql-monitor/3.1/en/news-3-1-5.html (also included at the end of this note for convenience) You will find binaries for the new release on My Oracle Support: https://support.oracle.com Choose the "Patches & Updates" tab, and then choose the "Product or Family (Advanced Search)" side tab in the "Patch Search" portlet. IMPORTANT: MySQL Enterprise Monitor (MEM) 3.3 offers many significant improvements over MEM 3.1 and MEM 3.2 and we highly recommend that you consider upgrading. More information on MEM 3.3 is available here: What's New in MySQL Enterprise Monitor 3.2 http://dev.mysql.com/doc/mysql-monitor/3.3/en/mem-comparison-3-2.html MySQL Enterprise Monitor http://www.mysql.com/products/enterprise/monitor.html MySQL Enterprise Monitor Frequently Asked Questions http://dev.mysql.com/doc/mysql-monitor/3.3/en/mem-faq.html MySQL Enterprise Monitor Change History http://dev.mysql.com/doc/relnotes/mysql-monitor/3.3/en/ Please open a bug or a ticket on My Oracle Support to report problems, request features, or give us general feedback about how this release meets your needs. If you are not a MySQL Enterprise customer and want to try the Monitor and Query Analyzer using our 30-day free customer trial, go to http://www.mysql.com/trials, or contact Sales at http://www.mysql.com/about/contact. Useful URLs * My Oracle Support - http://support.oracle.com/ * What's New in 3.1 - https://dev.mysql.com/doc/mysql-monitor/3.1/en/mem-comparison-3-1.html * Change log - http://dev.mysql.com/doc/relnotes/mysql-monitor/3.1/en/ * Installation documentation - http://dev.mysql.com/doc/mysql-monitor/3.1/en/mem-installing.html * Complete documentation - http://dev.mysql.com/doc/mysql-monitor/3.1/en/ * Product information - http://www.mysql.com/products/enterprise/monitor.html * FAQs - http://dev.mysql.com/doc/mysql-monitor/3.1/en/mem-faq.html * Download - http://support.oracle.com/ Thanks and Happy Monitoring! - The MySQL Enterprise Tools Development Team ========== Changes in MySQL Enterprise Monitor 3.1.5 Functionality Added or Changed * Important Change: The bundled sys schema is upgraded to version 1.5.1. Important: If you have installed an older version of sys schema on your monitored instances, it is recommended to upgrade to the latest version. The upgrade must be performed from the command line. It is not currently possible to upgrade sys schema from MySQL Enterprise Service Manager. * Important Change: As of this release, it is not possible to use MySQL Server 5.1 or 5.5 as the MySQL Enterprise Monitor repository. The installer displays an error and the installation process stops. * The query collection for Query Analyzer was improved in this release. (Bug #22179215) * The required privileges for configuring a non-bundled repository were updated in this release. (Bug #21534737) * The Tomcat server, bundled with the MySQL Enterprise Service Manager, has been upgraded to 7.0.69. * The Warnings Not Being Logged advisor text was updated. * Events for any future-dated asset which is not an agent, OS, or MySQL instance, are deleted. Under certain circumstances, these events contained empty fields. * The following commands are added to the MySQL Enterprise Service Manager configuration utility (config.sh/config.bat): o --renew: renews the existing self-signed certificate. o --import-certificate=: imports the defined certificate o --import-key=: imports the defined private key. * The OpenSSL libraries used by the MySQL Enterprise Monitor installers and MySQL Enterprise Monitor Aggregator have been upgraded to 1.0.1u. * The bundled JRE was updated to 1.8.0_102 for both the Agent and Service Manager. * The MySQL database, bundled with the MySQL Enterprise Service Manager, has been upgraded to MySQL 5.6.34. Bugs Fixed * The documentation did not specify the correct format for the ssl-ca- keystore-path parameter. It was listed as a file path, but is a URL. For example: ssl-ca-keystore-path=file:///mysql/enterprise/agent/etc/mykeystore (Bug #24386496) * The InnoDB Redo Log Pending Writes graph was not displayed for MySQL 5.7 instances. (Bug #23563358) * The Event Handler Asset column did not display any assets for the eleventh handler created. That is, the Asset column correctly displayed assets for the first 10 event handlers, but did not for any other event handler. (Bug #23543149) * The LDAP and SSL documentation did not contain information on how to connect to LDAP servers which implement AES256. (Bug #23507489) * The following variables were missing from the Fulltext Search section of the MySQL Instance InnoDB tab: o innodb_ft_enable_diag_print o innodb_ft_result_cache_limit o innodb_ft_total_cache_size (Bug #23474063) * LDAP configuration settings were not validated by the upgrade process. Some of the fields were empty. As of this release, default values are added to the empty fields. (Bug #23299301) * LDAP configuration was not validated when saved. As a result, if the LDAP connection information was incorrectly configured, NullPointerExceptions were logged, and it was not possible to connect to the LDAP server. (Bug #23299288) * Under certain circumstances, when monitoring MySQL 5.7, warnings were generated in Query Analyzer due to a conflict between the default mysql_mode and the mysql_mode set by MySQL Enterprise Monitor. (Bug #23033046) * It was possible to check/uncheck the assets in the Select Instances field on the Edit Replication Group tab, although the selection or deselection had no effect on the contents of the replication group. Replication groups are populated dynamically, not manually. (Bug #22620609) * The certificate to keystore upgrade process attempted to use the system's openSSL installation instead of that delivered with the installer. As a result, if openSSL was not installed on the system, the upgrade failed. As of this release, the upgrade only uses the openSSL libraries delivered with the installer. (Bug #22522309) * Under certain circumstances, deleting events resulted in a long- running query which generated empty events. (Bug #22247688) * The MySQL Enterprise Service Manager utility config.sh returned a stack trace for unsupported commands, instead of redirecting the user to the help. * Custom agent service names were not maintained by the agent upgrade process. The custom name was overwritten by the default agent service name, MySQLEnterpriseMonitorAgent. * The advice page generated by the MySQL Enterprise Backup Health advisor contained broken links to the InnoDB chapters of the MySQL Reference Manual. It also incorrectly referred to the --start-lsn option as the --lsn option. * On certain browser versions, the symbol << was transformed to Â< * A message about keystore loading was logged every minute by the certificate loader. The log level for this message was changed to reduce the unnecessary log entries. [Less]
Posted about 2 months ago by Jocelyn Ramilison
Dear MySQL users, MySQL Server 5.7.16, a new version of the popular Open Source Database Management System, has been released. MySQL 5.7.16 is recommended for use on production systems. For an overview of what's new in MySQL 5.7, please see ... [More] http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html For information on installing MySQL 5.7.16 on new servers, please see the MySQL installation documentation at http://dev.mysql.com/doc/refman/5.7/en/installing.html MySQL Server 5.7.16 is available in source and binary form for a number of platforms from our download pages at http://dev.mysql.com/downloads/mysql/ MySQL Server 5.7.16 is also available from our repository for Linux platforms, go here for details: http://dev.mysql.com/downloads/repo/ Windows packages are available via the Installer for Windows or .ZIP (no-install) packages for more advanced needs. The point and click configuration wizards and all MySQL products are available in the unified Installer for Windows: http://dev.mysql.com/downloads/installer/ 5.7.16 also comes with a web installer as an alternative to the full installer. The web installer doesn't come bundled with any actual products and instead relies on download-on-demand to fetch only the products you choose to install. This makes the initial download much smaller but increases install time as the individual products will need to be downloaded. We welcome and appreciate your feedback, bug reports, bug fixes, patches, etc.: http://bugs.mysql.com/report.php The following section lists the changes in MySQL 5.7 since the release of MySQL 5.7.15. It may also be viewed online at http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-16.html Enjoy! Changes in MySQL 5.7.16 (2016-10-12) Security Notes * Incompatible Change: For STANDALONE and WIN builds, the default secure_file_priv value has changed from the empty string to NULL. This is a secure-by-default setting because it disables import and export operations. To permit those operations, set secure_file_priv to the path name of the directory to use for those operations. (Bug #24679907, Bug #24695274, Bug #24707666) * The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.1u. For a description of issues fixed in this version, see http://www.openssl.org/news/vulnerabilities.html. This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #24753389) Functionality Added or Changed * yaSSL was upgraded to version 2.4.2. This upgrade corrects issues with: Potential AES side channel leaks; DSA padding for unusual sizes; the SSL_CTX_load_verify_locations() OpenSSL compatibility function failing to handle long path directory names. (Bug #24512715, Bug #24740291) On Behalf of the MySQL/ORACLE RE Team Hery Ramilison [Less]