How to maintain production database with less data and report database with all data
I would keep both, but do it slightly differently...

Keep the large table with all the data, but purge it after 3 months.  (More in a minute)

Build and maintain one or more Summary tables for reporting.  These will be much smaller than the main table and much faster for building Reports.  These are kept forever.

For purging, I would use PARTITION BY RANGE(TO_DAYS(...)) to break it into weekly partitions, then DROP PARTITION and REORGANIZE PARTITION every week.  Details here.  DROP PARTITION is orders of magnitude faster than DELETEing rows.

For Summary tables, see this.  I often see 10x speedup in report generation.

I have sacrificed saving "all" the data.  You may be unconfortable with that.  See the partition link, above, for an alternative to DROP, namely "transportable tablespaces".  With this, you turn the partition into a table (and remove it from the main table, having the effect of DROP).  Now this "table" (with one week's data) can be moved to some other place for safe keeping.  Or move it into a non-replicated database.  Or copy it to the server with a big disk that keeps it "forever".  Optionally, use "transportable tablespaces" again to hook it into a partitioned table at the target.

(This could be done by the "month" instead of by the "week", if you prefer.)