Delete and archive old data from several related tables
Try pt-archiver from Percona Toolkit, it permits to transfer data on the fly between two MySQL instances. 

You can for instance use the --where option to filter result set by date.

It's particularly well designed for your needs, because you can transfer data and delete it from source in the same command.

Official page is here : pt-archiver

An example : 

pt-archiver --source h=&lt;server_source&gt;,D=&lt;database_source&gt;,t=&lt;your_table&gt; --dest h=&lt;server_target&gt; --where "date_field &lt; DATE_SUB(NOW(), INTERVAL 3 MONTH)" --limit 1000 --txn-size 1000 --statistics


Add the option --dry-run if you want to test.

Add the option --no-delete if you want to keep data on source DB.