Migrating MySQL® clusters
With Data Transfer, you can transfer data from a third-party source cluster to a Managed Service for MySQL® target cluster.
This method allows you to migrate the entire database without interrupting user service. To use it, allow connections to the source cluster from the internet.
To transfer a database from MySQL® to Managed Service for MySQL®:
If you no longer need the resources you created, delete them.
Required paid resources
- Managed Service for MySQL® cluster: computing resources allocated to hosts, size of storage and backups (see Managed Service for MySQL® pricing).
- Public IP addresses if public access is enabled for cluster hosts (see Virtual Private Cloud pricing).
- Each transfer: use of computing resources and number of transferred data rows (see Data Transfer pricing).
Start data transfer
-
Prepare the infrastructure and start the data transfer:
ManuallyTerraform-
Create a Managed Service for MySQL® target cluster with your preferred configuration. In this case, the following applies:
-
The MySQL® version must be the same or higher than in the source cluster.
Transferring data with MySQL® major version upgrade is possible but not guaranteed. For more information, see this MySQL® article
.You cannot
perform migration while downgrading MySQL® version. -
SQL mode must be the same as in the source cluster.
-
-
-
Database type:
MySQL -
Endpoint parameters → Connection settings:
Custom installationConfigure the source cluster connection settings.
-
-
-
Database type:
MySQL -
Endpoint parameters → Connection settings:
Managed Service for MySQL clusterSelect your target cluster from the list and specify its connection settings.
-
-
Create a Snapshot and increment-type transfer and configure it to use the previously created endpoints.
-
Activate the transfer.
Warning
Abstain from making any changes to the data schema in the source and target clusters when the data transfer is running. Learn more in Working with databases during transfer.
-
If you do not have Terraform yet, install it.
-
Get the authentication credentials. You can add them to environment variables or specify them later in the provider configuration file.
-
Configure and initialize a provider. There is no need to create a provider configuration file manually, you can download it
. -
Place the configuration file in a separate working directory and specify the parameter values. If you did not add the authentication credentials to environment variables, specify them in the configuration file.
-
Download the data-transfer-mysql-mmy.tf
configuration file to the same working directory.This file describes:
- Network.
- Subnet.
- Security group and the rule permitting access to the cluster.
- Managed Service for MySQL® target cluster.
- Source endpoint.
- Target endpoint.
- Transfer.
-
Specify the following in
data-transfer-mysql-mmy.tf:-
Target endpoint parameters inherited from the cluster configuration:
target_mysql_version: MySQL® version. Must be the same or higher than in the source cluster.target_sql_mode: SQL mode. It must be the same as in the source cluster.target_db_name: Database name.target_userandtarget_password: Database owner username and password.
-
Make sure the Terraform configuration files are correct using this command:
terraform validateTerraform will show any errors found in your configuration files.
-
Create the required infrastructure:
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
All the required resources will be created in the specified folder. You can check resource availability and their settings in the management console
.The transfer will activate automatically upon creation.
-
-
Finish data transfer
-
Wait for the transfer status to change to Replicating.
-
Switch the source cluster to
read-only
mode and transfer the load to the target cluster. -
On the transfer monitoring page, wait for the Maximum data transfer delay metric to decrease to zero. This means that all changes that occurred in the source cluster after data was copied are transferred to the target cluster.
-
Deactivate the transfer and wait for its status to change to Stopped.
For more information about transfer statuses, see Transfer lifecycle.
Delete the resources you created
Some resources are not free of charge. To avoid paying for them, delete the resources you no longer need:
-
In the terminal window, go to the directory containing the infrastructure plan.
Warning
Make sure the directory has no Terraform manifests with the resources you want to keep. Terraform deletes all resources that were created using the manifests in the current directory.
-
Delete resources:
-
Run this command:
terraform destroy -
Confirm deleting the resources and wait for the operation to complete.
All the resources described in the Terraform manifests will be deleted.
-
For a real example of MySQL® database migration using Data Transfer, see Syncing MySQL data using Yandex Data Transfer.
See also
For other migration methods, see the Yandex Managed Service for MySQL® documentation.