Congratulations to Ubuntu on releasing 16.04 LTS with MySQL 5.7! As far as I know, it’s the first stable release of a Linux distro that contains MySQL 5.7. Fedora and openSUSE also have MySQL 5.7, but not yet in a stable release.
This means that Ubuntu users can now benefit from all the new features in MySQL 5.7, like JSON support, improved GIS functionality, multi source replication, and more.
The Ubuntu package maintainers and release team worked closely with Oracle engineers to make this happen. Why? Because upgrading a package that so many other packages depend on is not a simple task.
Directly from 5.5 to 5.7
The first challenge was to find out if we could upgrade to 5.7 at all. Ubuntu 16.04 is a Long Term Support (LTS) release that will be maintained for 5 years, and users must be able to upgrade from one LTS to the next. The previous LTS, Ubuntu 14.04, shipped with MySQL 5.5 as default (although 5.6 is also available). However, MySQL upgrades are only officially supported from one version to the next, so in order to go from 5.5 to 5.7, one has to go via 5.6.
This was a potential showstopper, and we considered all options, including building a 5.6 mysql_upgrade that linked with the embedded server library and would only be used to do an intermediate upgrade step. But after a lot of analysis and testing, we decided to go forward with a direct upgrade from 5.5 to 5.7.
Please note that this decision doesn’t change the official support policy for MySQL. The decision to do a direct upgrade was made after careful analysis of the way Ubuntu uses MySQL and how upgrades are handled, and is not a general solution.
Impact on other packages
There are a lot of other software packages that use MySQL, either from the client side, or starting and stopping a server process. MySQL 5.7 contains several changes that impact the interface to other software:
- The client library ABI has been cleaned up. A lot of internal symbols have been hidden
- The symlinks for the old thread safe library have been removed (the normal client library has been thread safe since at least MySQL 5.5)
- A new, platform independent initialization method:
mysqld --initializeis preferred over
mysql_install_db, which has been deprecated
- Secure by default: No default test database or grants
- Stricter options parsing
- Strict mode is stricter and on by default
All these changes come with benefits to the user, but they also caused issues in other packages that had to be fixed in order to upgrade to MySQL 5.7. In addition to these differences between MySQL 5.5/5.6 and 5.7, there were changes in how Ubuntu packages MySQL.
The last weeks have been quite hectic, but in the end, the result is worth it. Once again, congratulations on the Ubuntu 16.04 LTS release, and congratulations on the upgrade to MySQL 5.7!