Percona MySQL 8.0 migration to Aurora MySQL

Hello,

I’m trying to restore a backup of an on-premise Percona MySQL 8.0 database in AWS but the operation never ends.

I’m testing with a 30GB Percona MySQL replica (real DB is 2TB):

mysql> SHOW VARIABLES LIKE 'version%';
+-------------------------+-----------------------------------------------------+
| Variable_name           | Value                                               |
+-------------------------+-----------------------------------------------------+
| version                 | 8.0.42-33                                           |
| version_comment         | Percona Server (GPL), Release 33, Revision 9dc49998 |
| version_compile_machine | x86_64                                              |
| version_compile_os      | Linux                                               |
| version_compile_zlib    | 1.3.1                                               |
| version_suffix          |                                                     |
+-------------------------+-----------------------------------------------------+


xtrabackup version 8.0.35-36 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 7233322c)

Backup command:

xtrabackup --backup --user=<USER> --password='<PASS>' --slave-info --safe-slave-backup --parallel=2 --stream=xbstream \
--target-dir=<BACKUP_PATH> | split -d --bytes=500MB \
- <BACKUP_PATH>/backup.xbstream

Upload command:

aws s3 cp \
  <BACKUP_PATH> \
  "s3://$BUCKET_NAME/backup/" \
  --recursive

Once it’s done, I navigated to RDS Service in the AWS Console and clicked on Restore from S3. After that, I selected the <BUCKET_NAME> where I uploaded backups files and the prefix backup that I set in the previous command.

After Creating database task started; my problem is that process never ends, I don’t get any error or progress update message, even when this task was running for more than 10 hrs.

Cluster status: Preparing-data-migration

Instance status: Creating

I checked some compatibility parameters, such as:

mysql> SHOW VARIABLES LIKE 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+-----------------------+------------------------+

mysql> SHOW VARIABLES LIKE 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+

mysql> SELECT
    ENGINE,
    COUNT(*) AS table_count
FROM information_schema.TABLES
WHERE TABLE_SCHEMA NOT IN (
    'mysql',
    'information_schema',
    'performance_schema',
    'sys'
)
AND TABLE_TYPE = 'BASE TABLE'
GROUP BY ENGINE
ORDER BY table_count DESC;
+--------+-------------+
| ENGINE | table_count |
+--------+-------------+
| InnoDB |         214 |
+--------+-------------+

mysql>  SELECT TABLE_SCHEMA,
       TABLE_NAME,
       ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mysql'
  AND TABLE_NAME LIKE 'compression_dictionary%';
Empty set (0.00 sec)

mysql> SHOW TABLES FROM mysql LIKE '%compression%';
Empty set (0.00 sec)


Has anyone idea what might be going wrong with this approach?

Is this setup even possible?

Thank you!

Regards,

Yes that’s the guide I’m following

Hi @carlos.mejia.ven ,

Welcome to Percona Community.

I see you have verified that you don’t have compression_dictionary as that’s a limitation mentioned in this doc.

Percona Server for MySQL isn’t supported as a source database, because it can contain compression_dictionary* tables in the mysql schema.

PXB version 8.0.35 is latest version in 8.0 series and will work with PS 8.0.42.

I hope we also have permissions properly for bucket. Do you see anything in the events tab for the cluster?
Can you share the instance class and aurora version you’re using? (expecting it is “lage enough” and 8.0 compatible)

Hi,

Yes, I validated the compatibility limitations before starting and everything looked fine.

I used the AI agent in AWS support site, and it validated credentials and network access to the needed resources:

The restore stalls at the initial S3 read/validation stage before data import: the ingestion role is still being assumed (RoleLastUsed 06:17Z), so RDS loops on S3 access but never writes to Aurora storage. Every customer-controlled cause was ruled out with evidence 
— network/S3 reachability (NAT + SG egress + NACLs all permissive), 
— IAM ingestion role (correct trust + permissions, actively assumed)
— KMS (none)
— bucket region (XXXX)
— bucket policy (none)
— instance class (db.r6g.xlarge ample)
— An empty/missing source (the bucket holds ~31.3 GiB across 68 objects, matching the ~30 GB DB).

The surviving candidates are: 

(a) a Percona XtraBackup validity/version/layout incompatibility surfacing at the migrate/apply phase (unprepared/corrupt backup, source MySQL version not matching the declared SourceEngineVersion 8.0, or files nested below the backup/ prefix) — unverifiable because the agent lacks s3:ListBucket/s3:GetObject

(b) an AWS-side internal control-plane stall.

I have tried this operation 4 times already and always same hung result.

Also, I tried different backups formats: compressed, no-compressed, a single file, split in multiple files

Currently, I’m using:

Engine version: 8.0.mysql_aurora.3.10.3
and db.r6g.xlarge size

What do the logs of your RDS indicate? There should be at least 2 different log files to download from the AWS console regarding this instance.

Hello,

There aren’t logs, these are the only events I found:

 aws rds describe-events \
ster \
  --sourc>   --source-type db-cluster \
>   --source-identifier database-1 \
>   --duration 1440 \
>   --output table
------------------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                                         DescribeEvents                                                                         |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
||                                                                            Events                                                                            ||
|+--------------------------+--------------------------------------+---------------------------------------------------------+-------------------+--------------+|
||           Date           |               Message                |                        SourceArn                        | SourceIdentifier  | SourceType   ||
|+--------------------------+--------------------------------------+---------------------------------------------------------+-------------------+--------------+|
||  2026-10-06T14:11:24.194Z|  DB cluster created as a new cluster |  arn:aws:rds:<REGION>:<ACCOUNT_ID>:cluster:database-1  |  database-1       |  db-cluster  ||
|+--------------------------+--------------------------------------+---------------------------------------------------------+-------------------+--------------+|
|||                                                                       EventCategories                                                                      |||
||+------------------------------------------------------------------------------------------------------------------------------------------------------------+||
|||  creation                                                                                                                                                  |||
||+------------------------------------------------------------------------------------------------------------------------------------------------------------+||

aws rds describe-db-clusters \
entifier database-1 \
  --query>   --db-cluster-identifier database-1 \
{Status:Status,P>   --query 'DBClusters[0].{Status:Status,Progress:PercentProgress}' \
>   --output table
------------------------------------------
|           DescribeDBClusters           |
+-----------+----------------------------+
| Progress  |          Status            |
+-----------+----------------------------+
|  None     |  preparing-data-migration  |
+-----------+----------------------------+

and:

aws cloudtrail lookup-events \
-max-results 50 \
  --query 'Eve>   --lookup-attributes AttributeKey=ResourceName,AttributeValue=dev-mydb-mig \
>   --max-results 50 \
>   --query 'Events[].{Name:EventName}' \
t table>   --output table
-------------------------------
|                             | 
+-----------------------------+
|            Name             |
+-----------------------------+
|  RestoreDBClusterFromS3     |
|  PutBucketEncryption        |
|  PutBucketPublicAccessBlock |
|  CreateBucket               |
+-----------------------------+

Apart from those, there isn’t more information.

The operation stays in this status forever: