By Daljit Singh
The Nutanix Database Service (NDB) solution offers a highly automated MySQL High-Availability (HA) topology backed by group-replication consensus, a redundant router tier, and NDB Time Machine for point-in-time protection. This blog walks through the architecture of MySQL on NDB and the end-to-end lifecycle of the core operations exposed to platform users: provisioning, backup, restore, clone, point-in-time recovery, Transparent Data Encryption (TDE) enablement, and TDE master-key rotation.
NDB deploys a MySQL HA database as a group of three or more database VMs (DBServers) configured in a single group-replicated cluster. One node is elected primary and accepts writes; the remaining nodes replicate synchronously via a Paxos-style1 protocol and serve as read replicas.
1Paxos is a family of protocols for solving consensus in a network of unreliable or fallible processors - see here for more information.
| Role | Description | Failure Behavior |
|---|---|---|
| Primary DB Server | Accepts writes: propagates transactions to the group. | On loss, the group elects a new primary; NDB reconciles its metadata. |
| Secondary DB Server | Applies replicated transactions; serves reads. | Removed from RO pool until it rejoins the group as ONLINE. |
| Router Node | Terminates client sessions; routes RW to primary, RO to secondaries. | Stateless - any surviving router keeps traffic flowing. |
| NDB Time Machine | Owns the backup/PITR lifecycle for the MySQL database. | Independent of primary role; snapshots are designed to run on the current primary node. |
Applications should not be pinned to a specific MySQL node - especially in an HA topology where the primary can shift after a failover. NDB supports two topologies:
For Single Instance (SI) databases, clients connect directly to the DBServer's IP on port 3306. NDB registers the instance with the NDB control plane, records credentials in the entity credential store, and exposes the endpoint via the database detail API. No router layer is deployed.
For HA databases, NDB can bootstrap MySQL Router against the Group Replication (GR) cluster. The NDB solution is designed to avoid talking to the cluster through a floating VIP; instead it fronts the cluster with a small pool of router nodes that transparently direct traffic based on the current group topology.
Router sits between the client and the cluster and transparently splits traffic across four ports:
2See MySQL Protocols for in-depth explanation of various protocols
The router is optional. Users can opt out of the router and connect directly to the Group Replication cluster if they prefer to use alternatives, such as (HAProxy, ProxySQL, cloud LBs) - NDB does not require it as long as the cluster itself is healthy.
Provisioning is the workflow that turns a set of virtual machines and profiles into a fully-configured, group-replicated MySQL cluster registered with NDB. NDB’s control plane is designed to orchestrate key steps of this process: profile lookup, VM creation, storage attachment, cluster bootstrap, router deployment, and database registration.
NDB will use the following inputs to enable the management and execution of the workflows it provides:
The provisioning process involves a series of automated, orchestrated steps executed by the NDB control plane designed to help establish a fully-configured, high-availability cluster:
3See Nutanix Database Service Profiles for in-depth explanations of these profiles.
4See Nutanix Object Stores for in-depth explanation of the objects.
NDB Time Machine captures two flavors of backup for a MySQL HA database: snapshots (storage-consistent point captures of the DBServer volumes) and log catchup archives (binlogs and metadata continuously uploaded between snapshots). Together they deliver both scheduled protection and on-demand PITR.
Storage-level snapshots combined with binary logs are designed to perform significantly faster than traditional logical utilities for anything non-trivial, and restores are designed to be highly efficient because they reuse the source disk chain. Logical backups are still useful for cross-version migrations and portability, but they are not the primary protection primitive NDB relies on.
Between snapshots, NDB continuously drains new binary log events from the primary DBServer and uploads them, in epoch-sized batches, to the NDB Time Machine's Object Store target. The size of each epoch is a tunable NDB setting — larger epochs reduce upload overhead, smaller epochs reduce the worst-case PITR replay time.
Each snapshot is stamped with the executed GTID set at the moment of capture. Log catchup archives every subsequent GTID in strict order. Any restore or clone can therefore be replayed deterministically from any snapshot up to any archived GTID — translating directly into a wall-clock PITR timestamp.
Restore rehydrates an existing MySQL HA database to a chosen snapshot or PITR timestamp in place. NDB owns the orchestration across every node in the cluster, taking a safety snapshot first, replacing volumes, and reconciling group membership at the end.
Single-instance MySQL databases on NDB do not use this workflow — they follow the simpler in-place recovery path. PITR restore of a MySQL HA database additionally requires the NDB Time Machine to have the modern log-drive-container layout enabled; older NDB Time Machines must be migrated before PITR restore becomes available.
Because the workflow is designed to capture a pre-restore safety snapshot before detaching storage, a failed restore can be rolled back by reversing the detach/restore steps against that safety snapshot — no data loss for the pre-restore state.
If the source has binlog encryption enabled, the tde_enabled flag is threaded into the recovery input so the driver knows to preserve the keyring context needed to decrypt those binary logs during replay. Skipping that would silently produce a clone that stops at the last plaintext log file, a subtle failure mode worth calling out.
Note: Cloning is currently supported for SI to SI clones. Support for HA clones is expected in an upcoming release.
Cloning creates a brand-new MySQL database from an NDB Time Machine — either from a specific snapshot or from a chosen PITR timestamp. The source database is untouched. NDB provisions a fresh DBServer VM or clones into DBServer being associated with the time machine, restores the chosen state onto them, and registers the clone as an independent database.
A snapshot clone is designed to offer a highly efficient path — it uses only the chosen snapshot. A PITR clone is snapshot + binlog replay, so it scales with the distance between the base snapshot and the requested timestamp; smaller log-catchup epochs reduce replay time.
NDB supports enabling MySQL Transparent Data Encryption at provisioning time. TDE encrypts InnoDB tablespaces, and — optionally — the binary logs, InnoDB redo log, and InnoDB undo log. Keys are supplied by an external, KMIP-compatible Key Management Server (KMS) that NDB has been previously configured with.
For each TDE-enabled DBServer, NDB writes the KMS client configuration and TLS material into a dedicated, engine-specific configuration directory. Three certificate files are required for mutual TLS to the KMS: a CA certificate, a client certificate, and a client private key (optionally password-protected). NDB manages ownership and permissions of that directory so only the MySQL OS user can read it; designed to help protect against secrets being logged.
In addition to InnoDB tablespace encryption, the provisioning flow honors three log-encryption flags. Defaults are ON when TDE is enabled; each can be individually turned OFF via the request:
| File | Purpose |
|---|---|
| CA Certificate | Trust anchor used by the DBServer to verify the KMS server certificate. |
| Client certificate | Public certificate the DBServer presents to the KMS for mutual TLS. |
| Client private key | Paired with the client certificate; may be password-protected, in which case the password is written to a sibling file with equally strict permissions. |
| KMS endpoint file | Small config file with the primary KMS server and any standby KMS servers for failover. |
All keys are stored inside the MySQL keyring and wrapped by a master key that is fetched from the external KMS on server start.
NDB exposes a first-class "rotate master key" operation for TDE-enabled databases. It rotates the InnoDB master key (which re-encrypts tablespace keys) and/or the replication key (which re-encrypts binlogs and relay logs), coordinates the rotation across the whole HA cluster, and keeps NDB Time Machine in a safe state.
| Aspect | MySQL SI | MySQL HA |
|---|---|---|
| Primary discovery | Trivial - one node only. | Resolved live from group replication before rotation. |
| InnoDB key rotation | On the single node. | On the primary; key get rotated & metadata updated on every node via replication. |
| Replication key rotation | N/A (no replication). | Primary first; each secondary best-effort with warnings. |
| NDB Time Machine coordination | Pause/resume + reset capability | Same, plus explicit cluster-health precondition. |
The master key wraps the keys that were used to encrypt data on disk. After rotation of the replication key, binlog backups taken with the old master key can no longer be restored on a database because MySQL deletes the old replication key from the KMS. NDB therefore invalidates them and immediately captures a fresh snapshot so protection is restored before the operation completes.
MySQL's ALTER INSTANCE ROTATE ... MASTER KEY is one-way. The orchestrator's rollback handler therefore does not attempt to "un-rotate" - it invalidates the now-orphaned backups and resumes the NDB Time Machine so protection continues with the new key generation. That failure mode should be understood before scheduling rotations against critical HA clusters.
Every MySQL HA workflow on NDB is gated by explicit management-plane toggles so that operators can safely stage the rollout of new capability, or disable a subsystem in response to a field incident without a redeploy.
| Toggle | What it controls |
|---|---|
| HA Workflow Manager for MySQL | Master switch for the MySQL HA workflow layer. When disabled, MySQL HA operations short-circuit at the control plane. |
| HA NDB Time Machine Support for MySQL | Gates backup, log-catchup, and PITR-related workflows. When disabled, snapshot and log-catchup operations refuse to run. |
| HA Clone Support for MySQL | Gates the clone workflow specifically — allows the clone path to be released independently of NDB Time Machine. |
| HA Log Catchup Epoch Size for MySQL | Tunable batch size used by log catchup uploads; trade-off between upload frequency and PITR replay distance. |
| HA User Interface for MySQL | Toggles the HA experience in the NDB UI without affecting API surface. |
| TDE-with-external-KMS for MySQL | Enables the TDE-on-provision path. When disabled, the provisioning workflow rejects TDE requests with an actionable error message. |
MySQL on NDB is more than a wrapper around 'apt install mysql-server' or "MySQL plus a UI”. It is a set of opinionated, workflow-driven orchestrations that layer HA topology, NDB Time Machine, and TDE into a single managed experience — with the guardrails, rollbacks, and feature toggles required to run it safely in production.
The value shows up in the seams: quiesce-aware snapshots that survive crashes, PITR that understands GTIDs and encrypted binlogs, an HA cluster that treats each member as a discoverable, precheck-gated InstanceDefn, and a TDE story where the platform owns KMS trust while MySQL owns the keys.
©2026 Nutanix, Inc. All rights reserved. Nutanix, the Nutanix logo and all Nutanix product and service names mentioned are registered trademarks or trademarks of Nutanix, Inc. in the United States and other countries. All other brand names mentioned are for identification purposes only and may be the trademarks of their respective holder(s).
This content may contain express and implied forward-looking statements, including but not limited to statements regarding our plans and expectations relating to new product features, including HA-cloning support, and technology under development, the capabilities of such product features and technology, and our plans to release product features and technology. Such statements are not historical facts and are instead based on our current expectations, estimates and beliefs, including statements about The accuracy of such statements involves risks and uncertainties and depends upon future events, including those that may be beyond our control, and actual results may differ materially and adversely from those anticipated or implied by such statements, including, among others: failure to develop, or unexpected difficulties, delays or disruptions in developing, releasing or distributing, new products, services, product features or technology in a timely or cost-effective basis. Any forward-looking statements included speak only as of the date hereof and, except as required by law, we assume no obligation to update or otherwise revise any such forward-looking statements to reflect subsequent events or circumstances. Certain products and features or functionalities described herein remain in varying stages of development and will be offered on a when-and-if-available basis. The development, release, and timing of any such products, features or functionalities are subject to change. Nutanix will not have any liability for any failure to deliver or delay in the delivery of any such products, features or functionalities. Any future product or product feature information is intended to outline general product directions, and is not a commitment, promise, or legal obligation for Nutanix to deliver any functionality. This information should not be used when making a purchasing decision.