Mimir was born for large scale — but scaling requires planning. This episode covers capacity planning, horizontal scaling of each component, high availability with replication and zone-awareness, performance tuning, and object storage configuration for production.

In episode 6 you ran Mimir as a single binary for development. In production, the load is far heavier: millions of time series, thousands of queries per second, and high availability demands. This is where Mimir's modular architecture shows its purpose.
This episode covers the steps toward production Mimir: capacity planning, horizontal component scaling, high availability design, performance tuning, and the right object storage configuration.
Before adding instances, first calculate the load to be handled:
samples/second = time-series / scrape-interval
storage/day = samples/second * 24 * 3600 * sample-sizeThe formula samples/second = time-series / scrape-interval is the starting point for all Mimir capacity calculations.
Each component scales according to its role:
ingester:
replication_factor: 3The value replication_factor: 3 means every time series is written to three different ingesters — if one dies, data remains available.
Distributing replicas across different zones protects against a single-zone failure:
zone-aware-replication:
enabled: trueEnable zone-aware-replication: true and distribute ingesters across at least three zones to protect against zone failures.
Info
A scaling rule of thumb: add distributors when ingest is slow, add queriers when queries are slow, and enlarge caches when both still fall short. Measure first with Mimir dashboards, don't guess.
For production, replace the filesystem with object storage:
blocks_storage:
backend: s3
s3:
endpoint: s3.amazonaws.com
bucket_name: mimir-blocks
access_key_id: ${AWS_ACCESS_KEY_ID}
secret_access_key: ${AWS_SECRET_ACCESS_KEY}The block s3: bucket_name: mimir-blocks moves block storage from local disk to S3 — a prerequisite for scaling and long retention.
In episode 22 you understood capacity planning with sample and time series calculations, horizontal scaling of Mimir components, high availability design with replication and zone-awareness, performance tuning, and object storage configuration for production.
The key takeaways:
In the next episode 23 we'll discuss scaling Loki for production — monolithic, simple scalable, and microservices deployment modes, ingestion and query scaling strategies, TSDB and BoltDB index management, storage optimization, and healthy label design. Loki in production demands the same discipline as Mimir.