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 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....
↧
MySQL Cluster 7.5.4 has been released (part 1/2) (no replies)
↧