This document will demonstrate how to migrate a database from Azure Database for MySQL to PlanetScale.
Before you can perform the migration, you’ll need to gather the following information from you MySQL instance in Azure:
Server admin login name
Server admin password
The server name and admin login name can be located on the Overview tab of the MySQL instance in Azure.
The server admin password is the same password you set when initially creating the database instance.
To view your available databases, select the Databases tab from the sidebar.
In order for PlanetScale to connect to your Azure database, you must allow traffic into the database through the associated security group. The specific IP addresses you will need to allow depend on the region you plan to host your PlanetScale database. Check the Import tool public IP addresses page to determine the IP addresses to allow before continuing. This guide will use the AWS us-east-1 (North Virginia) region so we’ll allow the following addresses:
188.8.131.52 184.108.40.206 220.127.116.11 18.104.22.168 22.214.171.124 126.96.36.199 188.8.131.52 184.108.40.206 220.127.116.11 18.104.22.168 22.214.171.124 126.96.36.199 188.8.131.52 184.108.40.206 220.127.116.11
To allow traffic into your Azure database, navigate to the “Networking” section from the sidebar and locate the Firewall rules section. There are already a series of inputs allowing you to add entries into the Firewall rules, each of which will permit network traffic from that IP address. Add a new entry for each address required, then click “Save” from the toolbar.
There are two settings that need to be configured before you can import your database:
To access these settings in Azure, select “Server parameters” from the sidebar and enter “gtid” in the search bar. Set both “enforce_gtid_consistency” and “gtid_mode” to “ON”. Click “Save”
For “gtid_mode”, you’ll need to update the value in sequence displayed in the dropdown until it is set to “ON”. For example, if the current setting is “OFF_PERMISSIVE”, you’ll need to first change it to “ON_PERMISSIVE”, save the changes, then set it to “ON” in that order.
In the PlanetScale dashboard, click “New database”, then “Import database”.
At the time of writing this, the Import database feature is in beta. If this is your first time accessing this feature, you will be prompted to opt into using the feature. Click “Join beta” to proceed.
Complete the form using the information gathered in the previous section. Also make sure the “SSL Verification” field is set to “Verify certificate and hostname”. Click “Connect to database” and the import tool will attempt to connect to your Azure MySQL instance.
If the connection was successful, you’ll see the following message. Click “Begin database import” to start importing data.
The following view will show you the progress of your data being imported.
Once your database has finished importing, the view will update to show the database that was created in PlanetScale, as well as the option to enable primary mode. This button will make the PlanetScale version of the database the primary replica. Clicking “Enable primary mode” will display a modal where you can confirm that you want to make this change.
After primary mode is enabled, the third card in the flow will update to give you two options:
- Enable replica mode — Reverts the change performed in the previous step, making Azure your primary once again.
- Finish import — Detaches the databases from replication. Future changes to either the PlanetScale database or the Azure database will not be replicated to each other.
Click “Finish import” to complete the import process. Confirm in the modal that will be displayed.
This concludes the process used to import a database into PlanetScale from Azure Database for MySQL.