Why would you ever use mysqldump to repopulate a table over load data infile?
Here's the back story to my question. We had a table that was incorrectly partitioned. It was supposed to be partitioned in 10M row chunks by PK. After 90M => 100M it started getting partitioned in 100M row chunks (100M=>200M etc).
The most recent partitions had 135M rows between them and we decided it was time to bite some downtime and fix this mess.
The game plan was basically:
1) mysqldump >= 100M
2) drop partitions >= 100M
3) Create desired partioned ranges
4) readd via the mysqldump files
These dumps were done in 10M chunks so we could reload into the downed master and slaves simultaneously and do some sanity checking in between so we didn't get too far in before realizing we were screwed. This was an append only table that didn't mutate so we were able to have the historical dumps done before hand and scp'd to local copies before the real downtime had to start. Because of this we added --skip-disable-keys since our version of mysql doesn't allow you to do this per partition and didn't want to continuous rebuild after each chunk so that could have something to do with the performance diff I'm about to lay out.
Some benchmark tests before hand left us with an estimated 90 minutes of downtime. We were wrong; the mysqldump reloads were taking about 3-4 times longer than expected.
We had some time to just twiddle our thumbs. Part of the contingency plan was to not drop one of the slaves partitions until the master and everyone else was rebuilt "just in case". While the rebuild was going we decided to do a test, select * into outfile from the untouched slave for some segments we'd yet to get to, then reload those w/ load data infile.
We made our dump, gzip'd it and copied it over to the machines in process of rebuilding. To save some overhead of having to uncompress it then read it again we gzip -dc'd it into a named pipe and then loaded from them.
The load data approach was finishing in about 4 minutes/chunk rather than the 12-15 minutes the mysqldump reload was taking.
I know the manual says this can be faster for larger loads but this left me struggling for a reason why we should use mysqldump if our schema is already in place?
P.S. I'm aware of reorganize partition but have found this dump/reload into alteeed schema to be more performant in the past.