Databases experimental 4 services 3.3 GiB RAM 30 GB disk

MySQL InnoDB Cluster

Native MySQL HA via Group Replication - 3 nodes, automatic primary election and failover.

One-click deploy, from $25/mo on a Miget plan.

MySQL InnoDB Cluster is the native MySQL high-availability stack, built on Group Replication: a group of nodes that replicate synchronously, elect a primary automatically, and fail over without manual intervention. This template runs three nodes and a one-shot init that configures the recovery accounts and forms the group.

Group Replication is the fiddliest topology in this catalogue - it depends on stable inter-node addressing (each node`s group address, the seeds list, and the IP allowlist) and is sensitive to node-identity changes. The nodes are configured with the loose- option prefix so they boot cleanly before the plugin loads, and the init is idempotent. It was smoke-tested locally to a three-member ONLINE group.

This template ships no MySQL Router (its 8.4 image is not published on Docker Hub), so apps connect to a node directly or you add a Router alongside. For simpler synchronous HA, percona-xtradb-cluster and mariadb-galera are easier to operate.

#what you get

  • Native MySQL Group Replication (the InnoDB Cluster engine)
  • Automatic primary election and failover
  • 3 nodes + a one-shot group-forming init
  • Single-primary mode (one writer, two in sync)
  • All internal-only; no Router bundled (connect direct)
  • GPLv2

#topology

ServiceRolePublic
mysql-gr-1/2/3Group Replication members (:3306)no (internal)
mysql-initforms the group once, then exitsno

#miget sizing

// this stack needs

3.3 GiB RAM · 30 GB disk · 4 services

1 GiB per node minimum; raise for write throughput. Experimental: Group Replication needs stable addressing and careful operation - PXC or Galera are simpler if you just want synchronous HA.

Hobby - recommended fit

$25/mo

2 vCPU · 4 GiB · 80 GiB disk

Headroom for your own apps: 8 GiB at $49/mo

Professional - production

$85/mo

4 vCPU · 8 GiB · 50 GiB disk

Dedicated resources, production SLOs - plan details

One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.

#vs. the managed service

What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.

ServicePlanMonthlyWhat you get
MySQL InnoDB Cluster on Miget 4 GiB plan$25this whole stack, flat - no usage meters, and room left for your own apps
AWS RDSMulti-AZ~$30standby instance roughly doubles the bill, smallest size

Managed MySQL HA bills the standby instance and per AZ; the 3-node group here is one flat plan.

#vs. other PaaS

Estimated monthly cost of running this exact stack (3.3 GiB RAM, 30 GB disk, 4 containers) elsewhere, from published June 2026 rates.

PlatformEst. monthlyNotes
Miget $25 flat compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan
Heroku ~$163 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
Render ~$48 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
DO App Platform ~$44 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)
Railway ~$37 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
Fly.io ~$24 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra

Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.

#deploy it

On Miget

  1. Create a Compose Stack in app.miget.com pointing at the templates repository
  2. Set the stack path to mysql-innodb-cluster
  3. Set the required variables:
    • MYSQL_ROOT_PASSWORD, root password (same on all nodes)
    • MYSQL_REPLICATION_PASSWORD, Group Replication recovery account
  4. Deploy. Miget layers compose.miget.yaml (RAM, privacy, volumes, managed services) automatically

Locally first?

Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:

git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/mysql-innodb-cluster
docker compose up -d

Same files, same behavior. The template README covers connection strings and scaling notes.

#faq

How is this different from Percona XtraDB Cluster?

Both give synchronous, automatic-failover HA. This uses MySQL`s own Group Replication (the InnoDB Cluster engine) in single-primary mode; PXC and mariadb-galera use Galera multi-primary. Group Replication is the native MySQL stack but the most operationally sensitive of the three.

Why no MySQL Router?

The MySQL Router 8.4 image is not published on Docker Hub, so this template omits it - apps connect to a node directly (discover the primary from performance_schema.replication_group_members) or you run a Router alongside. The group itself provides the HA.

Why experimental?

Group Replication depends on stable inter-node addresses and is sensitive to identity changes on a per-pod platform. It is wired with the loose- option prefix and an idempotent init, and was smoke-tested to a 3-member ONLINE group, but it needs more operational care than the other HA templates.

Ship MySQL InnoDB Cluster today

One compose stack, 3.3 GiB of RAM, from $25/month flat, and it runs on your laptop with the same files.