2. http://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 : http://dasini.net/blog
Olivier DASINI
3. http://dasini.net/blog/en/
The following is just a summary of the MySQL 8.0.18 new features.
For a more thorough and exhaustive view please read the following :
➢
The MySQL 8.0.18 Maintenance Release is Generally Available
✔ https://mysqlserverteam.com/the-mysql-8-0-18-maintenance-release-is-generally-available/
➢
Changes in MySQL 8.0.18 (2019-10-14, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-18.html
➢
Changes in MySQL Shell 8.0.18 (2019-10-14, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-shell/8.0/en/news-8-0-18.html
➢
Changes in MySQL Router 8.0.18 (2019-10-14, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-18.html
And also the MySQL team Blogs :
➢
https://mysqlserverteam.com/
➢
https://mysqlhighavailability.com/
➢
https://mysqlrelease.com/
➢
http://insidemysql.com/
Disclaimer
5. http://dasini.net/blog/en/
Highlights
➢
Hash Join
➢
EXPLAIN ANALYZE
➢
Only OpenSSL
➢
Random Password
➢
MySQL Shell Enhancements
➢
MySQL Router Enhancements
➢
InnoDB Cluster Enhancements
➢
Group Replication Enhancements
➢
Replication Enhancements
➢
MySQL Enterprise New Features
➢
Thanks to the Contributors
5
7. http://dasini.net/blog/en/
Hash Join 1/2
➢
Implement hash join as a way of executing inner equi-joins in
MySQL
➢
Hash join does not need any index to execute
➢
In most cases more efficient than the current block-nested loop
algorithm
7
EXPLAIN FORMAT=TREE SELECT title FROM film INNER JOIN film_actor USING (last_update)G
*************************** 1. row ***************************
EXPLAIN:
-> Inner hash join (film_actor.last_update = film.last_update) (cost=546314.82
rows=546200)
-> Table scan on film_actor (cost=0.07 rows=5462)
-> Hash
-> Table scan on film (cost=103.00 rows=1000)
8. http://dasini.net/blog/en/
Hash Join 2/2
8
Resources
➢
Hash join in MySQL 8
✔ https://mysqlserverteam.com/hash-join-in-mysql-8/
➢
Hash Join Optimization
✔ https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html
➢
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
✔ https://www.slideshare.net/NorvaldRyeng/mysql-8018-latest-updates-hash-join-and-explain-analyze
➢
WL#2241 - Hash join
✔ https://dev.mysql.com/worklog/task/?id=2241
10. http://dasini.net/blog/en/
EXPLAIN ANALYZE 1/2
➢
Run the query and then produce EXPLAIN output with additional information
about how the optimizer estimates matched the actual execution
➢
Present the estimated execution cost, estimated number of returned rows, the
time to return first row, the time to return all rows (i.e. actual cost), the number of
rows returned and the number of loops
➢
The overall query execution is presented as a tree structure
10
EXPLAIN ANALYZE SELECT title FROM film INNER JOIN film_actor USING (last_update)G
************************************* 1. row *************************************
EXPLAIN:
-> Inner hash join (film_actor.last_update = film.last_update) (cost=546314.82
rows=546200) (actual time=9.444..9.444 rows=0 loops=1)
-> Table scan on film_actor (cost=0.07 rows=5462) (actual
time=0.042..3.338 rows=5462 loops=1)
-> Hash
-> Table scan on film (cost=103.00 rows=1000) (actual
time=0.121..1.229 rows=1000 loops=1)
13. http://dasini.net/blog/en/
Only OpenSSL
➢
All MySQL builds now use OpenSSL
➢
Remove support for wolfSSL and yaSSL from the MySQL codebase
➢
Moving forward, MySQL will only use OpenSSL as its SSL/TLS library
✔ We’re going to be building all of our binaries (commercial and community) for each
release (5.6, 5.7, 8.0) in the same identical way when it comes to SSL/TLS libraries
13
Resources
➢
MySQL is OpenSSL-only now !
✔ https://mysqlserverteam.com/mysql-is-openssl-only-now/
➢
WL#13290 - Remove wolfSSL support from 8.0 codebase.
✔ https://dev.mysql.com/worklog/task/?id=13290
➢
WL#13289 - Remove yaSSL support from 5.6/5.7 codebase
✔ https://dev.mysql.com/worklog/task/?id=13289
15. http://dasini.net/blog/en/
Random Password 1/2
➢
Generate a strong random password
✔ Returned as a result set row to the client
➢
For CREATE USER / ALTER USER / SET PASSWORD statements
➢
Password length is controlled by the generated_random_password_length (20
characters by default)
15
SELECT @@generated_random_password_length;
+------------------------------------+
| @@generated_random_password_length |
+------------------------------------+
| 20 |
+------------------------------------+
CREATE USER 'daz'@'localhost' IDENTIFIED BY RANDOM PASSWORD;
+------+-----------+----------------------+
| user | host | generated password |
+------+-----------+----------------------+
| daz | localhost | f@-iJ>0Ba<62kR1UQ3r; |
+------+-----------+----------------------+
ALTER USER 'daz'@'localhost' IDENTIFIED BY RANDOM PASSWORD;
+------+-----------+----------------------+
| user | host | generated password |
+------+-----------+----------------------+
| daz | localhost | FFx;pyBP)/lyFkBa9yGy |
+------+-----------+----------------------+
SET PASSWORD FOR 'daz'@'localhost' TO RANDOM;
+------+-----------+----------------------+
| user | host | generated password |
+------+-----------+----------------------+
| daz | localhost | }cvqvQTfIbSajQZ4wrj& |
+------+-----------+----------------------+
16. http://dasini.net/blog/en/
Random Password 2/2
16
Resources
➢
MySQL Random Password Generation
✔ https://elephantdolphin.blogspot.com/2019/10/mysql-random-password-generation.html
➢
Random Password Generation
✔ https://dev.mysql.com/doc/refman/8.0/en/password-management.html#random-password-generation
➢
generated_random_password_length
✔ https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_generated_random_password_length
➢
WL#11772 - CREATE USER IDENTIFIED BY RANDOM PASSWORD
✔ https://dev.mysql.com/worklog/task/?id=11772
18. http://dasini.net/blog/en/
MySQL Shell Enhancements
➢
Python 3 Migration
✔ Due to the coming EOL for Python 2.7 by end of this year, the Shell has been updated to use Python 3
✔ The minimum supported version is Python 3.4.3
➢
Built-in Thread Reports
✔ 2 new built-in reports, which provide information drawn from various sources including MySQL's
Performance Schema:
━
threads : lists the current threads in the connected MySQL server which belong to the user account that is used to
run the report
━
thread : provides detailed information about a specific thread in the connected MySQL server
✔ You can run the new reports using MySQL Shell's show and watch commands
➢
2 new control commands
✔ edit (e) : opens a command in the default system editor for editing
✔ system (!) : runs the operating system command that you specify as an argument to the command,
then displays the output from the command in MySQL Shell
18
Resources
➢
MySQL Shell 8.0.18 – What’s New?
✔ https://mysqlserverteam.com/mysql-shell-8-0-18-whats-new/
20. http://dasini.net/blog/en/
MySQL Router Enhancements
➢
Frontend for MySQL Routers keyring
✔ mysqlrouter_keyring is a new utility to manage the Router keyring
➢
Add timestamp precision to log
✔ Implement sub-second timestamp precision for the Router’s log files
20
Resources
➢
Changes in MySQL Router 8.0.18 (2019-10-14, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-18.html
➢
WL#12974 - Frontend for MySQL Routers keyring
✔ https://dev.mysql.com/worklog/task/?id=12974
➢
WL#11194 – Harness: Add optional timestamp precision to log
✔ https://dev.mysql.com/worklog/task/?id=11194
22. http://dasini.net/blog/en/
InnoDB Cluster Enhancements
22
➢
Log SQL statements
✔ Provide information about all SQL statements executed by the AdminAPI
➢
Full IPv6 support
✔ If the target MySQL Server version is equal or higher to 8.0.14, IPv6 addresses can now be used
➢
Reset the cluster recovery accounts
✔ You can now reset the passwords for the internal recovery accounts created by InnoDB Cluster
━
e.g. To follow a custom password lifetime policy
✔ Applies only to the passwords created by InnoDB Cluster
➢
Replication lag
✔ Cluster’s status command now monitor the time between the most recent transaction being
committed and being applied to a cluster member
Resources
➢
MySQL InnoDB Cluster – What’s new in Shell AdminAPI 8.0.18 release
✔ https://mysqlserverteam.com/mysql-innodb-cluster-whats-new-in-shell-adminapi-8-0-18-release/
24. http://dasini.net/blog/en/
Group Replication Enhancements
➢
OFFLINE_MODE
✔ New option available for the group_replication_exit_state_action system variable
✔ Close all connections and disallows new connections from users who do not have the
CONNECTION_ADMIN or SUPER privilege, on a member who left the group unintentionally
✔ Prevent updates like the default READ_ONLY exit action does, but also prevent stale reads
➢
TLS 1.3 support
✔ Secure communication using TLS 1.3 among all group members in a Group Replication cluster
24
Resources
➢
Automatic member fencing with OFFLINE_MODE in Group Replication
✔ https://mysqlhighavailability.com/automatic-member-fencing-with-offline_mode-in-group-replication/
➢
group_replication_exit_state_action
✔ https://dev.mysql.com/doc/refman/8.0/en/group-replication-options.html#sysvar_group_replication_exit_state_action
➢
WL#12895 - Group Replication: Add OFFLINE_MODE to group_replication_exit_state_action
✔ https://dev.mysql.com/worklog/task/?id=12895
➢
Group Replication Secure Socket Layer (SSL) Support
✔ https://dev.mysql.com/doc/refman/8.0/en/group-replication-secure-socket-layer-support-ssl.html
➢
WL#12990 - Group Replication: TLS 1.3 support
✔ https://dev.mysql.com/worklog/task/?id=12990
26. http://dasini.net/blog/en/
Replication Enhancements
➢
Replication with privilege checks
✔ Enable secure replication from an untrusted source to a trusted destination
✔ DBA can now define a user under which the replication applier threads will operate and therefore
do privilege checking
✔ PRIVILEGE_CHECKS_USER account helps secure a replication channel against the unauthorized
or accidental use of privileged or unwanted operations
26
Resources
➢
MySQL 8.0.18 Replication Enhancements
✔ https://mysqlhighavailability.com/mysql-8-0-18-replication-enhancements/
➢
Replication with restricted privileges
✔ https://mysqlhighavailability.com/replication-with-restricted-privileges/
➢
Privileges For The Replication PRIVILEGE_CHECKS_USER Account
✔ https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks-account.html
➢
WL#12966 - Replication with privilege checks
✔ https://dev.mysql.com/worklog/task/?id=12966
28. http://dasini.net/blog/en/
Enterprise New Features
➢
HashiCorp Vault Support
✔ MySQL Enterprise Edition now includes a keyring_hashicorp plugin that uses HashiCorp Vault as a
back end for keyring storage
➢
Incremental Backup supports Page Tracking
✔ mysqlbackup (MEB) supports creating incremental backups using the page tracking functionality of the
MySQL Server
✔ It looks for changed pages in the InnoDB data files that have been modified since the last backup and
then copies them
✔ In general, incremental backups using page tracking are faster than other kinds of incremental backups
28
Resources
➢
MySQL Keyring now speaks Hashicorp Vault
✔ https://mysqlserverteam.com/mysql-keyring-now-speaks-hashicorp-vault/
✔ https://mysqlserverteam.com/mysql-keyring-now-speaks-hashicorp-vault/2/
✔ https://mysqlserverteam.com/mysql-keyring-now-speaks-hashicorp-vault/3/
➢
Using the HashiCorp Vault Keyring Plugin
✔ https://dev.mysql.com/doc/refman/8.0/en/keyring-hashicorp-plugin.html
➢
Incremental Backup Using Page Tracking
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/mysqlbackup.incremental.html#mysqlbackup.page-
tracking.incremental
30. http://dasini.net/blog/en/
Thanks for the Contributions
Facebook
Gillian Gunson (from GitHub)
Przemysław Skibiński (from Percona)
Daniel Black (from IBM)
Satya Bodapati (from Percona)
30
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
Details
➢
MySQL Server 8.0.18 Thanks for the Contributions
✔ https://mysql.wisborg.dk/2019/10/20/mysql-server-8-0-18-thanks-for-the-contributions/
31. http://dasini.net/blog/en/
The complete list of new features in MySQL 8.0
31
There are over 250 new features in MySQL 8.0...
https://mysqlserverteam.com/the-complete-list-of-new-features-in-mysql-8-0/