This page describes how to migrate your data to an instance running a later version of MySQL. Before proceeding with this method, consider upgrading the database major version in-place.
There are two ways to upgrade the database major version of your Cloud SQL for MySQL instance by migrating your data.
- Option 1. Use the Database Migration Service (DMS). DMS supports migrating from a Cloud SQL MySQL instance. You can also use it to upgrade your MySQL version.
- Option 2. Move your data from one version of MySQL to another by exporting data from the current instance and importing that data into a new instance running the later version of MySQL. This process involves downtime; you put the current instance into read-only mode before starting the export.
This page discusses the second option.
Plan a major version upgrade
Choose a target major version.
Consider the features offered in each MySQL version and address incompatibilities.
New major versions introduce incompatible changes that might require you to modify the application code, the schema, or the database settings before you can upgrade your database instance. Review the release notes of your target major version to determine the incompatibilities that you need to address. If you're skipping major versions, address the incompatibilities listed for each version that you're skipping.
If you are upgrading from MySQL 5.7 to 8.0, then check for user grant changes in MySQL 8.0.
Cloud SQL for MySQL version 8.0 uses a new system flag called
partial_revokes
, which is set toON
by default. Unlike MySQL 5.7, this flag removes the ability to use wildcard characters in databaseGRANT
commands. To ensure database users have access to the correct database schemas, modify database user privileges before upgrading to MySQL 8.0. Update the user's privileges to use the full name of the required database schemas instead of using wildcard characters.For more information on how this flag works in MySQL 8.0, see partial_revokes in MySQL 8.0.
Test the upgrade with a dry run.
Perform a dry run of the end-to-end upgrade process with a test instance before you upgrade the production database. You might want to test the upgrade using a clone instead of your production database to avoid any performance impact from the export on your production workload.
In addition to validating that the upgrade completes successfully, run tests to ensure that the application behaves as expected on the upgraded database. If you haven't enabled automatic storage increases, take note of the disk storage used by the upgraded dry run instance to determine whether you need to increase the storage capacity for the production instance before upgrading.
Decide when you want to upgrade.
Migrate your data
To migrate your data to a Cloud SQL instance running a more recent database version, follow these steps:
Create the instance with the target database major version.
Make sure the target instance has:
- Sufficient storage to hold all of the current instance's data.
- The same authorized networks as the current instance. Learn more.
- The same user accounts, with the same MySQL privileges and passwords.
For more information, see Creating an instance.
Confirm that you can connect to the new instance with your local MySQL tools and update them if necessary.
Put your current Cloud SQL instance into read-only mode by setting the
read_only
database flag toOn
.For information, see Configure database flags.
Export the current instance's data to a SQL dump file, following the instructions in Export data for import into Cloud SQL.
Do not export the
mysql
system database.Create a Cloud Storage bucket if needed, and upload your SQL dump file to the bucket.
Import the data to the target instance, following the instructions in Import MySQL databases from Cloud Storage.
Optional. After completing the upgrade process, set up replication between the source and target instances by using an external server to update the target with all changes that have occurred since the initial dump was started. Once the two instances are in sync, you can promote the target instance.
For information about using an external server to implement continuous replication, see Replicating from an external server.
Update your applications to connect to the new instance.
When you're confident that your new instance is operating successfully, delete the old instance.
What's next
- Learn about Changes affecting upgrades to MySQL 8.4.
- Learn about Changes affecting upgrades to MySQL 8.0.
- Learn about Changes affecting upgrades to MySQL 5.7.
- Learn about the Database Migration Service.
- Learn about importing and exporting data.
- Learn about options for connecting to an instance.
- Learn about setting MySQL flags.