Initial Percona Server 5.7 docs

Registered by Laurynas Biveinis

Known regressions in Percona features replaced by Oracle ones:
* http://bugs.mysql.com/bug.php?id=78963 (super_read_only aborts STOP SLAVE if relay_log_info_repository=TABLE, dbg crash)
* http://bugs.mysql.com/bug.php?id=79328 (super_read_only broken as a server option) [HM-TODO]

Removed features:
* HandlerSocket. It might be included in a future release if HandlerSocket starts supporting 5.7.

* InnoDB fake changes. Instead of slave prefetching using the fake changes, a 5.7 intra-schema parallel replication slave should be used instead.

* SHOW ENGINE INNODB STATUS no longer prints the count of active RO transactions.

* InnoDB redo log archiving (https://www.percona.com/doc/percona-server/5.6/management/log_archiving.html) has been removed due to lack of user uptake of the feature

Percona features replaced by Oracle features in 5.7:
* SHOW SLAVE STATUS NOLOCK (http://www.percona.com/doc/percona-server/5.6/reliability/show_slave_status_nolock.html) has been replaced by a regular SHOW SLAVE STATUS (http://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html). Oracle implementation forbids calling it from a function.

* Behavior corresponding to --slow_query_log_timestamp_precision=microsecond is now the default, the variable itself and the behavior corresponding to the variable's "second" value is removed.

* Behavior corresponding to --slow_query_log_timestamp_always=TRUE is now the default,
the variable itself and the behavior corresponding to the variable's "FALSE" value is removed.

* Statement timeout feature (http://www.percona.com/doc/percona-server/5.6/management/statement_timeout.html) has been replaced by Oracle implementation (http://mysqlserverteam.com/server-side-select-statement-timeouts/, http://dev.mysql.com/doc/refman/5.7/en/select.html, http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_statement_time). Differences: the Oracle variable is named max_execution_time instead of max_statement_time; have_statement_timeout variable removed; the timeouts only apply for read-only SELECTs.

* Atomic write support on fusionIO devices with NVMFS (http://www.percona.com/doc/percona-server/5.6/performance/atomic_fio.html) has been replaced by Oracle implementation. It is no longer required to enable innodb_use_atomic_writes variable, and this variable has been removed. The atomic write support will be enabled, and the doublewrite buffer disabled, on supporting devices automatically. The Oracle implementation does not silently adjust innodb_flush_method to O_DIRECT if it has a different value. The user must set it to O_DIRECT explicitly, or atomic writes will not be enabled.

* Online GTID migration patch (http://www.percona.com/doc/percona-server/5.6/flexibility/online_gtid_deployment.html) has been replaced by an upstream variable gtid_mode made dynamic (http://dev.mysql.com/doc/refman/5.7/en/replication-options-gtids.html#option_mysqld_gtid-mode).

* The "Error Code Compatibility" "feature" has been replaced by the multiple start-error-number directive in sql/share/errmsg-utf8.txt support.

* The mysqldump --ignore-create-error option has been replaced by the more general upstream option --ignore-error (http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_ignore-error).

* innodb_log_block_size (https://www.percona.com/doc/percona-server/5.6/scalability/innodb_io.html#innodb_log_block_size) has been replaced by innodb_log_write_ahead_size (https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_log_write_ahead_size). To avoid read on write when the storage block size is not equal to 512 bytes, the latter should be set to the same value the former was. If innodb_log_block_size was set to non-default values, new log files must be created during the upgrade.

* --secure-file-priv without a value, which was used to disable LOAD DATA INFILE, SELECT INTO OUTFILE statements, and LOAD_FILE() function completely (https://www.percona.com/doc/percona-server/5.6/management/secure_file_priv_extended.html), has been replaced by upstream introducing NULL as a possible value to this variable. To migrate, any value-less settings must be replaced by NULL.

* innodb_sched_priority_cleaner variable has been removed, as the effect of setting it to 39 (corresponding to nice value of -20), is now enabled by default.

* innodb_adaptive_hash_index_partitions has been replaced by innodb_adaptive_hash_index_parts.

* In the default server setup (with InnoDB being the only one XA-capable storage engine), --tc-heuristic-recover=COMMIT is silently converted to ROLLBACK. If TokuDB or another XA-supporting 3rd party storage engine is installed, --tc-heuristic-recover=ROLLBACK option is unavailable. The default value of tc-heuristic-recover option in PS 5.6 but not in MySQL 5.6 was "NONE" as a a result of fix for https://bugs.mysql.com/bug.php?id=70860. Since Oracle fixed the same bug in 5.7, the default value is "OFF" now.

* innodb_log_checksum_algorithm feature (https://www.percona.com/doc/percona-server/5.6/scalability/innodb_io.html#innodb_log_checksum_algorithm) has been replaced by innodb_log_checksums option (http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_log_checksums). In particular, to get the effect of innodb_log_checksum_algorithm=crc32, innodb_log_checksums should be set to ON, which is a default setting for this variable.

* innodb_buffer_pool_populate server option (https://www.percona.com/doc/percona-server/5.6/performance/innodb_numa_support.html#innodb_buffer_pool_populate) and numa_interleave mysql_safe.sh option (https://www.percona.com/doc/percona-server/5.6/performance/innodb_numa_support.html#numa_interleave) have been replaced by innodb_numa_interleave server option (http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_numa_interleave). Note that flush_caches mysqld_safe option (https://www.percona.com/doc/percona-server/5.6/performance/innodb_numa_support.html#flush_caches) still remains.

* mysqlbinlog --rewrite-db option (https://www.percona.com/doc/percona-server/5.6/flexibility/mysqlbinlog_change_db.html) implementation has been replaced from MariaDB one with MySQL one (http://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html#option_mysqlbinlog_rewrite-db). The feature is mostly identical with two differences: 1) multiple rewrite rules must be given as separate options, and the ability to list them in a single rule, separated by commas, is lost. That is, any --rewrite-db='a->b,c->d' occurrences must be replaced with --rewrite-db='a->b' --rewrite-db='c->d'. 2) Whitespace around database names is not ignored.

* INFORMATION_SCHEMA.PROCESSLIST.TID column (https://www.percona.com/doc/percona-server/5.6/diagnostics/process_list.html) has been has been replaced by PERFORMANCE_SCHEMA.THREADS.THREAD_OS_ID column (http://dev.mysql.com/doc/refman/5.7/en/threads-table.html). If running under thread pool, THREAD_OS_ID column will always be NULL, where as in the 5.6 implementation TID column showed either NULL, either the assigned worker thread id at the moment.

* innodb_foreground_preflush server variable (https://www.percona.com/doc/percona-server/5.6/performance/xtradb_performance_improvements_for_io-bound_highly-concurrent_workloads.html#innodb_foreground_preflush) has been removed as the upstream implemented a similar feature without a controlling option.

Removed status variables (reason or suggested replacement)[HM-TODO]:
* read_views_memory (transaction descriptors replaced by the upstream implementation)
* descriptors_memory (likewise)
* innodb_mem_total (http://dev.mysql.com/worklog/task/?id=7628, always zero in 5.6- with the default innodb_use_sys_malloc setting)
* The following status variables have been removed because they have enabled-by-default INFORMATION_SCHEMA.INNODB_METRICS counterpart:
** innodb_deadlocks (INFORMATION_SCHEMA.INNODB_METRICS.NAME = "lock_deadlocks")
** Innodb_ibuf_merges ("ibuf_merges")
** Innodb_ibuf_merged_deletes ("ibuf_merges_delete")
** Innodb_ibuf_merged_delete_marks ("ibuf_merges_delete_mark")
** Innodb_ibuf_discarded_deletes ("ibuf_merges_discard_delete")
** Innodb_ibuf_discarded_delete_marks ("ibuf_merges_discard_delete_mark")
** Innodb_ibuf_discarded_inserts ("ibuf_merges_discard_insert")
** Innodb_ibuf_merged_inserts ("ibuf_merges_insert")
** Innodb_ibuf_size ("ibuf_size")
** Innodb_s_lock_os_waits ("innodb_rwlock_s_os_waits")
** Innodb_s_lock_spin_rounds ("innodb_rwlock_s_spin_rounds")
** Innodb_s_lock_spin_waits ("innodb_rwlock_s_spin_waits")
** Innodb_x_lock_os_waits ("innodb_rwlock_x_os_waits")
** Innodb_x_lock_spin_rounds ("innodb_rwlock_x_spin_rounds")
** Innodb_x_lock_spin_waits ("innodb_rwlock_x_spin_waits")
** Innodb_current_row_locks ("lock_row_lock_current_waits")
** Innodb_history_list_length ("trx_rseg_history_len")
* Innodb_mutex_os_waits (SHOW ENGINE INNODB MUTEX presents the same information, but per-mutex instead of whole system aggregation)
* Innodb_mutex_spin_rounds (likewise)
* Innodb_mutex_spin_waits (likewise)

Percona features replaced by Oracle features without user-visible changes:

* mysql --syslog option (http://www.percona.com/doc/percona-server/5.6/diagnostics/mysql_syslog.html) has been replaced by Oracle implementation (http://dev.mysql.com/doc/refman/5.7/en/mysql-logging.html).

* Support for multiple GET_LOCK per connections has been replaced by Oracle implementation, which is based on the same contributed patch by Kostja Osipov.

* super_read_only feature (https://www.percona.com/doc/percona-server/5.6/management/super_read_only.html) has been replaced by an upstream implementation (http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_super_read_only).

* Mutex names in SHOW ENGINE INNODB MUTEX have been replaced by Oracle mutex name implementation.

User-visible changes in Percona features (this goes into "what's changed" page and also should be integrated into corresponding feature docs):

* The minor Percona Server version number ("y" in "5.a.b-x.y") has been dropped to simplify Percona Server versioning.

* Performance Schema memory instrumentation support has been added to the audit, scalability metrics, and PAM authentication plugins, and to track memory used by userstat, per-query variable, changed page tracking, InnoDB redo log archiving, and threadpool features.

* Audit log plugin now produces diagnostics in a format consistent with the rest of the server, having been converted to use MySQL plugin services API.

* The performance_schema.metadata_locks table (https://dev.mysql.com/doc/refman/5.7/en/metadata-locks-table.html) now displays backup and binlog lock information too. The object_type column has two new valid values: "backup", and "binlog."

* INFORMATION_SCHEMA.XTRADB_RSEG table schema has been changed to support new possible InnoDB page sizes. The zip_size column has been removed and replaced by new columns physical_page_size, logical_page_size, and is_compressed.

* INFORMATION_SCHEMA.XTRADB_READ_VIEW table no longer contains the READ_VIEW_UNDO_NUMBER column, which was associated with unused code and always contained zero.

* Interaction between --hidden- option modifier and session_track_system_variables (http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_session_track_system_variables): any variables with --hidden- modifier become hidden from the latter variable too. Thus, they should not be present there. Even if you never set s_t_s_v, care must be taken if a variable contained in its default value (i.e. autocommit) is hidden.

* Nested SET STATEMENT ... FOR SET STATEMENT ... FOR ... statements will have different effect in the innermost clause in case the nested clauses set the same variables: in 5.6 the innermost assignment had effect whereas in 5.7 the outermost assignment is effective.

* TODO PAM plugin proxy users and check_proxy_user option

* Utility user (https://www.percona.com/doc/percona-server/5.6/management/utility_user.html) is treated as a SUPER user for the purposes of offline mode (http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_offline_mode): utility user connections are not dropped if server switches to offline mode and new utility user connections can be established to such server.

* The server will abort startup with an error message if conflicting --enforce-storage-engine and --disabled-storage-engines option values are specified, that is, if the enforced SE is in the list of disabled SEs.

Other doc changes:
* reliability/log_connection_error.rst should replace log_warnings mention with log_error_verbosity=2 or higher, as log_warnings are deprecated in 5.7.

List of upstream bugs fixed in Percona Server 5.7 (let's sort it by upstream bug id):
http://bugs.mysql.com/bug.php?id=68714 / https://bugs.launchpad.net/percona-server/+bug/1157078
http://bugs.mysql.com/bug.php?id=71411 / https://bugs.launchpad.net/percona-server/+bug/1231918
http://bugs.mysql.com/bug.php?id=70500 / https://bugs.launchpad.net/percona-server/+bug/1234562
http://bugs.mysql.com/bug.php?id=71183 / https://bugs.launchpad.net/percona-server/+bug/1262651
http://bugs.mysql.com/bug.php?id=73418 / https://bugs.launchpad.net/percona-server/+bug/1328482
http://bugs.mysql.com/bug.php?id=69146 / https://bugs.launchpad.net/percona-server/+bug/1176496
http://bugs.mysql.com/bug.php?id=75504 / https://bugs.launchpad.net/percona-server/+bug/1411694
http://bugs.mysql.com/bug.php?id=75534 / https://www.percona.com/doc/percona-server/5.6/scalability/innodb_split_buf_pool_mutex.html#innodb-split-buf-pool-mutex
http://bugs.mysql.com/bug.php?id=57583 / https://bugs.launchpad.net/percona-server/+bug/1451351
http://bugs.mysql.com/bug.php?id=49120 / https://bugs.launchpad.net/percona-server/+bug/744103
https://bugs.mysql.com/78894 / TBD
https://bugs.mysql.com/bug.php?id=79117 / https://bugs.launchpad.net/percona-server/+bug/1172090
https://bugs.mysql.com/bug.php?id=79118 / TBD, if our first release is 5.7.9
https://bugs.mysql.com/bug.php?id=77684 / https://bugs.launchpad.net/percona-server/+bug/1475107
http://bugs.mysql.com/bug.php?id=70490 / https://bugs.launchpad.net/percona-server/+bug/1205196
http://bugs.mysql.com/bug.php?id=77399 / bug 1466414
http://bugs.mysql.com/bug.php?id=77591 / bug 1470677
http://bugs.mysql.com/bug.php?id=35125 / https://blueprints.launchpad.net/percona-server/+spec/per-session-server-id
http://bugs.mysql.com/bug.php?id=75480 / https://bugs.launchpad.net/percona-server/+bug/1409652
http://bugs.mysql.com/bug.php?id=72108 / https://bugs.launchpad.net/percona-server/+bug/1296192
http://bugs.mysql.com/bug.php?id=69991 / https://bugs.launchpad.net/percona-server/+bug/1266386
http://bugs.mysql.com/bug.php?id=63130 / https://bugs.launchpad.net/percona-server/+bug/1266386
http://bugs.mysql.com/bug.php?id=53645 / https://bugs.launchpad.net/percona-server/+bug/1354988

Doc source files to remove:
diagnostics/mysql_syslog.rst
reliability/show_slave_status_nolock.rst
slow_query_log_timestamp_precision from diagnostics/slow_extended.rst
flexibility/mysqlbinlog_change_db.rst
flexibility/online_gtid_deployment.rst
management/statement_timeout.rst
performance/atomic_fio.rst
scalability/multiple_user_level_locks.rst
performance/handlersocket.rst
management/fake_changes.rst
reliability/error_pad.rst
diagnostics/innodb_show_lock_names.rst
flexibility/mysqldump_ignore_create_error.rst
diagnostics/innodb_deadlock_count.rst
management/secure_file_priv_extended.rst
management/super_read_only.rst
diagnostics/innodb_show_lock_names.rst
management/log_archiving.rst

UPDATE-2015-12-10:
* (for RNs) PS 5.7.10-rc1 has all the features and bugfixes included in PS 5.6.27-76.0
* Changes in supported platform set from PS 5.6:
** PS 5.7 is not available on RHEL 5 family of Linux distros and Debian 6.

Blueprint information

Status:
Complete
Approver:
Laurynas Biveinis
Priority:
Essential
Drafter:
Laurynas Biveinis
Direction:
Approved
Assignee:
Hrvoje Matijakovic
Definition:
Drafting
Series goal:
Accepted for 5.7
Implementation:
Implemented
Milestone target:
milestone icon 5.7.10-1rc1
Started by
Laurynas Biveinis
Completed by
Hrvoje Matijakovic

Related branches

Sprints

Whiteboard

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.