I'm working at a rather large private project for the first time, and it's differet from everything I had to do at work. Now I'm about to write my mySQL interface class (for storing and retrieving data) and an I/O class (for output files in CSV and input / upload of new files), and I'm not sure if they belong to the controller or the model. My intuition says it's model because it contains only logic, so that I'd have to write a seperate controller that uses the implemented interfaces. Is this the right approach?
Life is full of choices. Sometimes you make the good ones, and sometimes you have to kill all the witnesses.
Typically your persistence operations will occur in the model, yes. The model should be talking with a generic persistence interface though, not specifically with SQL or file/IO, since the persistence mechanism could change.