title: MySQL: Efficiently storing large volumes of data for ETL
body: <p>I am building an ETL pipeline which brings together data from multiple text-based sources into a Neo4j graph database.  MySQL is used as an 'interim' store in the pipeline.  The raw files (either CSV, TSV or XML) are loaded into MySQL.  The data is used to update a primary store of 'entities', and after that it is no longer required.</p>
  <p>Although the MySQL interim data is no longer required, I would like to retain it somewhere just in case I need to refer to it some day.  What's the best way to do this?</p>
  <p>I realise I could dump it and store the text somewhere, but that would mean a complicated restoration process.  I am using AWS, so am hoping that I can store it on a EBS volume in such a way that I can simply detach the volume when it is no longer required.  (I would probably delete the volume after 12 months or so).</p>
  <p>I have read about tablespaces, and creating tables externally, but I don't understand how this would work in practice.  How would I 'disconnect' a table when it was no longer in use, and reconnect it later?</p>
  <p>Ideally I would like to be able to detach/reattach an entire schema, but if I have to do it on a per-table basis, that would be fine also.  Maybe I need to run multiple MySQL servers?  Although that would introduce a performance overhead when moving data between instances.</p>
  <p>My tables are usually InnoDB, but I am flexible on this.</p>