How to store iterations of similar datasets
Extending comment to answer:

MySQL can handle lots of rows. So making separate schema for each month gives no benefits unless those datasets differ in schema definition.

With some millions of rows per month you have to design your schema and index carefully enough to make querying fast. When you do it so dataset_id (some month identifier or something) is first in primary key for each table, then (at least in InnoDB by default) your data are clustered by it, so they are kept close together in table structure and disk access is not wasted.

If some tables are going to be really big, then you can use partitioning by dataset/month (probably one partition per month, partitioning key has to be part of primary key and each unique index - not sure if it has to be last in index or anywhere..). That way each partition is like physical table, your queries always access specific dataset so can only work on one such "subtable" instead of all data, and you can easily drop old partitions to reclaim some space (probably after moving the data into some archive).