Summary of the MySQL 8.0.22 new features, released on October 19th, 2020.
==
== Highlights
==
Read Only Schema
Error Log Table
Periodic Synchronization For SELECT INTO DUMPFILE|OUTFILE
Libmysql Support For DNS SRV
MySQL Shell Enhancements
> Table dump utility
> Table export utility
MySQL Router Enhancements
> Enable REST API at bootstrap
> Scale routing core to 50k connections
MySQL Replication Enhancements
> Automatic Asynchronous Replication Connection Failover
MySQL NDB Cluster Enhancements
> Support for IPv6 addresses
> Encrypted backup
MySQL Enterprise New Features
> MySQL Enterprise Backup
> Keyring plugin for Oracle Cloud Infrastructure Vault
Thanks to the Contributors
> Krunal Bauskar
> Eric Beuque
> Facebook
> Kamil Holubicki
> Kan Liyong
> Javier Matos Odut
> Gord Thomson
> Andrey Turbanov
> TXSQL (Tencent MySQL)
> Daniël van Eeden
> Xiaoyu Wang
> Denis Yarkovoy
==
== Follow me
==
Blog EN : http://dasini.net/blog/en/
Blog FR : http://dasini.net/blog/fr/
Twitter : https://twitter.com/freshdaz
Youtube : https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
Slideshare : https://www.slideshare.net/freshdaz
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...
MySQL 8.0.22 - New Features Summary
1. MySQL 8.0.22
New Features
Summary
Olivier DASINI
MySQL Principal Solutions Architect
Blog: www.dasini.net/blog/en/
Twitter: @freshdaz
SlideShare: www.slideshare.net/freshdaz
2. www.dasini.net/blog/en/
Me, Myself & I
➢
MySQL Geek
✔ Addicted to MySQL for 15+ years!
✔ Playing with databases for 20+ years
➢
MySQL Writer, Blogger and Speaker
✔ Also former : DBA, Consultant, Architect, Trainer, ...
➢
MySQL Principal Solutions Architect EMEA at Oracle
➢
Stay tuned!
✔ Twitter: @freshdaz
✔ Blog: www.dasini.net/blog/en
✔ SlideShare: www.slideshare.net/freshdaz
Olivier DASINI
3. www.dasini.net/blog/en/
The following is just a summary of the MySQL 8.0.22 new features.
For a more thorough and exhaustive view please read the following :
➢
The MySQL 8.0.22 Maintenance Release is Generally Available
✔ https://mysqlserverteam.com/the-mysql-8-0-22-maintenance-release-is-generally-available/
➢
Changes in MySQLMySQL 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-22.html
➢
Changes in MySQL ShellMySQL Shell 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-shell/8.0/en/news-8-0-22.html
➢
Changes in MySQL RouterMySQL Router 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-22.html
➢
Changes in MySQL NDB ClusterMySQL NDB Cluster 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-cluster/8.0/en/news-8-0-22.html
And especially the MySQL team Blogs :
➢
https://mysqlserverteam.com/
➢
https://mysqlhighavailability.com/
➢
https://mysqlrelease.com/
➢
http://insidemysql.com/
Disclaimer
5. www.dasini.net/blog/en/
Highlights
7
Read Only Schema
Error Log Table
Periodic Synchronization For SELECT INTO DUMPFILE|OUTFILE
Libmysql Support For DNS SRV
MySQL Shell Enhancements
MySQL Router Enhancements
MySQL Replication Enhancements
MySQL NDB Cluster Enhancements
MySQL Enterprise New Features
Thanks to the Contributors
7. www.dasini.net/blog/en/
Read Only Schema
➢
Mechanism to prohibit writes to entities in a schema
➢
A new schema option is introduced: READ ONLY
➢
It can be set in an ALTER SCHEMA|DATABASE statement
➢
Useful for database migration because a database for which READ ONLY is enabled
can be migrated to another MySQL instance without concern that the database
might be changed during the operation
9
SQL> CREATE SCHEMA MyDB;
SQL> CREATE TABLE MyDB.t1(i int);
SQL> ALTER SCHEMA MyDB READ ONLY = 1;
SQL> DROP TABLE MyDB.t1;
ERROR 3989 (HY000): Schema 'MyDB' is in read only mode.
SQL> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_EXTENSIONS WHERE SCHEMA_NAME = 'MyDB';
+--------------+-------------+-------------+
| CATALOG_NAME | SCHEMA_NAME | OPTIONS |
+--------------+-------------+-------------+
| def | MyDB | READ ONLY=1 |
+--------------+-------------+-------------+
8. www.dasini.net/blog/en/
Read Only Schema
10
Resources
➢
ALTER DATABASE Statement - Read Only Option
✔ https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-database-read-only
➢
The INFORMATION_SCHEMA SCHEMATA_EXTENSIONS Table
✔ https://dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-extensions-table.html
➢
WL#13369 - Read only option for schema
✔ https://dev.mysql.com/worklog/task/?id=13369
10. www.dasini.net/blog/en/
Error Log Table
➢
The error-log is now accessible by clients via the performance schema error_log
table
➢
The server reads the error log from file upon startup and maintains the most
recent events while executing
➢
Give users access to error log information without having an account on operating
system level, and granting them access via SSH / read privileges on file-system
level, or setting up monitoring tools for them
12
SQL> SELECT * FROM performance_schema.error_log LIMIT 10;
+----------------------------+-----------+---------+------------+-----------+----------------------------------------------------------------------------------------------------+
| LOGGED | THREAD_ID | PRIO | ERROR_CODE | SUBSYSTEM | DATA |
+----------------------------+-----------+---------+------------+-----------+----------------------------------------------------------------------------------------------------+
| 2020-10-25 00:58:10.350793 | 0 | Warning | MY-010140 | Server | Could not increase number of max_open_files to more than 10000 (request: 20000) |
| 2020-10-25 00:58:10.604898 | 0 | Note | MY-010098 | Server | --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled |
| 2020-10-25 00:58:10.604971 | 0 | System | MY-010116 | Server | /usr/sbin/mysqld (mysqld 8.0.22-cloud) starting as process 15597 |
| 2020-10-25 00:58:10.676447 | 0 | Note | MY-012366 | InnoDB | Using Linux native AIO |
| 2020-10-25 00:58:10.715998 | 1 | System | MY-013576 | InnoDB | InnoDB initialization has started. |
| 2020-10-25 00:58:10.716099 | 1 | Note | MY-013546 | InnoDB | Atomic write enabled |
| 2020-10-25 00:58:10.716189 | 1 | Note | MY-012932 | InnoDB | PUNCH HOLE support available |
| 2020-10-25 00:58:10.718843 | 1 | Note | MY-012948 | InnoDB | Compressed tables use zlib 1.2.11 |
| 2020-10-25 00:58:10.722790 | 1 | Note | MY-013251 | InnoDB | Number of pools: 1 |
| 2020-10-25 00:58:10.854738 | 1 | Note | MY-012955 | InnoDB | Initializing buffer pool, total size = 2.500000G, instances = 4, chunk size =128.000000M |
+----------------------------+-----------+---------+------------+-----------+----------------------------------------------------------------------------------------------------+
11. www.dasini.net/blog/en/
Error Log Table
13
Resources
➢
The error_log Table
✔ https://dev.mysql.com/doc/refman/8.0/en/performance-schema-error-log-table.html
➢
WL#13681 - Make error-log available for queries from a connection
✔ https://dev.mysql.com/worklog/task/?id=13681
13. www.dasini.net/blog/en/
Periodic Synchronization For SELECT INTO DUMPFILE|OUTFILE
➢
Periodic synchronization when writing to files with SELECT INTO DUMPFILE and
SELECT INTO OUTFILE
✔ Enabled by setting select_into_disk_sync server system variable
✔ Output buffer size & optional delay can be set using, respectively,
select_into_buffer_size & select_into_disk_sync_delay
➢
Goal is to periodically write data to the storage device to prevent write stalls from
happening
15
Resources
➢
SELECT ... INTO Statement
✔ https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html
➢
Contribution by Facebook: Periodic fsync in select into outfile controlled ...
✔ https://bugs.mysql.com/bug.php?id=96799
➢
WL#13926 - Periodic synchronization with storage device for select into outfile/dumpfile controlled by
system variables
✔ https://dev.mysql.com/worklog/task/?id=13926
15. www.dasini.net/blog/en/
Libmysql Support For DNS SRV
➢
Add support for DNS SRV (RFC 2782) in the MySQL client library
➢
DNS SRV records allows a DNS admin to map a single DNS domain to multiple
servers and the DNS admin can update this in a central location
✔ Can be used to assist with failover, load balancing, and replication services
✔ An application can use the DNS SRV record to obtain information about candidate MySQL
servers, instead of managing the server information itself
17
Resources
➢
Connecting to the Server Using DNS SRV Records
✔ https://dev.mysql.com/doc/refman/8.0/en/connecting-using-dns-srv.html
➢
WL#13905 - libmysql support for DNS SRV
✔ https://dev.mysql.com/worklog/task/?id=13905
17. www.dasini.net/blog/en/
MySQL Shell Enhancements
Table dump utility
➢
util.dumpTables()
➢
Support the export of a selection of tables or views from a schema, from an on-premise
MySQL server instance into a set of local files or an Oracle Cloud Infrastructure Object
Storage bucket
➢
The exported items can then be imported into a MySQL Server instance or a MySQL
Database Service System using MySQL Shell’s dump loading utility util.loadDump()
➢
It’s also possible to load dumps created by dumpTables into a schema of a different name
21
Resources
➢
Instance Dump Utility, Schema Dump Utility, and Table Dump Utility
✔ https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html
➢
What’s New in MySQL Shell 8.0.22
✔ https://mysqlserverteam.com/whats-new-in-mysql-shell-8-0-22/
18. www.dasini.net/blog/en/
MySQL Shell Enhancements
Table export utility
➢
util.exportTable()
➢
Export a MySQL relational table into a data file in a variety of formats (including CSV, TSV,
JSON, ...), either on the local server or in an Oracle Cloud Infrastructure Object Storage
bucket
➢
The data can then be uploaded into a table on a target MySQL server using MySQL Shell's
parallel table import utility util.importTable()
22
Resources
➢
Table Export Utility
✔ https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-table-export.html
➢
What’s New in MySQL Shell 8.0.22
✔ https://mysqlserverteam.com/whats-new-in-mysql-shell-8-0-22/
20. www.dasini.net/blog/en/
MySQL Router Enhancements
Enable REST API at bootstrap
➢
Bootstrap process now configures REST API functionality into the generated mysqlrouter.conf
configuration file
✔ Make it easier to monitor MySQL Router
➢
New optional --https-port bootstrap argument defines port
✔ 8443 by default
24
Resources
➢
MySQL Router 8.0.22 enables REST API at bootstrap
✔ https://lefred.be/content/mysql-router-8-0-22-enables-rest-api-at-bootstrap/
➢
WL#13906 - Enable REST interface on Router bootstrap
✔ https://dev.mysql.com/worklog/task/?id=13906
21. www.dasini.net/blog/en/
MySQL Router Enhancements
Scale routing core to 50k connections
➢
Refactor the routing plugin to handle a large number of incoming connections
➢
The design is changed from one OS thread per connection to roughly one OS thread per
available CPU core
✔ This raises the concurrent connection limit by a Router instance from around 5,000 to around 50,000
25
Resources
➢
Changes in MySQL Router 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-22.html
➢
WL#10703 - scale to 50k connections
✔ https://dev.mysql.com/worklog/task/?id=10703
23. www.dasini.net/blog/en/
Replication Enhancements
Automatic Asynchronous Replication Connection Failover
➢
Mechanism in asynchronous replication that makes the receiver automatically try to re-
establish an asynchronous replication connection to another sender, in case the
current connection gets interrupted due to the failure of the current sender
➢
The connection fails over if the replication I/O thread stops due to the source stopping or
due to a network failure
➢
Can be used to keep a replica synchronized with multiple MySQL servers or groups
of servers that share data, including asynchronous replication from servers where Group
Replication is in use
29
Resources
➢
Switching Sources with Asynchronous Connection Failover
✔ https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-connection-failover.html
➢
Automatic connection failover for Asynchronous Replication
✔ http://dasini.net/blog/2020/11/05/automatic-connection-failover-for-asynchronous-replication/
➢
WL#12649 - Automatic connection failover for Async Replication Channels - Step I: Automatic
Connection Failover
✔ https://dev.mysql.com/worklog/task/?id=12649
25. www.dasini.net/blog/en/
NDB Cluster Enhancements
34
Support for IPv6 addresses
➢
IPv6 is now supported between all cluster nodes types
➢
It works in dual stack environments and IPv6-only environments
Encrypted backup
➢
Support for NDB native encrypted backup using AES-256-CBC
➢
This includes capabilities to create encrypted backups, restore encryped backups and also
encrypt backups that was created without encryption
Resources
➢
New MySQL NDB Cluster 8.0.22 out now
✔ https://mysqlhighavailability.com/new-mysql-ndb-cluster-8-0-22-out-now/
➢
New things coming in MySQL Cluster 8.0.22
✔ http://mikaelronstrom.blogspot.com/2020/10/new-things-coming-in-mysql-cluster-8022.html
➢
Changes in MySQL NDB Cluster 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-cluster/8.0/en/news-8-0-22.html
➢
What is New in NDB Cluster
✔ https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-what-is-new.html
27. www.dasini.net/blog/en/
Enterprise New Features
MySQL Enterprise Backup
➢
Support cloud backup & restore using the Object Storage service of Oracle Cloud
Infrastructure with Pre-Authenticated Request URLs
✔ New option, --cloud-par-url: PAR URL for the storage bucket or the object
➢
Support S3-compatible cloud storage services
✔ New option --cloud-host: users can specify the hostname of the storage service
➢
Support user authentication by the server using LDAP
✔ 2 new options
━
--plugin-dir: specifies the directory for the client-side plugins
━
--enable-cleartext-plugin: enables the Client-Side Cleartext Pluggable Authentication
36
28. www.dasini.net/blog/en/
Enterprise New Features
37
Resources
➢
Backing Up to Cloud Storage
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-backup-cloud.html
➢
Restoring a Backup from Cloud Storage to a MySQL Server
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/restore-cloud.html
➢
--cloud-par-url
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/backup-cloud-options.html#option_meb_cloud-par-url
➢
Pre-Authenticated Request (PAR) URLs
✔ https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/usingpreauthenticatedrequests.htm
➢
--cloud-host
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/backup-cloud-options.html#option_meb_cloud-host
➢
Using LDAP for Server Authentication
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-ldap.html
➢
--plugin-dir
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/standard-options.html#option_meb_plugin-dir
➢
--enable-cleartext-plugin
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/standard-options.html#option_meb_enable-cleartext-plugin
➢
Changes in MySQL Enterprise Backup 8.0.22 (2020-10-19, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-enterprise-backup/8.0/en/news-8-0-22.html
29. www.dasini.net/blog/en/
Enterprise New Features
Keyring plugin for Oracle Cloud Infrastructure Vault
➢
Manage your MySQL encryption keys for TDE and more using the Oracle Cloud
Infrastructure Vault
➢
New keyring plugin: keyring_oci
✔ It communicates with Oracle Cloud Infrastructure Vault for back end storage
➢
No key information resides in MySQL server local file system storage
➢
All keys are stored in OCI Vault, making this plugin well suited for OCI MySQL
customers for management of their MySQL Enterprise Edition keys
38
30. www.dasini.net/blog/en/
Enterprise New Features
39
Resources
➢
MySQL announces integration with Oracle Cloud Infrastructure Vault
✔ https://blogs.oracle.com/mysql/mysql-announces-integration-with-oracle-cloud-infrastructure-vault
➢
Using the Oracle Cloud Infrastructure Vault Keyring Plugin
✔ https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/keyring-oci-plugin.html
➢
WL#9770 - Keyring plugin for Oracle Public Cloud key store
✔ https://dev.mysql.com/worklog/task/?id=9770
➢
Overview of Vault
✔ https://docs.cloud.oracle.com/en-us/iaas/Content/KeyManagement/Concepts/keyoverview.htm
➢
Oracle Cloud Infrastructure Documentation
✔ https://docs.cloud.oracle.com/en-us/iaas/Content/home.htm
32. www.dasini.net/blog/en/
Thanks To The Contributors
Krunal Bauskar
Eric Beuque
Facebook
Kamil Holubicki
Kan Liyong
Javier Matos Odut
42
If you have patches you would like to contribute you can do so from :
➢
MySQL’s GitHub repository : https://github.com/mysql
➢
Requires signing the Oracle Contributor Agreement :
https://www.oracle.com/technetwork/community/oca-486395.html
➢
MySQL 8.0.22: thank you for the contributions
✔ https://lefred.be/content/mysql-8-0-22-thank-you-for-the-contributions/
Gord Thomson
Andrey Turbanov
TXSQL (Tencent MySQL)
Daniël van Eeden
Xiaoyu Wang
Denis Yarkovoy
33. www.dasini.net/blog/en/
The Complete List Of New Features In MySQL 8.0
43
There are 250+ new features in MySQL 8.0...
https://mysqlserverteam.com/the-complete-list-of-new-features-in-mysql-8-0/