Assume I've a big MySQL InnoDB table (100Gb) and want to split these data between shards. The tables looks like this `Post(id: int, user_id: int, body: text, ...)`. Table is heavily indexed. Server is hosted on AWS and uses EBS disks.

Splitting should be performed based on `user_id` key. Eg. user's posts with id 1..100 should be stored on shard1, user's posts with id 101..200 should be stored on shard2 and so on.

I've tried `INSERT .. SELECT`, but estimation indicated, that this would take up to 5 days. 

So, are there any ideas on how to spit the data in reasonable time?