MySQL 5.7.17 让用户很惊喜地发布了

    Mysql 5.7.17 发布鸟,pig很激动,因为前段时间在mysql 5.7上遇到的一个半同步的bug , 即当连接数超出1024的时候,因为select 函数的fd size限制,可能导致从库发送ack之后,主库接收不到,详细请见作者之前的文章------mysql5.7 semi-sync的bug--semi-sync slave net-flush() reply failed,后来请教oracle公司的mysql开发者宋老师,他让我关注一下发布版本。于是,焦急地等着mysql5.7.17发布。 昨天,mysql5.7.17终于跟用户见面了。今天看了一下change note ,果然没有让pig失望。

"Replication: Using semisynchronous replication was not possible with more than 1024 simultaneous connections. (Bug #79865, Bug #23581389)"


遇到的bug解决了,欣喜。。。。。。


另外,之前千呼万唤的group  replication 已经藐视GA了,有兴趣的朋友可以去测试一下,看跟galera cluster 有多少区别。


5.7.17的改进远比5.7.16大非常多,见下面的change list . 

插播一下广告,某著名公司招聘mysql人才,要求如下:


   ( 1. 本科(含)以上学历,计算机相关专业毕业。
    2. 2年以上mysql运维相关工作经验。
    3. 工作扎实,基础好,学习能力强。
    4. 此岗位面试与工作地点均在北京。

    5. 年龄35周岁以下。)


福利待遇很具有竞争力,有意者请砸简历至b_sky_w_cloud@126.com


Changes in MySQL 5.7.17 (2016-12-12, General Availability)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Bugs Fixed

  • Incompatible Change: A change made in MySQL 5.7.8 for handling of multibyte character sets by LOAD DATA was reverted due to the replication incompatibility (Bug #24487120, Bug #82641)

    References: See also: Bug #23080148.

  • NDB Cluster: MySQL Cluster encountered race conditions compiling lex_hash.h. (Bug #24931655, Bug #83477)

  • InnoDB: The INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS table reported NULL for a foreign key constraint name (UNIQUE_CONSTRAINT_NAME) after restarting the server. (Bug #25126722)

  • InnoDB: A prepared XA transaction was rolled back by a high priority transaction. The high priority transaction should wait if the blocking transaction is in a prepared state. (Bug #25032066)

  • InnoDB: InnoDB passed an invalid argument to syscall(SYS_futex). (Bug #24923840, Bug #83375)

  • InnoDB: On a MySQL 64-bit build on Windows, a file I/O retry result was misinterpreted due to a missing cast necessary for the correct operation of the retry path, resulting in a failing assertion and operating system error. (Bug #24711351)

  • InnoDB: The GCC mach_parse_compressed function should load one to five bytes depending on the value of the first byte. Due to a GCC bug, GCC 5 and 6 emit code to load four bytes before the first byte value is checked (GCC Bug #77673). A workaround prevents this behavior.

    Thanks to Laurynas Biveinis for the patch. (Bug #24707869, Bug #83073)

  • InnoDB: Due to a glibc bug, short-lived detached threads could exit before the caller had returned from pthread_create(), causing a server exit.

    Thanks to Laurynas Biveinis for the patch. (Bug #24605956, Bug #82886)

  • InnoDB: After increasing the value of innodb_undo_logs and restarting the server, the number of active undo tablespaces was not increased when assigning undo tablespaces to newly allocated rollback segments. (Bug #24488141)

  • InnoDB: InnoDB incorrectly reported an error about missing encryption when restoring pages from the doublewrite buffer during recovery. (Bug #24471076)

  • InnoDB: A cached undo segment was not removed from the rollback segment history during a slow shutdown. (Bug #24450908)

  • InnoDB: An error during a table-rebuilding operation on a table with only a generated clustered index (GEN_CLUST_INDEX) raised and assertion due to an error called with an invalid key name. (Bug #24444831)

  • InnoDB: Rotating the tablespace encryption master key while the server is in read-only mode raised an assertion instead of displaying an error message. (Bug #24404091)

  • InnoDB: On a table without an explicitly defined primary key, InnoDB did not replace the implicit clustered index (GEN_CLUST_INDEX) when a unique key was defined on a NOT NULL column. (Bug #24397406)

  • InnoDB: A high priority transaction involving a foreign key constraint check was not able to kill a lower priority blocking transaction. (Bug #24347476)

  • InnoDB: Page cleaner threads asserted due to a regression related to the adaptive hash index feature. (Bug #24346574)

    References: This issue is a regression of: Bug #21407023.

  • InnoDB: InnoDB failed to free memory used by the full-text optimizer thread. (Bug #24331265)

  • InnoDB: When adding a new index, the server dropped an internally defined foreign key index and attempted to use a secondary index defined on a generated virtual column as the foreign key index, causing a server exit. InnoDB now permits a foreign key constraint to reference a secondary index defined on a generated virtual column. (Bug #23533396)

  • InnoDB: An INFORMATION_SCHEMA.FILES query resulted in a server exit due to a race condition with a concurrent tablespace creation operation. (Bug #23477214)

  • InnoDB: A table-copying online ALTER TABLE operation on a ROW_FORMAT=REDUNDANT table with indexed virtual columns raised an assertion. (Bug #22018745)

  • InnoDB: SHOW ENGINE INNODB STATUS output showed a “cleaning up” state for an idle thread. Thread state information was not reset after statement execution. (Bug #21974225, Bug #78777)

  • InnoDB: After a server restart, concurrent INSERT operations a table with an auto-increment primary key resulted in a duplicate entry error. The current auto-increment value was not changed after auto_increment_increment and auto_increment_offset settings were modified. (Bug #20989615, Bug #76872)

  • Replication: When using XA transactions, if a lock wait timeout or deadlock occurred for the applier (SQL) thread on a replication slave, the automatic retry did not work. The cause was that while the SQL thread would do a rollback, it would not roll the XA transaction back. This meant that when the transaction was retried, the first event was XA START which was invalid as the XA transaction was already in progress, leading to an XAER_RMFAIL error. (Bug #24764800)

    References: See also: Bug #24923091, Bug #24966941.

  • Replication: The group commit update of GTIDs has been refactored to improve performance on workloads with many small transactions. (Bug #24398760)

  • Replication: If the relay_log option was not specified in a configuration file, the relay_log_basename variable was being internally constructed on the fly usinghostname but the relay_log_basename variable was not set. When a slave tried to access this uninitialized variable it resulted in an unexpected halt of the server. (Bug #24352667)

  • Replication: For servers built with yaSSL, using group replication with secure connections could result in timeout failures waiting for view delivery. (Bug #23592214)

  • Replication: Tables with special DEFAULT columns, such as DEFAULT CURRENT_TIMESTAMP, that existed only on a slave were not being updated when using row-based replication (binlog_format=ROW). (Bug #22916743)

  • Replication: An XA PREPARE statement that failed during the intermediate steps could lead to an inconsistent XA transaction state, where ID = -1 but the binloggedflag was set to true. This caused asserts while executing XA COMMIT and XA ROLLBACK queries. (Bug #22915670)

  • Replication: Enabling semisynchronous replication when a server was during the commit stage could cause the master to stop unexpectedly. This was related to the patch for Bug# 75570. (Bug #22202516)

  • Replication: The number of generated unwanted fseeks into the binary log file being replicated to a slave has been reduced. (Bug #83226, Bug #24763579)

  • Replication: The rpl.rpl_binlog_errors test was failing sporadically on Windows. (Bug #82302, Bug #24330138)

  • Replication: When binlog_group_commit_sync_delay was set to a value between 1 and 9, if binlog_group_commit_sync_no_delay_count was set to a value greater than 1, and the number of transaction commits was less than binlog_group_commit_sync_no_delay_count, these commits hung forever if no more commits were received; and if binlog_group_commit_sync_no_delay_count was set to 0, all transaction commits hung forever. (Bug #80652, Bug #22891628)

  • Replication: Using semisynchronous replication was not possible with more than 1024 simultaneous connections. (Bug #79865, Bug #23581389)

  • Some Linux startup scripts did not process the datadir setting correctly. (Bug #25159791)

  • CREATE TABLE with a DATA DIRECTORY clause could be used to gain extra privileges. (Bug #25092566)

  • CMake now avoids configuring the -fexpensive-optimizations option for GCC versions for which the option triggers faulty shift-or optimizations. (Bug #24947597, Bug #83517)

  • OEL RPM packages now better detect which platforms have multilib support (for which 32-bit and 64-bit libraries can be installed). Thanks to Alexey Kopytov for the patch. (Bug #24925181, Bug #83457)

  • OEL RPM packages now better detect which platforms do not have multilib support (for which 32-bit and 64-bit libraries can be installed). Thanks to Alexey Kopytov for the patch. (Bug #24916428, Bug #83428)

  • Information about building MySQL 5.6 compatibility libraries in the MySQL 5.7 and higher .spec file is needed only for building libmysqlclient and libmysqld. Information about building the InnoDB memcached plugin was removed. (Bug #24908345, Bug #83409)

  • Compiling MySQL using Microsoft Visual Studio 2015 Version 14.0.25420.1 in relwithdebinfo mode failed with linking errors. (Bug #24748505)

  • To better provide atomic file creation, Debian packaging scripts now use the coreutils install command rather than touchchmod, and chown. (Bug #24688682)

  • For SLES packages, a typo in the installation script postamble prevented some cleanup from occurring. (Bug #24605300, Bug #82389)

  • Warnings occurring during CREATE TABLE ... SELECT could cause a server exit. (Bug #24595992)

  • For LOAD DATA statements, input data with too many column values produced only a warning, rather than an error as in MySQL 5.6. An error now occurs. (Bug #24577194, Bug #82830)

  • For segmentation faults on FreeBSD, the server did not generate a stack trace. (Bug #24566529, Bug #23575445, Bug #81827)

  • The .mylogin.cnf option file is intended for use by client programs, but the server was reading it as well. The server no longer reads it. (Bug #24557925)

  • The X Plugin was built with compilation options different from other plugins. (Bug #24555770, Bug #82777)

  • If mysqladmin shutdown encountered an error determining the server process ID file, it displayed an error message that did not clearly indicate the error was nonfatal. It now indicates that execution continues. (Bug #24496214)

  • The data structure used for ZEROFILL columns could experience memory corruption, leading eventually to a server exit. (Bug #24489302)

  • Operation of the mysql-multi.server.sh script was based on my.cnf in the data directory. That option file is no longer used, so mysql-multi.server.sh has been removed. (Bug #24487870)

  • Use of very long subpartition names could result in a server exit. Now partition or subpartition names larger than 64 characters produce an ER_TOO_LONG_IDENTerror. (Bug #24400628, Bug #82429)

  • The Gis_wkb_vector<Gis_point> copy constructor was not explicitly instantiated, causing build problems for the Intel compiler. (Bug #24397833, Bug #82358)

  • Upgrading from MySQL 5.6 to 5.7.13 and then to 5.7.14 resulted in an incorrect column order in the mysql.slave_master_info system table. (Bug #24384561, Bug #82384)

  • The AppArmor profile installed by Ubuntu packages was missing an entry permitting libnuma to read a /sys hierarchy path, resulting in server startup failure. (Bug #23854929)

  • For an INSERT statement for which the VALUES list produced values for the second or later row using a subquery containing a join, the server could exit after failing to resolve the required privileges. (Bug #23762382)

  • Infinite recursion could occur if the audit_log plugin signalled an error while handling an error. (Bug #23717558, Bug #82052)

  • MySQL now uses readdir() rather than readdir_r(). The latter has been deprecated since glibc 2.24 and caused debug builds of MySQL and builds using GCC 6.1 to fail.

    Additionally, several problems resulting in GCC 6.1 compiler warnings were corrected. (Bug #23708395, Bug #24437737, Bug #82515, Bug #24459890, Bug #25103242)

  • For audit log events in the connection class, the connection_type value was available only for connect events. The value is now available in connect, disconnect, and change-user events. (Bug #23541550)

  • On Solaris, gettimeofday() could return an invalid value and cause a server shutdown. (Bug #23499695)

  • The keyring_file plugin could attempt to write keys to its storage file when the file did not exist. To ensure that keys are flushed only when the correct storage file exists, keyring_file now stores a SHA-256 checksum of the keyring in the file. Before updating the file, the plugin verifies that it contains the expected checksum. (Bug #23498254)

  • START GROUP REPLICATION uses stacked Srv_session and did not return to the correct thread. START GROUP REPLICATION and STOP GROUP REPLICATION are now removed from the list of permitted commands. (Bug #23337984)

  • A union query resulting in tuples larger than max_join_size could result in a server exit. (Bug #23303485)

  • The optimizer could choose ref access on a secondary index rather than range access on the primary key, even when the cost was higher. (Bug #23259872, Bug #81341)

  • For a query with ORDER BY and LIMIT, an optimizer trace did not record the optimizer's switch to a different index. (Bug #23227428, Bug #81250)

  • For some deeply nested expressions, the optimizer failed to detect stack overflow, resulting in a server exit. (Bug #23135667)

  • The sys schema ps_truncate_all_tables() function did not work with read_only enabled or for users with the SUPER privilege with super_read_only enabled, due to errors attempting to truncate Performance Schema tables. The server now skips the read_only/super_read_only check for Performance Schema tables, with the result that ps_truncate_all_tables() will work under such configurations. (Bug #23103937, Bug #81009)

  • For sessions created through the X Plugin, incorrect thread attachment/detachment could cause a server exit. (Bug #23057045)

  • When a JSON value consisted of a large sub-document wrapped in many levels of JSON arrays, objects, or both, serialization of the JSON value sometimes required an excessive amount time to complete. (Bug #23031146)

  • A binary (in-place) upgrade from MySQL 5.6 to 5.7 followed by a data export performed using mysqlpump resulted in an Invalid default value for date_columnerror for attempts to reload the dump file. (Bug #22919028, Bug #80706)

  • SQL statements executed through the X Plugin were not instrumented in the Performance Schema. (Bug #22859462)

  • DROP INDEX operations could fail due to inconsistent handling of index prefix lengths for TEXT-type columns (TINYTEXT and so forth). (Bug #22740093, Bug #80392)

  • The innodb_numa_interleave system variable was erroneously available on some systems that were not NUMA-enabled. Thanks to Tomislav Plavcic for the patch.

    CMake now sets the default WITH_NUMA value based on whether the current platform has NUMA support. For platforms without NUMA support, CMake behaves as follows:

    (Bug #22678436, Bug #80288)

    • With no NUMA option (the normal case), CMake continues normally, producing only this warning: NUMA library missing or required version not available

    • With -DWITH_NUMA=ONCMake aborts with this error: NUMA library missing or required version not available

  • When taking the server offline, a race condition within the Performance Schema could lead to a server exit. (Bug #22551677)

  • On macOS, if a table with an associated trigger was renamed to a new name containing both lowercase and uppercase characters, DROP TRIGGER for the trigger resulted in an ER_NO_SUCH_TABLE error for the table. (Bug #22512899, Bug #79873)

  • In the MYSQL_FIELD C API structure, the org_table value for derived tables was *, which could cause failure for queries that depend on this value. The org_tablevalue for views and derived tables now is set as follows: If the column is selected from a view, org_table names the view. If the column is selected from a derived table, org_table names the base table. If a derived table wraps a view, org_table still names the base table. If the column is an expression, org_table is the empty string. (Bug #22364401, Bug #79641)

  • The Performance Schema events_statements_summary_by_digest table could contain multiple rows for the same statement digest and schema combination, rather than the expected single (unique) row. (Bug #22320066, Bug #79533)

  • For Performance Schema system and status variable tables, variable values expressed in a character set different from utf8 could be truncated or incorrect. (Bug #22313205)

  • Queries that were grouped on a column of a BLOB-based type, and that were ordered on the result of the AVG()VAR_POP(), or STDDEV_POP() aggregate function, returned results in the wrong order if InnoDB temporary tables were used. (Bug #22275357, Bug #79366)

  • On Ubuntu, error messages were displayed during upgrades from Community to Commercial packages that made it appear as though mysqld andmy_print_defaults had not been installed. Those messages were spurious and have been silenced. (Bug #21807248)

  • An invalid string value in the WHERE clause of an UPDATE statement, caused an index scan rather than a range scan to be used. For values not present in the index, this could be much slower. Now the optimizer determines this to be an “impossible WHERE” condition. (Bug #21032418, Bug #76933)

  • The return value from an fread() call was not checked. (Bug #20671150)

  • An in-place ALTER TABLE operation failed to report an error when adding a DATE or DATETIME column under these conditions: a) the column was NOT NULL and no default value was supplied; b) strict and NO_ZERO_DATE SQL modes were enabled; c) the table was not empty.

    An ALTER TABLE operation failed with an error rather than a warning when adding a DATE or DATETIME column under these conditions: a) the column was NOT NULLand no default value was supplied; b) strict SQL mode was enabled and NO_ZERO_DATE SQL mode was not enabled; c) the table was not empty. (Bug #16888677)


上一篇:@Configuration注解的详细介绍


下一篇:rman存储脚本