High Availability

MySQL High Availability with Orchestrator: A Complete Setup Guide

Configure MySQL Orchestrator for automated failover and replication topology management. Step-by-step guide covering installation, Raft mode, and failover testing.

JusDB Team
February 3, 2025
Updated June 20, 2026
5 min read

MySQL Orchestrator is the go-to tool for automated failover and replication topology management. This guide walks through a production-ready HA cluster setup from scratch.

What is MySQL Orchestrator?

Orchestrator is an open-source MySQL replication topology manager that provides:

  • Automated master failover
  • Replication topology visualization
  • Safe replica promotion with anti-split-brain logic
  • REST API and web UI for topology control

Architecture Overview

A production Orchestrator deployment typically looks like:

text
App Tier
  └─ ProxySQL / HAProxy
       ├─ MySQL Primary  (writes)
       ├─ MySQL Replica1 (reads)
       └─ MySQL Replica2 (reads)

Orchestrator (x3 for Raft consensus)
  monitors topology, triggers failover

Installation

bash
# Download Orchestrator binary
wget https://github.com/openark/orchestrator/releases/download/v3.2.6/orchestrator-3.2.6-linux-amd64.tar.gz
tar xzf orchestrator-3.2.6-linux-amd64.tar.gz
sudo mv orchestrator /usr/local/bin/

# Create config directory
sudo mkdir -p /etc/orchestrator

Core Configuration

json
{
  "MySQLTopologyUser": "orchestrator",
  "MySQLTopologyPassword": "s3cr3t",
  "MySQLOrchestratorHost": "127.0.0.1",
  "MySQLOrchestratorPort": 3306,
  "MySQLOrchestratorDatabase": "orchestrator",
  "RecoverMasterClusterFilters": ["*"],
  "RecoverIntermediateMasterClusterFilters": ["*"],
  "FailMasterPromotionOnLagMinutes": 0,
  "MasterFailoverDetachReplicaMasterHost": true,
  "PostMasterFailoverProcesses": [
    "notify-failover.sh {failedHost} {successorHost}"
  ]
}

MySQL User for Orchestrator

sql
CREATE USER 'orchestrator'@'%' IDENTIFIED BY 's3cr3t';
GRANT SUPER, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'orchestrator'@'%';
GRANT SELECT ON mysql.slave_master_info TO 'orchestrator'@'%';
GRANT SELECT ON performance_schema.* TO 'orchestrator'@'%';

Raft Mode for High Availability

Run three Orchestrator nodes in Raft consensus mode so no single Orchestrator node is a SPOF:

json
{
  "RaftEnabled": true,
  "RaftDataDir": "/var/lib/orchestrator/raft",
  "RaftBind": "10.0.1.10",
  "RaftNodes": ["10.0.1.10", "10.0.1.11", "10.0.1.12"]
}

Testing Failover

bash
# Simulate primary failure
orchestrator-client -c recover -i primary-host:3306

# Check topology after recovery
orchestrator-client -c topology -i cluster-name

# Graceful master move
orchestrator-client -c graceful-master-takeover -i primary-host:3306 -d replica1:3306
Tip: Always test failover in staging before relying on Orchestrator in production. Verify your PostMasterFailoverProcesses scripts update DNS or ProxySQL routing correctly.

Monitoring Orchestrator

Orchestrator exposes a rich REST API. Scrape it with Prometheus using the orchestrator-exporter sidecar:

bash
curl http://orchestrator:3000/api/clusters-info | jq .

Key Takeaways

  • Use Raft mode (3 nodes) so Orchestrator itself is not a SPOF
  • Grant minimal but sufficient MySQL privileges to the orchestrator user
  • Hook PostMasterFailoverProcesses to update ProxySQL or DNS
  • Test failover regularly — at least once per quarter

JusDB Can Help

Setting up MySQL HA with Orchestrator is complex. JusDB's engineers have deployed Orchestrator for dozens of production clusters. Talk to us about designing your failover strategy.

Share this article

Database engineering notes

Articles like this one, in your inbox. No spam, unsubscribe anytime.

JusDB Team

Official JusDB content team

Keep reading

MySQL Group Replication (2026): Multi-Primary HA, Conflict Resolution & Production Setup

Production-ready MySQL Group Replication deployment guide. Learn cluster sizing, monitoring setup, performance tuning, and disaster recovery planning.

MySQL5 minMay 13, 2026
Read

MariaDB Galera Cluster Production Guide: Mariabackup, MaxScale & Schema Strategy

Production MariaDB Galera Cluster: mariabackup-based SST, MaxScale Galera-aware routing, schema-change strategy with TOI vs RSU, and a troubleshooting playbook for the failures that actually take down production.

MySQL17 minMay 3, 2026
Read

Patroni with Consul DCS: PostgreSQL HA Without etcd

Configure Patroni to use Consul instead of etcd as its DCS for PostgreSQL HA. Covers Consul setup, patroni.yml, service discovery, HAProxy routing, and failover testing.

PostgreSQL11 minMar 5, 2026
Read