We design, build and rescue production MySQL InnoDB Clusters across Group Replication, MySQL Router, ProxySQL, ClusterSet DR and Kubernetes. Delivered by DBAs who run these clusters daily and test failover before you depend on it.








Most teams arrive here having already been told InnoDB Cluster is the answer. Sometimes it is. Often the honest recommendation is a managed service, an InnoDB ReplicaSet, or a proxy layer in front of what you already run. We would rather tell you that in week one than build you a cluster you did not need. Here is the comparison we would walk you through, with the vendors' own published numbers.
| Option | Failover, as published by the vendor | What you give up | When we recommend it |
|---|---|---|---|
| MySQL InnoDB ClusterGroup Replication, single or multi-primary | Automatic, driven by group consensus. Real-world target depends on topology and workload, which is why we measure yours rather than quote a number (see failover targets below). | You operate it. Quorum, member recovery, version upgrades and the proxy layer are yours. | You need architectural control, portability across clouds or on-premises, and automatic failover: and you have or will have the operational cover. |
| Amazon Aurora MySQL | “Failover typically completes within 30 seconds.” RDS Proxy “reduces failover times by up to 66%.” | AWS only. Storage engine is Aurora's, not InnoDB. Less granular control over replication behaviour. | You are all-in on AWS, want the operational burden gone, and can accept the pricing model at your I/O profile. |
| Amazon RDS MySQLMulti-AZ DB instance | “Failover times are typically 60 to 120 seconds. However, large transactions or a lengthy recovery process can increase failover time.” | The standby is not readable. No read scaling. The slowest failover of the options here. | Rarely, once you know the number. Many teams are on this topology and believe they have fast failover. |
| Amazon RDS MySQLMulti-AZ DB cluster | “Failover times are typically under 35 seconds.” | AWS only, three instances, region-bound. | You want managed MySQL with readable standbys and 2 to 4 times faster failover than the Multi-AZ instance on today. |
| Google Cloud SQL for MySQL | SLA: Enterprise Plus with HA at 99.99% or better; Enterprise with HA at 99.95% or better. Shared-core and single-zone carry no SLA. | GCP only. Less control over Group Replication internals. | You are on GCP and want the SLA rather than the architecture. |
| Galera / Percona XtraDB Cluster | Synchronous certification-based replication, virtually synchronous commit. | Write-set certification changes application behaviour. Galera's most tightly integrated home is MariaDB. | You need true multi-primary writes and your workload tolerates certification conflicts. |
| InnoDB ReplicaSet | Manual failover, asynchronous replication, managed through the same MySQL Shell AdminAPI. | No automatic failover. | Your network between nodes is not stable enough for group consensus, or you want AdminAPI tooling without the consistency constraints. |
One thing worth knowing before you decide. Oracle's own managed MySQL service, HeatWave, builds its high availability option from three MySQL instances and, in Oracle's words, “high availability uses MySQL Group Replication to replicate data from the primary instance to the secondary instances.”
So the question is rarely InnoDB Cluster or something better. It is usually: who operates Group Replication for you, on whose infrastructure, and at what price. That is a genuine decision with real trade-offs, and it is the first thing we work through with you.
Three patterns we build most often. Each is drawn to the real ports, roles and failure boundaries: not a marketing illustration.
Five capabilities, from architecture through Kubernetes. Each one has a named deliverable you keep.
Workload profiling, consistency-level selection (group_replication_consistency), single-primary against multi-primary, node count against your failure-tolerance target, network latency validation between members, and a version floor.
A topology decision document naming the chosen mode, the consistency setting and the reason for each - plus a diagram matched to your environment.
Provisioning through MySQL Shell AdminAPI, Group Replication configuration persisted to disk, GTID and UUID hygiene, MySQL Router bootstrap, and cutover with live replication so the old primary stays available until you switch.
Idempotent build scripts, a cutover runbook with a rollback step, and the recorded results of a failover test performed before you take traffic.
MySQL Router or ProxySQL selected on the evidence rather than by default, read-write splitting, routing strategy, connection behaviour under member loss, and high availability for the proxy tier itself.
Proxy configuration under version control, plus a documented answer to “what happens to in-flight connections when the primary changes”.
Cross-region replica cluster, replication lag monitoring on the async link, controlled switchover and emergency failover procedures, and a stated recovery point objective you have actually measured.
A DR runbook with the switchover and emergency-failover commands, and a tested restore - not an assumed one.
Operator-based lifecycle management, storage class and volume behaviour under node loss (a common cause of members dropping out of sync), pod disruption budgets, and backup integration.
Helm values or manifests, and the operator upgrade path documented for your MySQL version.
That is what the assessment is for. We start read-only, tell you which capabilities your environment actually calls for, and where the honest answer is “you do not need a cluster”, we say so.
Anyone can publish a failover number. The number that matters is the one measured on your cluster, with your transaction sizes, at your network latency. Here is how we set the target, and what we will and will not promise.
| Question a buyer asks | The answer we publish |
|---|---|
| How many nodes do we need? | Group Replication tolerates f failures with n = 2f + 1 members. Three members tolerate one failure. Five tolerate two. A two-member group tolerates none, which surprises people more often than it should. This is Oracle's published fault-tolerance formula, not our rule of thumb. |
| How many data centres or zones? | Members must be close enough for consensus to be healthy. We validate round-trip latency between candidate locations before committing to a layout, because a cluster that forms cleanly in a lab and then flaps in production is almost always a latency problem. |
| What failover time should we expect? | We set the target during the assessment and then prove it with a failover test before you take production traffic. For reference, the managed alternatives publish: Aurora “typically within 30 seconds”; RDS Multi-AZ DB cluster “typically under 35 seconds”; RDS Multi-AZ DB instance “typically 60 to 120 seconds”. |
| What is our recovery point objective? | Within a single cluster, Group Replication commits by consensus, so a clean automatic failover does not lose committed transactions. Across a ClusterSet link the replication is asynchronous, so the recovery point objective is not zero, and we will tell you what it measures at on your workload rather than rounding it down. |
| Who answers when it breaks? | Under-15-minute incident response, 24/7, with a named escalation path and a war-room path for severity-one events. |
We do not publish a single headline RTO figure, on purpose. An unmeasured number is the fastest way to lose a technical evaluation and the fastest way to create a contractual problem. The commitment above is deliberately strong without one: we set the target on your cluster, prove it with a test, and put it in writing once it is real.
Most of the InnoDB Clusters we work on already exist. They were built once, they worked, and then something changed. If any of this sounds familiar, it is fixable and we have done it before.
Usually Group Replication settings that were never persisted to disk, GTID divergence, or duplicate server UUIDs after a rebuild. Recoverable, in a specific order, without a restore from backup in most cases.
Members have dropped out and nobody noticed, so you have been running without redundancy. Often triggered by storage flipping read-only under a node, not by MySQL at all.
This one needs a person, and it needs the right person. Forcing quorum on the wrong side of a partition is how a bad afternoon becomes a data-loss incident.
Almost always the routing layer rather than the cluster. Connections that never retry, a Router metadata cache that has not refreshed, or a proxy that is itself the single point of failure.
“I don't see anything at MySQL server level or any instance nor cluster problem” is a sentence we hear a lot. The evidence is in the Router layer, and you have to know where to look.
Or you are on a version you cannot safely upgrade from. We map the supported path and rehearse it before touching the running cluster.
We start with a read-only assessment. You get the diagnosis and the fix plan whether or not you go on to have us do the work. Not a free audit - a scoped assessment.
Get my cluster assessed →You will find strong opinions on this, including from Percona, whose engineers have written that MySQL Router “is still far, far away from being competitive with ProxySQL.” We do not think that settles it, and we deploy both. What decides it is your workload.
you want the fewest moving parts
you need query-level control
As Oracle's own MySQL community manager puts it, if you centralise the Router then “yes in that specific case, the router is a spof,” and “you will have to take care by yourself of the router's HA.” That is true, and it is ours to handle: co-location on the application tier, or a properly redundant proxy layer with health checking that fails over as fast as the database does. A cluster with automatic failover behind a proxy with none is not a highly available system.
Handover is the default and the retainer is the option. We would rather answer the question nobody in the competitive set answers: can we take this over ourselves?: than sell you a permanent dependency.
Read-only review of the current topology, workload profile, network latency between candidate nodes, version and upgrade path, and the routing layer. Ends when you have a written diagnosis and a recommended topology: including the case for not building a cluster if that is the honest answer.
Node count against your failure-tolerance target, single-primary or multi-primary, consistency level, proxy selection, DR shape. Ends when the topology decision document is signed off by your team, not ours.
Provisioning, Group Replication configuration persisted correctly, Router or ProxySQL bootstrap, monitoring and alerting wired before cutover rather than after. Ends when a failover test has been run and the result recorded.
Live replication from the existing source so the old primary stays available until you switch. Ends when traffic is served by the cluster and the rollback step has been left in place, not removed.
Runbooks, build scripts and the DR procedure handed over so your team can operate it. Or we keep the pager, with under-15-minute incident response, 24/7. Ends when you can answer “what do we do when the primary fails” without calling us: whether or not you still can.
Published Mydbops engagements on MySQL high availability: failover, recovery and the proxy layer, not borrowed proof from another database.
A high-availability and performance rebuild on MySQL RDS: automatic failover, read traffic offloaded through an optimised routing layer, and manual work at failover cut sharply.
Read full case study →The failover-tested phrasing is the point: availability was maintained even while failover was being exercised, with CPU driven from above 60% to below 20% after traffic distribution.
Read full case study →Zero billing duplicates or data loss on the final merge. The only InnoDB-engine incident record in the portfolio, and it belongs beside the rescue work above.
“When we faced a MySQL corruption issue, Mydbops team responded promptly and demonstrated exceptional commitment by working during odd hours. The database was fully recovered which was very critical for our customer's operations.”Ashish Pandya · Associate Manager, Service DevOps · Ecosmob Technologies
Read full case study →
Zero-downtime migration with proxy routing, ten times the scalability headroom, and a move to a fully encrypted environment.
Read full case study →
Mydbops has been instrumental in enhancing the stability and disaster recovery of our critical services, supporting over 100,000 customers across Spain and Europe. They've ensured smooth 24/7 operations despite massive transaction volumes and high concurrency.
Mydbops team did a very detailed and thorough analysis of all MySQL DB clusters and came up with phased recommendations. Impressed by documentation they did for the whole process and seamless execution without any production impact.
A delivery cadence we can rely on: monthly optimisation reports, query tuning, and automated backups: consistent operational discipline rather than one-off fixes.
Mydbops really helped us scale 20X times in very short span. They are really good at Database Optimization, Security and Maintenance. Above all, their attitude towards owning up client’s problems and treating them like theirs is absolutely mind blowing. Highly recommended.
In more detail than a service page has room for. If you want to see how we think before you talk to us, start here.
Running InnoDB Cluster in production, or about to? We design, build and rescue these clusters for a living, and we test the failover before you depend on it. Talk to a MySQL HA engineer →
n = 2f + 1. Three members tolerate one failure, five tolerate two, and a two-member group tolerates none at all. Members also need low enough round-trip latency between them for group consensus to stay healthy, which we validate before committing to a layout.Whether your cluster is down right now, flaking under production traffic, or you are deciding between InnoDB Cluster and another architecture, our DBAs review your setup directly.
Talk to a MySQL HA engineer →Under-15-minute response for incidents · No commitment required