MySQL 5.7 support has officially ended, and all Scalingo clients using this version are strongly encouraged to start planning their migration to MySQL 8.0 LTS. As is customary at Scalingo, this update can be seamlessly executed with just a single click through our dashboard or Command Line Interface (CLI)!
The 5.7 version of MySQL served as a steadfast symbol for the renowned database engine for many years. Now, more than 8 years after its initial release, Oracle has oficially declared the end of its support, marking the shift into the End-Of-Life phase on October 25, 2023.
When software enters the End-Of-Life phase, it means the publisher will no longer provide updates, bug fixes, or security patches. To avoid any potential issues and ensure the proper functioning of your database, it is highly recommended to plan your migration to MySQL 8.0 LTS now.
Version 8 of the MySQL engine comes with a couple of strong prerequisites. Each table must have a Primary Key and rely only on the InnoDB storage engine. We've outlined some straightforward procedures to assist you in this crucial migration.
We will phase out MySQL 5.7 from our platform following a schedule that allows you to plan your transition to version 8.0 LTS with confidence and security.
MySQL 5.7 will remain available for Starter plans until April 1, 2024. During this time, you will be able to launch new instances in version 5.7 to qualify your migration to MySQL 8.0 LTS.
Starting April 1, 2024, MySQL 8.0 LTS will become the default version for all new MySQL instance deployments. It will no longer be possible to launch instances in 5.7, though existing instances will remain unaffected.
From July 1, 2024, instances still running MySQL 5.7 will be gradually and automatically updated to MySQL 8.0 LTS.
If you're on a Business Plan, you probably already know that the cluster mode, providing high availability and automatic, instantaneous loss recovery, has been powered by MySQL 8.0 since 2020! We also operate a substantial number of databases on Starter plans for clients who want to leverage the latest features offered by MySQL 8.0.
So go ahead and make the move! This Long-Term-Support (LTS) version is secure, high-performing, and well-equipped to efficiently handle all workloads you had with the previous version of the MySQL engine.
Firstly, it's important to highlight that you can update your database at any time: this process, both fully automated and secure, has been in place for several years with the primary goal of preventing any compatibility issues and data loss.
As we mentioned upon its released, MySQL 8.0 LTS comes with many improvements but requires specific prerequisites to fully harness its benefits. Now, more than 5 years since its launch, it's highly likely that all of your actively maintained software components are fully compatible!
To avoid any data conflicts, we've set up a mechnanism that blocks the update process if any of your tables lack a Primary Key or don't use the InnoDB storage engine. Should you encounter either of these scenarios, we've documented several MySQL 8 update procedures to assist you in this task.
Start by checking that your application is running on a version that natively supports MySQL 8. As a simple example, WordPress must be updated to at least version 5.0 (released in 2018) to be compatible with MySQL 8.0 LTS.
We previously discussed Review Apps, a fantastic collaboration tool that allows you to validate any code changes.
To qualify your database update, we'll use a different approach as the paradigm is reversed! You'll want to validate that the same version of your code works with a new version of your database.
Here's the process we use internally to qualify an update applicable to our databases:
Perform a manual backup. Caution is the parent of safety! Starter and Business plans have a number of manual backups available that you can create and delete as needed - make use of them!
Create a new Scalingo application. This will serve solely to validate the functioning of our update procedure.
Deploy our application and its addons. It's crucial here to deploy the versions currently in production. In your case, this might involve a MySQL database in version 5.7.
Import representative data. We obviously don't use data straight from our production database, and no customer or personal information. However, we make sure that the data is as representative as possible, both in format and volume, to closely mimic our production database.
Run our test scenarios. This helps us validate the proper functioning of our application to avoid generating false positives later.
Update the database engine. We primarily use the CLI, but this can also be done via the dashboard.
Run our test scenarios on the target version. If everything checks out, we can then remove the application and proceed with the same process on our production database!
Feel free to adapt this procedure to your environment and reach out to us with any questions via chat!
We understand that a database update is never a straightforward operation, and we hope that the tools available on our platform will provide you with a smooth and seamless experience.
If you have any questions regarding this update or the best way to approach it, come find us on support. We'll be happy to guide you and share our experience with you.