Azure Database for MySQL migration guide
Overview
This document will demonstrate how to migrate a database from Azure Database for MySQL to PlanetScale. We recommend reading through the Database import documentation to learn how our import tool works before proceeding.
Prerequisites
Before you can perform the migration, you’ll need to gather the following information from you MySQL instance in Azure:
- Server name
- Server admin login name
- Server admin password
- Database name
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.
Configure firewall rules
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:
3.209.149.66 3.215.97.46 34.193.111.15 23.23.187.137 52.6.141.108 52.70.2.89 50.17.188.76 52.2.251.189 52.72.234.74 35.174.68.24 52.5.253.172 54.156.81.4 34.200.24.255 35.174.79.154 44.199.177.24
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.
Configure MySQL server settings
There are three settings that need to be configured before you can import your database:
- gtid_mode
- enforce_gtid_consistency
- binlog_row_image
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”. Next, search for “binlog_row_image” and set to “full”. Click “Save”.
Note
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.
Import your database
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.
The “Connect to database” button will update with the connection status.
Note
If your database uses foreign key constraints, we will detect them after successfully connecting to your external database and automatically enable foreign key constraint support for your database.
If the connection is successful, click “Begin database import” to migrate your data to PlanetScale.
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.
Need help?
Get help from the PlanetScale Support team, or join our GitHub discussion board to see how others are using PlanetScale.