Migrating from Amazon RDS MySQL without SUPERUSER privileges
Stay organized with collections
Save and categorize content based on your preferences.
Successfully creating and running a migration job with an Amazon RDS MySQL source or
sources that don't allow SUPERUSER privileges can require a few additional steps.
Create the Amazon RDS MySQL migration job
MySQL limits the source hostname definition to 60 characters. Amazon RDS
databases hostnames will typically be longer than 60 characters. If this
is the case for the database you are migrating, configure
a DNS redirect to create a
CNAME record
that associates your domain name with the domain name of your Amazon RDS DB
instance. You can read more about setting up DNS CNAME in the
Cloud DNS documentation or in the
AWS Route53 documentation.
Binary logs must be stored on standard block storage and cannot be stored
on Amazon S3.
Creating a continuous migration job with a manual dump provided requires
GTID to be enabled. GTID_MODE must be either
ON, OFF, or OFF_PERMISSIVE. The GTID_MODE value of
ON_PERMISSIVE isn't supported.
Run the migration job
To take the initial full dump, both for MySQL Amazon RDS and for sources with no SUPERUSER privilege, writes should be stopped at the source for approximately 20 seconds.
You can stop writes either by migrating from a read replica or by stopping writes directly on the source database.
To migrate from a read replica:
Create a read replica in Amazon Web Services (AWS).
Configure the Database Migration Service source connection profile with the connectivity information of the AWS read replica.
After the status of the migration job changes to Starting | Waiting for source writes to stop, disable replication between the AWS primary and its read replica for approximately 20 seconds.
After the status of the migration job changes to Running | Full dump in progress, re-enable replication to the read replica in AWS.
Instead of stopping writes by migrating from a read replica in AWS, you can stop writes directly on the source database. You can use
a script to verify that all writing to the source database is stopped.
Indication of when to stop and resume writes is in the status and substatus of
the migration job. The status changes can be tracked in the API, Console or
directly in Cloud Monitoring:
After the status changes to Starting | Waiting for source writes to stop,
writing should be stopped to the source database. Database Migration Service identifies that the writing stopped, and the status changes to Running | Preparing the dump.
After the status changes to Running | Full dump in progress, it's safe
to resume writing to the source database.
Database Migration Service keeps trying to take the initial dump for approximately 20 minutes. If writes haven't been stopped, or if writes are resumed before the status update, then the process fails and returns an error describing the cause of the failure.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eFor Amazon RDS MySQL sources with hostnames exceeding 60 characters, configure a DNS redirect using a CNAME record to associate your domain name with the RDS instance's domain name.\u003c/p\u003e\n"],["\u003cp\u003eBinary logs for the migration process must be stored on standard block storage, not Amazon S3.\u003c/p\u003e\n"],["\u003cp\u003eContinuous migration jobs using manual dumps necessitate that \u003ccode\u003eGTID\u003c/code\u003e is enabled, with the \u003ccode\u003eGTID_MODE\u003c/code\u003e set to either \u003ccode\u003eON\u003c/code\u003e, \u003ccode\u003eOFF\u003c/code\u003e, or \u003ccode\u003eOFF_PERMISSIVE\u003c/code\u003e, as \u003ccode\u003eON_PERMISSIVE\u003c/code\u003e is not supported.\u003c/p\u003e\n"],["\u003cp\u003eTo ensure a successful initial full dump, writes to the source database should be halted for approximately 20 seconds, either by using a read replica or directly on the source.\u003c/p\u003e\n"],["\u003cp\u003eThe migration job status, trackable via the API, Console, or Cloud Monitoring, indicates when to stop writes (\u003cstrong\u003eStarting | Waiting for source writes to stop\u003c/strong\u003e) and resume writes (\u003cstrong\u003eRunning | Full dump in progress\u003c/strong\u003e).\u003c/p\u003e\n"]]],[],null,["# Migrating from Amazon RDS MySQL without SUPERUSER privileges\n\n\u003cbr /\u003e\n\nSuccessfully creating and running a migration job with an Amazon RDS MySQL source or\nsources that don't allow SUPERUSER privileges can require a few additional steps.\n\nCreate the Amazon RDS MySQL migration job\n-----------------------------------------\n\n1. MySQL limits the source hostname definition to 60 characters. Amazon RDS\n databases hostnames will typically be longer than 60 characters. If this\n is the case for the database you are migrating, configure\n a DNS redirect to create a\n [CNAME record](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)\n that associates your domain name with the domain name of your Amazon RDS DB\n instance. You can read more about setting up DNS CNAME in the\n [Cloud DNS documentation](/dns/docs/set-up-dns-records-domain-name) or in the\n [AWS Route53 documentation](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-rds-db.html).\n\n2. Binary logs must be stored on standard block storage and cannot be stored\n on Amazon S3.\n\n3. Creating a continuous migration job with a manual dump provided requires\n `GTID` to be enabled. `GTID_MODE` must be either\n \u003cvar translate=\"no\"\u003eON\u003c/var\u003e, \u003cvar translate=\"no\"\u003eOFF\u003c/var\u003e, or \u003cvar translate=\"no\"\u003eOFF_PERMISSIVE\u003c/var\u003e. The `GTID_MODE` value of\n \u003cvar translate=\"no\"\u003eON_PERMISSIVE\u003c/var\u003e isn't supported.\n\nRun the migration job\n---------------------\n\nTo take the initial full dump, both for MySQL Amazon RDS and for sources with no `SUPERUSER` privilege, writes should be stopped at the source for approximately 20 seconds.\n\nYou can stop writes either by migrating from a read replica or by stopping writes directly on the source database.\n\nTo migrate from a read replica:\n\n1. Create a read replica in Amazon Web Services (AWS).\n\n2. Configure the Database Migration Service source connection profile with the connectivity information of the AWS read replica.\n\n3. After the status of the migration job changes to **Starting \\| Waiting for source writes to stop**, disable replication between the AWS primary and its read replica for approximately 20 seconds.\n\n4. After the status of the migration job changes to **Running \\| Full dump in progress**, re-enable replication to the read replica in AWS.\n\nInstead of stopping writes by migrating from a read replica in AWS, you can stop writes directly on the source database. You can use [a script](/database-migration/docs/mysql/debugging-tools#write-activities) to verify that all writing to the source database is stopped.\n\nIndication of when to stop and resume writes is in the status and substatus of\nthe migration job. The status changes can be tracked in the API, Console or\ndirectly in Cloud Monitoring:\n\n1. After the status changes to **Starting \\| Waiting for source writes to stop** ,\n writing should be stopped to the source database. Database Migration Service identifies that the writing stopped, and the status changes to **Running \\| Preparing the dump**.\n\n2. After the status changes to **Running \\| Full dump in progress**, it's safe\n to resume writing to the source database.\n\nDatabase Migration Service keeps trying to take the initial dump for approximately 20 minutes. If writes haven't been stopped, or if writes are resumed before the status update, then the process fails and returns an error describing the cause of the failure."]]