My personal and professional life

2018-04-29

MySQL 8.0 released

Last Thursday (April 19-th) Oracle released MySQL 8.0.11 as General Availability (GA). It's a big new release, including many new features, but my favorites in regards to development are Common Table Expressions (CTO), Window functions, regular expression improvements, NOWAIT and SKIP LOCKED for locking reads, GROUPING function, descending indexes and JSON enhancements. However, there's lot more to MySQL 8 notably transactional data dictionary, atomic DDLs, roles, resource groups, invisible indexes, histograms and many more. There are also performance improvements including Unicode, JSON and regular expressions.
I've been playing with MySQL 8 since Release Candidate 1 was released last September. I have installed MySQL 8.0.3 (RC1) in a Slackware virtual machine and setup replication from my MySQL 5.7 server, so I could experiment with some real data. I'm generally excited with the new development features, but I could take even more if Oracle delivers :-)
There are few things to be aware of with MySQL 8.0:

  • new default authentication plugin caching_sha2_password: This was the first "problem" I encountered last September. If you still need to connect the old way then just add the following to your configuration file and restart the server:

    default_authentication_plugin = mysql_native_password

    See also Frédéric Deschamps's blog post Migrating to MySQL 8.0 without breaking old application.
  • MySQL X plugin is now enabled by default: If you're migrating from MySQL 5.7 or from a previous MySQL 8.0 release (DMRs or RCs), then remove the following directive from your configuration file in order to avoid warnings in the logs:

    plugin-load-add = mysqlx.so
  • it's not possible to upgrade from a previous non-GA release: I was surprised initially and even raised a bug (see 90619) after twitting it first, but then I recalled my previous upgrades and realized that this is normal for MySQL (see MySQL Upgrade Strategies) whether I like it or not. Upgrade from 5.8 to 8.0 is officially supported, but I haven't tried it yet. I would share my experience later.
MySQL 8 is a great new release, which I greatly encourage you to try out, because it offers many useful new features that are part of modern SQL. I however expect that the adoption of this new version would take some time and a clear sign for this is that some of the new JSON functionality was back ported to the previous GA release (5.7.22).