I wound up solving my problem by using the following method:
Dump structure only of all databases I want to migrate
Create a full backup using innobackupex
Perform an --apply-log and --export against the new backup
Import structure only backups to target percona cluster
Discard table space for all the tables in my imported structures
Copy .ibd, .exp, and .cfg files from the appropriate database folders in my innobackupex backup into the corresponding fodlers in my msql datair
Set ownership to the mysql user on the copied files
Import table space for each table
The whole process start to finish, including taking the backup, was about 4.5 hours to converge and import 350GB of databases.
I’m including a bash script I wrote to loop through the process. It reads in the location of your structure backups and your innobackupex from the command line as input params, and loops through the whole process.
THIS SCRIPT IS DESTRUCTIVE TO YOUR CLUSTER FOR ANY EXISTING TABLES LISTED IN YOUR STRUCTURE EXPORT
It assumes your structure dump files have been dumped to a file named identically to your database name, ie) If your database is called fizzy_widgets, your dump file is called /path/to/structure/fizzy_widgets
#!/bin/bash
structure=${1%/}
backup=${2%/}
for i in $(ls $structure)
do
echo "Cleaning $i"
rm -Rf /var/lib/mysql/$i/*.cfg
rm -Rf /var/lib/mysql/$i/*.exp
echo "Dropping $i"
mysql -e "drop database if exists $i"
echo "Creating $i"
mysql -e "create database $i"
echo "Constructing $i"
mysql $i < $structure/$i
for t in $(mysql -e "use $i;show tables;" | grep -v "Tables_in")
do
echo "Working on $i.$t"
echo "Discarding tablespace"
mysql -e "alter table $i.$t discard tablespace"
echo "Replacing tablespace"
cp $backup/$i/$t.exp /var/lib/mysql/$i/
cp $backup/$i/$t.ibd /var/lib/mysql/$i/
cp $backup/$i/$t.cfg /var/lib/mysql/$i/
chown -R mysql:mysql /var/lib/mysql/$i
echo "Importing tablespace"
mysql -e "alter table $i.$t import tablespace"
done
done