MySQL Community Server 8.0.13 has been released (part 1/2)
Bjorn Munch <[email protected]> Mon, 22 Oct 2018 16:26:22 +0200
| Newsgroups | gmane.comp.db.mysql.general,gmane.comp.db.mysql.packagers |
|---|---|
| Organization | Oracle Corp. |
| Message-ID | <[email protected]> |
[Due to size limitation, this announcement is split in two. This is part 1]
Dear MySQL users,
MySQL Server 8.0.13, a new version of the popular Open Source
Database Management System, has been released. MySQL 8.0.13 is
recommended for use on production systems.
For an overview of what's new in MySQL 8.0, please see
http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html
For information on installing MySQL 8.0.13 on new servers, please see
the MySQL installation documentation at
http://dev.mysql.com/doc/refman/8.0/en/installing.html
MySQL Server 8.0.13 is available in source and binary form for a number of
platforms from the "Development Releases" selection of our download
pages at
http://dev.mysql.com/downloads/mysql/
MySQL Server 8.0.13 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:
http://dev.mysql.com/downloads/installer/
along with .ZIP (no-install) packages for more advanced needs.
8.0.13 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 link lists the changes in the MySQL 8.0 since
the release of MySQL 8.0.12. It may also be viewed
online at
http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-13.html
Enjoy!
==============================================================================
Changes in MySQL 8.0.13 (2018-10-22)
* Account Management Notes
* Compilation Notes
* Configuration Notes
* Data Type Notes
* Deprecation and Removal Notes
* Error Handling
* INFORMATION_SCHEMA Notes
* Logging Notes
* Optimizer Notes
* Packaging Notes
* Performance Schema Notes
* Security Notes
* Spatial Data Support
* SQL Syntax Notes
* XA Transaction Notes
* X Plugin Notes
* Functionality Added or Changed
* Bugs Fixed
Account Management Notes
* It is now possible to require that attempts to change an
account password be verified by specifying the current
password to be replaced. This enables DBAs to prevent
users from changing a password without proving that they
know the current password. It is possible to establish
password-verification policy globally using the
password_require_current system variable, as well as on a
per-account basis using the PASSWORD REQUIRE option of
the CREATE USER and ALTER USER statements. Together with
existing password-management capabilities, the new
capability of requiring verification provides DBAs more
complete control over password management. For more
information, see Password Management
(http://dev.mysql.com/doc/refman/8.0/en/password-management.html).
Important
MySQL implements the password-verification capability
using a new column in the mysql.user system table. If you
upgrade to this MySQL release from an earlier version,
you must run mysql_upgrade (and restart the server) to
incorporate this system database change. Until this is
done, password changes are not possible.
Compilation Notes
* Solaris: MySQL now can be compiled on Solaris using gcc.
(Bug #27802681)
Configuration Notes
* The new WITH_LTO CMake option controls whether to enable
link-time optimization. Currently, this is supported only
by GCC 7 and 8. (Bug #28184537, Bug #28211382)
* The new WITH_RAPIDJSON CMake option controls whether to
compile with the bundled or system RapidJSON library.
(Bug #28024992, Bug #90867)
* The CMAKE_BUILD_TYPE CMake option now supports a Release
build type, which is like the RelWithDebInfo build type
but omits debugging information to reduce the build size.
(Bug #27874068)
* The new sql_require_primary_key system variable makes it
possible to have statements that create new tables or
alter the structure of existing tables enforce the
requirement that tables have a primary key. Enabling this
variable helps avoid performance problems in row-based
replication that can occur when tables have no primary
key. Suppose that a table has no primary key and an
update or delete modifies multiple rows. On the master
server, this operation can be performed using a single
table scan but, when replicated using row-based
replication, results in a table scan for each row to be
modified on the slave. With a primary key, these table
scans do not occur. (Bug #17468242, Bug #69845, Bug
#17005592, Bug #69223)
* To enable the server to listen on a set of addresses, the
--bind-address option now permits a list of
comma-separated IP addresses or host names, not just a
single address or name. For details, see Server Command
Options
(http://dev.mysql.com/doc/refman/8.0/en/server-options.html).
Data Type Notes
* MySQL now supports use of expressions as default values
in data type specifications. This includes the use of
expressions as default values for the BLOB, TEXT,
GEOMETRY, and JSON data types, which previously could not
be assigned default values at all. For details, see Data
Type Default Values
(http://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html).
Deprecation and Removal Notes
* InnoDB; Partitioning: Support for placing table
partitions in shared tablespaces was removed. Shared
tablespaces include the system tablespace and general
tablespaces. For information about identifying partitions
in shared tablespaces and moving them to file-per-table
tablespaces, see Preparing Your Installation for Upgrade
(http://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html).
* InnoDB: Support for TABLESPACE = innodb_file_per_table
and TABLESPACE = innodb_temporary clauses with CREATE
TEMPORARY TABLE is deprecated and will be removed in a
future MySQL version.
* The utf8mb3 character set is deprecated and will be
removed in a future MySQL release. Please use utf8mb4
instead.
* Nested comments have never been supported (although they
might be permitted under some conditions), but now are
considered deprecated and will be removed in a future
MySQL release.
* The deprecated metadata_locks_cache_size and
metadata_locks_hash_instances system variables were
removed.
* The PAD_CHAR_TO_FULL_LENGTH SQL mode has been deprecated
and will be removed in a future MySQL version.
Error Handling
* The MySQL client library now returns better error
messages for OpenSSL errors. Thanks to Facebook for the
patch. (Bug #27855668, Bug #90418)
* Previously, the ER_NO_REFERENCED_ROW_2 and
ER_ROW_IS_REFERENCED_2 error messages for foreign key
operations were displayed and revealed information about
parent tables, even when the user had no parent table
access privileges. Error handling for this situation has
been revised:
+ If the user does have table-level privileges for all
parent tables, ER_NO_REFERENCED_ROW_2 and
ER_ROW_IS_REFERENCED_2 are displayed, the same as
before.
+ If the user does not have table-level privileges for
all parent tables, more generic error messages are
displayed instead (ER_NO_REFERENCED_ROW and
ER_ROW_IS_REFERENCED).
An exception is that, for stored programs defined to
execute with DEFINER privileges, the user against which
privileges are assessed is the user in the program
DEFINER clause, not the invoking user. If that user has
table-level parent table privileges, parent table
information is still displayed. In this case, it is the
responsibility of the stored program creator to hide the
information by including appropriate condition handlers.
(Bug #19477611)
INFORMATION_SCHEMA Notes
* These new INFORMATION_SCHEMA tables are available as
views on data dictionary tables:
+ VIEW_ROUTINE_USAGE provides information about stored
functions used in view definitions.
+ VIEW_TABLE_USAGE provides information about tables
and views used in view definitions.
For more information, see The INFORMATION_SCHEMA
VIEW_ROUTINE_USAGE Table
(http://dev.mysql.com/doc/refman/8.0/en/view-routine-usage-table.html),
and The INFORMATION_SCHEMA VIEW_TABLE_USAGE Table
(http://dev.mysql.com/doc/refman/8.0/en/view-table-usage-table.html).
Logging Notes
* Incompatible Change: The system variables have been
removed that previously configured error logging to the
system log (the Event Log on Windows, and syslog on Unix
and Unix-like systems). Where appropriate, the removed
system variables were replaced with new system variables
managed by the log_sink_syseventlog error log component.
The following table shows the old and new variable names.
Old System Variable New System Variable
log_syslog_facility syseventlog.facility
log_syslog_include_pid syseventlog.include_pid
log_syslog_tag syseventlog.tag
log_syslog None
Important
Installations that used the old system variable names
must update their configuration to use the new variable
names. For more information, see Error Logging to the
System Log
(http://dev.mysql.com/doc/refman/8.0/en/error-log-syslog.html).
References: See also: Bug #27534089.
* A new system variable, log_error_suppression_list,
enables specifying which diagnostics should not be
written to the error log when they occur with a severity
of WARNING or INFORMATION. For example, if a particular
type of warning occurs frequently but is not of interest
(and thus may be considered undesirable "noise" in the
error log), it now can be suppressed.
* The code to handle rewriting of account-management
statements was refactored to make it easier to maintain
and extend. This work resulted in a few minor
user-visible effects in the audit, general, and slow
query logs:
+ Plaintext passwords are replaced by <string> rather
than '<string>'.
+ Default clauses are not written unless specified by
the user.
* Previously, messages written to the error log by several
internal server methods were logged using the
ER_LOG_PRINTF_MSG error code. Each of these messages now
is logged using a unique error code.
Optimizer Notes
* The optimizer now supports a Skip Scan access method that
enables range access to be used in previously
inapplicable situations to improve query performance. For
more information, see Skip Scan Range Access Method
(http://dev.mysql.com/doc/refman/8.0/en/range-optimization.html#range-access-skip-scan).
Thanks to Facebook for
the patch on which this access method is based. (Bug
#26976512, Bug #88103)
* MySQL now supports creation of functional index key parts
that index expression values rather than column values.
Functional key parts enable indexing of values that
cannot be indexed otherwise, such as JSON values. For
details, see CREATE INDEX Syntax
(http://dev.mysql.com/doc/refman/8.0/en/create-index.html).
* Performance of SELECT COUNT(*) FROM tbl_name queries for
InnoDB tables was improved for single-threaded workloads
and when no extra clauses such as WHERE or GROUP BY are
used.
Packaging Notes
* Binary packages that include curl rather than linking to
the system curl library now use curl 7.60.0 rather than
7.45.0. (Bug #28043702)
* Debian packaging was updated to reflect the removal of
yaSSL and that OpenSSL is the default SSL library for all
builds. (Bug #28025599)
* Test plugins have been moved from server packages to test
packages. (Bug #27860172)
* MySQL Router is now included in the MySQL server source
and monolithic binary packages.
Performance Schema Notes
* A new Performance Schema stage, waiting for handler
commit, is available to detect threads going through
transaction commit. Thanks to Facebook for the patch.
(Bug #27855592, Bug #90417)
Security Notes
* Microsoft Windows: On Windows, MySQL Enterprise Edition
distributions now bundle the Cyrus SASL library files
libsasl.dll and saslSCRAM.dll so that the LDAP
authentication plugins can use the SCRAM-SHA-1
authentication method.
* MySQL Enterprise Edition now provides data masking and
de-identification capabilities, implemented as a plugin
library containing a plugin and a set of user-defined
functions. Data masking hides sensitive information by
replacing real values with substitutes. MySQL Enterprise
Data Masking and De-Identification functions enable
masking existing data using several methods such as
obfuscation (removing identifying characteristics),
generation of formatted random data, and data replacement
or substitution. For example:
mysql> SET @ssn = gen_rnd_ssn();
mysql> SET @masked_ssn1 = mask_ssn(@ssn);
mysql> SET @masked_ssn2 = mask_outer(mask_inner (@ssn,4,5,'A'), 3,0,'B
');
mysql> SELECT @ssn, @masked_ssn1, @masked_ssn2;
+-------------+--------------+--------------+
| @ssn | @masked_ssn1 | @masked_ssn2 |
+-------------+--------------+--------------+
| 980-31-2838 | XXX-XX-2838 | BBB-AA-2838 |
+-------------+--------------+--------------+
For more information, see MySQL Enterprise Data Masking
and De-Identification
(http://dev.mysql.com/doc/refman/8.0/en/data-masking.html).
Spatial Data Support
* Incompatible Change: Previously, ST_Area() supported only
geometry arguments having a Cartesian spatial reference
system (SRS) and produced an error when invoked with
geometry arguments that specified a geographic SRS.
ST_Area() now supports geometry arguments having a
geographic SRS and returns the geodetic area in square
meters.
Note
If spatial data contains geometry values that now are
interpreted differently by ST_Area(), existing queries
using this function will return different results,
compared to previous MySQL versions.
* The parser for spatial reference system (SRS) definitions
in CREATE SPATIAL REFERENCE SYSTEM statements now is
stricter about rejecting invalid constructs, and requires
an axis clause in geographic SRS definitions. (Bug
#28186073, Bug #28147723)
* Previously, ST_Validate() supported only geometry
arguments having a Cartesian spatial reference system
(SRS) and produced an error when invoked with geometry
arguments that specified a geographic SRS. ST_Validate()
now supports geometry arguments having a geographic SRS.
Note
If spatial data contains geometry values that now are
interpreted differently by ST_Validate(), existing
queries using this function will return different
results, compared to previous MySQL versions.
* MySQL now implements the ST_Transform() spatial function
for use in converting geometry values from one spatial
reference system (SRS) to another. Currently, it supports
conversion between geographic SRSs. For details, see
Spatial Operator Functions
(http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html).
SQL Syntax Notes
* Incompatible Change: The deprecated ASC or DESC
qualifiers for GROUP BY clauses have been removed.
Queries that previously relied on GROUP BY sorting may
produce results that differ from previous MySQL versions.
To produce a given sort order, provide an ORDER BY
clause.
Queries and stored program definitions from MySQL 8.0.12
or lower that use ASC or DESC qualifiers for GROUP BY
clauses should be amended. Otherwise, upgrading to MySQL
8.0.13 or higher may fail, as may replicating to MySQL
8.0.13 or higher slave servers.
XA Transaction Notes
* Previously, metadata locks for XA transactions in
PREPARED state could be dropped when the client
performing the transaction disconnected or the server
restarted. This could lead to behavior such as one
session being able to drop tables used by an XA
transaction in progress for another session. Metadata
locks for XA transactions in PREPARED state now are
maintained across client disconnects and server restarts,
until an XA COMMIT or XA ROLLBACK is executed. (Bug
#22710164, Bug #79940)
X Plugin Notes
* Important Change: X Protocol now provides a connection
pooling option, which can reduce overhead for
applications that open many connections to MySQL server
such as small web pages or a REST API endpoint. Use the
new mysqlx.getClient(connection, options) operation,
which returns a Client object. By using a Client object,
executing an open session operation retrieves an existing
and currently unused network connection from the pool,
resets it, and uses it. Closing a session marks the
underlying connection as unused and returns it to the
Client object's connection pool. The connection pool is
configured using a options data dictionary, which means
that a deployed application can switch from using
connection pooling or not by simply changing the
connection string.
* A mutex lock has been added to prevent conflict between
multiple X Plugin client sessions when a large number of
sessions are being opened and closed. (Bug #28637947)
* When an X Plugin client attempted to connect to a MySQL
server specifying a database that did not exist on the
server, the error message indicated that access was
denied rather than that the database was not known. The
correct error message is now returned. (Bug #28110957)
* Incorrect copying of an integer value by X Plugin caused
an error relating to misaligned memory access. The issue
is now fixed. (Bug #28070946, Bug #90983)
* Now that X Plugin is loaded and enabled by default, the
default verbosity setting for the error log meant that no
message was visible to indicate that X Plugin was
available on the MySQL server. A message is now issued
during system startup to confirm that X Plugin has been
loaded. (Bug #27287340)
* X Protocol now provides the ability to broadcast
information to interested clients without the requirement
to request the information. In addition, changes related
to Group Replication are also broadcast. As part of this
work the Mysqlx_notified_by_group_replication and
Mysqlx_notice_global_sent status variables have been
added.
Functionality Added or Changed
* Important Change; NDB Cluster; NDB Client Programs:
Removed the deprecated --ndb option for perror. Use
ndb_perror to obtain error message information from NDB
error codes instead. (Bug #81705, Bug #23523957)
References: See also: Bug #81704, Bug #23523926.
* Important Change: Setting user variables in statements
other than SET is now deprecated due to issues that
included those listed here:
+ The order of evaluation for expressions involving
user variables was undefined.
+ The default result type of a variable is based on
its type at the beginning of the statement, which
could have unintended effects when a variable
holding a value of one type at the beginning of a
statement was assigned a new value of a different
type in the same statement.
+ HAVING, GROUP BY, and ORDER BY clauses, when
referring to a variable that was assigned a value in
the select expression list, did not work as expected
because the expression was evaluated on the client
and so it was possible for stale column values from
a previous row to be used.
Syntax such as SELECT @var, @var:=@var+1 is still
accepted in MySQL 8.0 for backward compatibility, but is
subject to removal in a future release.
* InnoDB: The innodb_fsync_threshold system variable
permits a threshold size to be defined for the write
buffer. By default, when InnoDB creates a new data file,
such as a new log file or tablespace file, it flushes the
contents of the write buffer to disk only after a file is
fully written, which can cause a surge in disk write
activity. The innodb_fsync_threshold system variable can
be used to force smaller, periodic flushes to help avoid
such surges in disk write activity. (Bug #27724600)
* InnoDB: User-created temporary tables and internal
temporary tables created by the optimizer are now stored
in session temporary tablespaces that are allocated to a
session from a pool of temporary tablespaces. When a
session disconnects, its temporary tablespaces are
truncated and released back to the pool. In previous
releases, temporary tables were created in the global
temporary tablespace (ibtmp1), which did not return disk
space to the operating system after temporary tables were
dropped.
The innodb_temp_tablespaces_dir variable defines the
location where session temporary tablespaces are created.
The default location is the #innodb_temp directory in the
data directory.
The INNODB_SESSION_TEMP_TABLESPACES table provides
metadata about session temporary tablespaces.
The global temporary tablespace (ibtmp1) now stores
rollback segments for changes made to user-created
temporary tables.
* InnoDB: The InnoDB tablespace encryption feature now
supports general tablespaces. Previously, only
file-per-table tablespaces could be encrypted. To support
encryption of general tablespaces, CREATE TABLESPACE and
ALTER TABLESPACE syntax was extended to include an
ENCRYPTION clause.
The INFORMATION_SCHEMA.INNODB_TABLESPACES table now
includes an ENCRYPTION column that indicates whether or
not a tablespace is encrypted.
The stage/innodb/alter tablespace (encryption)
Performance Schema stage instrument was added to permit
monitoring of general tablespace encryption operations.
* Replication: You can now make changes to the
configuration of a group while it is running, without
having to stop all members to make changes. This
functionality relies on UDFs which are installed with
this version of the plugin, and all members of a group
must have these UDFs installed. To use the UDFs, connect
to an online member and issue SELECT UDF;
Use the group_replication_set_as_primary() UDF to trigger
the election of a specific member as the new primary in a
single-primary group, overriding the usual election
process. See Changing a Group's Primary Member
(http://dev.mysql.com/doc/refman/8.0/en/group-replication-changing-primary-member.html)
for more information.
In addition, you can configure the mode which a group is
using while it is online, changing between single-primary
mode and multi-primary mode. To change the mode of an
online group, choose one of these options:
+ Use
group_replication_switch_to_single_primary_mode() to
change a group running in multi-primary mode to
single-primary mode.
+ Use group_replication_switch_to_multi_primary_mode()
to to change a group running in single-primary mode
to multi-primary mode.
See Changing a Group's Mode
(http://dev.mysql.com/doc/refman/8.0/en/group-replication-changing-group-mode.html)
for more information.
* Replication: You can now inspect and configure the
maximum number of consensus instances at any time for a
group. This maximum is referred to as the event horizon
for a group, and is the maximum number of consensus
instances that the system can execute in parallel. This
enables you to fine tune the performance of your Group
Replication deployment.
To inspect a group's event horizon value at runtime,
issue:
SELECT group_replication_get_write_concurrency()
To set the maximum number of write consensus instances,
issue:
SELECT group_replication_set_write_concurrency(instances);
where instances is the new number of maximum instances
used for consensus.
See Using Group Replication Group Write Consensus
(http://dev.mysql.com/doc/refman/8.0/en/group-replication-group-write-consensus.html)
for more information.
* Solaris: On Solaris, MySQL can now be built with
Developer Studio 12.6. (Bug #27055190, Bug #88316, Bug
#28165246, Bug #91214)
* Data truncation testing was rewritten to avoid undefined
behavior. (Bug #28255956, Bug #91445)
* Out-of-range checking for float values was improved. (Bug
#28225635)
* The upgrade check that the server runs during the startup
process now verifies that partitioned InnoDB tables do
not use shared tablespaces. (Bug #28204431)
* Previously, file I/O performed in the I/O cache in the
mysys library was not instrumented, affecting in
particular file I/O statistics reported by the
Performance Schema about the binary log index file. Now,
this I/O is instrumented and Performance Schema
statistics are accurate. Thanks to Yura Sorokin for the
contribution. (Bug #27788907, Bug #90264)
* Performance for locating user account entries in the
in-memory privilege structures has been improved. Thanks
to Eric Herman for the contribution. (Bug #27772506, Bug
#90244)
* If mysqld --initialize fails to complete but creates an
unusable data directory, it now displays a message that
the data directory is unusable and can safely be removed.
(Bug #27675647)
* Instrumentation is now provided in the Performance Schema
for transaction retries by individual applier threads on
a single-threaded or multithreaded slave. Previously, the
Performance Schema table
replication_applier_status_by_worker displayed
information about errors that stopped the applier thread,
but not about transient errors that occurred before a
transaction was eventually applied. With this
information, you can identify transient errors that are
causing replication lag on replication slaves or Group
Replication group members.
Eight new columns have been added to the Performance
Schema replication_applier_status_by_worker table:
+ LAST_APPLIED_TRANSACTION_RETRIES_COUNT - The number
of times the last applied transaction was retried by
the worker after the first attempt. If the
transaction was applied at the first attempt, this
number is zero.
+ LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER
- The error number of the last transient error that
caused the transaction to be retried.
+ LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAG
E - The message text for the last transient error
that caused the transaction to be retried.
+ LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_TIMEST
AMP - The timestamp in 'YYYY-MM-DD
HH:MM:SS[.fraction]' format for the last transient
error that caused the transaction to be retried.
+ APPLYING_TRANSACTION_RETRIES_COUNT - The number of
times the transaction that is currently being
applied was retried until this moment. If the
transaction was applied at the first attempt, this
number is zero.
+ APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER -
The error number of the last transient error that
caused the current transaction to be retried.
+ APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE -
The message text for the last transient error that
caused the current transaction to be retried.
+ APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP
- The timestamp in 'YYYY-MM-DD HH:MM:SS[.fraction]'
format for the last transient error that caused the
current transaction to be retried.
The existing column
APPLYING_TRANSACTION_START_APPLY_TIMESTAMP is no longer
reset each time a transaction is retried. It now retains
the timestamp from the worker's first attempt to apply
the transaction.
* Previously, CREATE TEMPORARY TABLE and DROP TEMPORARY
TABLE statements were not supported inside transactions,
procedures, functions, or triggers when using GTIDs (that
is, when the enforce_gtid_consistency system variable is
set to ON). It was possible to use these statements with
GTIDs enabled, but only outside of any transaction, and
only with autocommit=1.
From MySQL 8.0.13, this restriction has been removed when
binlog_format is set to ROW or MIXED. With row-based
logging in use, CREATE TEMPORARY TABLE and DROP TEMPORARY
TABLE statements can now be used inside transactions,
procedures, functions, or triggers when GTIDs are
enabled. When binlog_format is set to STATEMENT, the
restriction remains. Because of this difference in
behavior, some additional restrictions now apply to
changing the binlog_format setting at runtime:
+ If a session has open temporary tables, the
replication format cannot be changed for the session
(SET @@session.binlog_format).
+ If any replication channel has open temporary
tables, the replication format cannot be changed
globally (SET @@global.binlog_format or SET
@@persist.binlog_format).
+ If any replication channel applier thread is
currently running, the replication format cannot be
changed globally (SET @@global.binlog_format or SET
@@persist.binlog_format).
Trying to switch the replication format in any of these
cases (or attempting to set the current replication
format) results in an error. You can, however, use
PERSIST_ONLY (SET @@persist_only.binlog_format) to change
the replication format at any time, because this action
does not modify the runtime global system variable value,
and takes effect only after a server restart.
When binlog_format is set to ROW or MIXED, CREATE
TEMPORARY TABLE and DROP TEMPORARY TABLE statements are
not written to the binary log and are therefore not
replicated to slaves. When they are used in transactions,
if the removal of these statements from the transaction
results in an empty transaction, the transaction is not
written to the binary log. If a transaction involving
these statements is rolled back, a warning message is
issued stating that the creation or dropping of the
temporary tables could not be rolled back.
* The MySQL Server code for binary logging has been
refactored to create new internal interfaces for
accessing events in a binary log and relay log. The new
interfaces separate the write and read processes for
binary logging into input and output streams, and
decouple the process of capturing and retrieving binary
log events from the process of writing them to files. A
logical binary log file is used to wrapper the storage
layer operations.
The new internal interfaces make it possible for MySQL
Server to use alternative storage methods for binary log
events besides a standard binary log or relay log file,
including a binary log cache or memory buffer. For
example, Group Replication uses the new interfaces to
serialize events directly to memory buffers and
transaction messages in order to co-ordinate transactions
in the group. mysqlbinlog also now uses them to read
binary log events from standard input.
The following existing error messages are now marked as
obsolete due to the new internal interfaces:
+ ER_BINLOG_CANT_OPEN_LOG
+ ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG
+ ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX
+ ER_RPL_RECOVERY_ERROR_FREEING_IO_CACHE
+ ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED
+ ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED
+ ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED
+ ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE
+ ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED
* The TempTable storage engine now supports storage of
binary large object (BLOB) type columns. This enhancement
improves performance for queries that use temporary
tables containing BLOB data. Previously, temporary tables
that contained BLOB data were stored in the on-disk
storage engine defined by
internal_tmp_disk_storage_engine.
* The MySQL Server code for deserialization of binary log
events has been refactored to improve the identification
and resilient handling of corrupted and invalid event
data during replication, and also during processing with
mysqlbinlog, whether or not binary log checksums are used
on the server.
* Previously, executing RENAME TABLE required that there be
no tables locked with LOCK TABLES. Now it is possible to
rename tables that are locked with a WRITE lock or that
are the product of renaming WRITE-locked tables from
earlier steps in a multiple-table rename operation.
* The group_replication_member_expel_timeout option has
been added to define the time period that the group
should wait for a non-responding member before evicting
the member from the group. This enables you to configure
the eviction process when the connection to members is
unreliable.
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql