JusDB
Free DB Audit
Database Engineering

Percona Operators for MySQL, PostgreSQL, and MongoDB Compared

Compare the four Percona Kubernetes operators as of November 2026: current versions, GA and tech preview features, failover, proxies, backups and PITR, upgrades, TLS, and PMM.

JusDB Team
Published November 4, 2026
20 min read

Percona's Kubernetes operators for MySQL, PostgreSQL, and MongoDB are often evaluated as one product family, but they are four projects at different stages. There are two MySQL operators. The Group Replication one reached GA only in November 2025, and in release 1.3.0 its async replication, point-in-time recovery, and incremental backups are still tech preview. The PostgreSQL operator jumped to 3.0.0 in May 2026 as a hard fork of Crunchy Data's PGO, moving the inherited CRDs to a new API group, upstream.pgv2.percona.com, so 2.x runbooks need review. This guide compares the four on failover, proxies, backups and PITR, upgrades, TLS, PMM, licence, and maturity, and against the vendor alternatives.

TL;DR
  • As of November 2026 the current releases are: XtraDB Cluster operator 1.20.0, the Percona Server (Group Replication) operator 1.3.0, the PostgreSQL operator 3.1.0, and the MongoDB operator 1.23.1. All four are Apache 2.0.
  • For MySQL, the XtraDB Cluster operator is the long-running option. The Percona Server operator is GA for Group Replication only. Async replication, PITR, and incremental backups there are tech preview.
  • The PostgreSQL operator runs Patroni, pgBackRest, and PgBouncer. Major PostgreSQL upgrades pause the whole cluster, and PMM2 support has been removed.
  • The MongoDB operator covers replica sets and sharded clusters with Percona Backup for MongoDB. Physical incremental and PVC snapshot backups are tech preview.
  • Pilot the operator on a staging cluster first. Test a restore to a point in time, a failover, and an upgrade before you move production.

Scope and review date: November 2026. Covers Percona Operator for MySQL based on Percona XtraDB Cluster 1.20.0 and based on Percona Server for MySQL 1.3.0, Percona Operator for PostgreSQL 3.1.0, and Percona Operator for MongoDB 1.23.1, plus CloudNativePG, MongoDB Controllers for Kubernetes, and Oracle's MySQL Operator. Versions, fields, and commands were checked against vendor documentation, release notes, and repositories on 9 November 2026, not run in a lab. Test them on a non-production cluster.


Which Percona Operators exist, and which versions are current?

There are four operators. Each installs its own custom resource definitions (CRDs) and watches its own custom resource (CR) kind. The table lists the latest release of each from Percona's release notes as of November 2026.

OperatorCR kind (short name)Latest releaseDatabasesStatus
MySQL based on Percona XtraDB ClusterPerconaXtraDBCluster (pxc)1.20.0, 5 June 2026PXC 8.4.8, 8.0.45, 5.7.44GA
MySQL based on Percona Server for MySQLPerconaServerMySQL (ps)1.3.0, 29 October 2026Percona Server 9.7.2, 8.4.11, 8.0.46GA for Group Replication since 1.0.0; async is tech preview
PostgreSQLPerconaPGCluster (pg)3.1.0, 9 September 2026PostgreSQL 14 to 18GA
MongoDBPerconaServerMongoDB (psmdb)1.23.1, 5 October 2026Percona Server for MongoDB 6.0, 7.0, 8.0GA

Sources: release notes for XtraDB Cluster 1.20.0, Percona Server 1.3.0 (GA for Group Replication since 1.0.0, 17 November 2025), PostgreSQL 3.1.0, and MongoDB 1.23.1.

bash
# Which Percona operators are already installed in this Kubernetes cluster?
kubectl get crd -o name | grep -E 'percona\.com'

Interpretation: the groups pxc.percona.com, ps.percona.com, pgv2.percona.com, and psmdb.percona.com show which operators are present. After a PostgreSQL operator upgrade from 2.x, the renamed upstream.pgv2.percona.com CRDs sit next to the legacy ones.

Checking cluster status with the operators' short names

Illustrative output: columns follow the expected output in Percona's kubectl quickstart guides; names and ages are examples

ops@bastion:~
$ kubectl get pxc -n mysqlNAME ENDPOINT STATUS PXC PROXYSQL HAPROXY AGEcluster1 cluster1-haproxy.mysql ready 3 3 12d$ kubectl get pg -n pgNAME ENDPOINT STATUS POSTGRES PGBOUNCER AGEcluster1 cluster1-pgbouncer.pg.svc ready 3 3 12d$ kubectl get psmdb -n mongodbNAME ENDPOINT STATUS AGEmongo1 mongo1-mongos.mongodb.svc.cluster.local ready 12d

Same verb, different columns: each operator reports its own components. The ready status is the first thing to check after any CR change. The column layouts follow Percona's kubectl install guides.

Percona Everest, the web console for these operators, is no longer a Percona product. In January 2026 Percona moved it into an independent project, OpenEverest, developed by its subsidiary Solanica. Percona's MongoDB operator docs call it a CNCF Sandbox project and an optional install method. Everything in this post works through plain CRs.

How do the Percona Operators for MySQL, PostgreSQL, and MongoDB compare?

This card uses the XtraDB Cluster operator for MySQL; the next section compares the two MySQL operators.

Percona Operators side by side, November 2026

Switch engines to compare failover, the proxy layer, backups, upgrades, TLS, and monitoring

MySQL (XtraDB Cluster)

AreaXtraDB Cluster operator
Latest release1.20.0 (5 June 2026)
Database versionsPercona XtraDB Cluster 8.4, 8.0, and 5.7
Replication and failoverGalera multi-primary replication; the proxy sends writes to one node
Proxy layerHAProxy (default) or ProxySQL
BackupsPercona XtraBackup to S3-compatible, Azure Blob, or a PVC
Point-in-time recoveryBinlog collector Pod; S3-compatible or Azure storage only
UpgradesSmart Update, primary last; optional scheduled minor upgrades
TLSOperator-generated certificates by default; cert-manager or your own optional
PMM clientPMM2 and PMM3; PMM2 support ends in 1.22.0
LicenceApache 2.0

PostgreSQL

AreaPostgreSQL operator
Latest release3.1.0 (9 September 2026)
Database versionsPostgreSQL 14 to 18; 19 as a community-image tech preview
Replication and failoverStreaming replication; Patroni elects the leader
Proxy layerPgBouncer, 3 Pods by default
BackupspgBackRest, up to 4 repos on S3, GCS, Azure, or a PVC
Point-in-time recoveryArchived WAL in the pgBackRest repo; restore with --type=time
UpgradesImage patch for minors; PerconaPGUpgrade for majors, with the cluster paused
TLSOperator-generated certificates by default; cert-manager or your own optional
PMM clientPMM3 only; PMM2 support removed in 3.1.0
LicenceApache 2.0

MongoDB

AreaMongoDB operator
Latest release1.23.1 (5 October 2026)
Database versionsPercona Server for MongoDB 6.0, 7.0, and 8.0
Replication and failoverReplica set elections; sharding with a config server replica set
Proxy layerNone for replica sets; mongos routers for sharded clusters
BackupsPercona Backup for MongoDB to S3, GCS, Azure, OSS, OCI, or a file server
Point-in-time recoveryOplog uploaded in 10-minute spans by default
UpgradesSmart Update, primary last; optional scheduled minor upgrades
TLStls.mode defaults to preferTLS
PMM clientPMM3 (client 3.9.1 in 1.23.1)
LicenceApache 2.0

Same licence, different maturity: every row except the licence changes by engine. Read each operator's tech preview list before you compare features, because a feature can exist in one operator and still be preview-only in another.

Which MySQL operator should you pick: XtraDB Cluster or Group Replication?

Percona ships two MySQL operators with different replication engines. The XtraDB Cluster operator architecture uses Galera, which the docs describe as "virtually synchronous multi-primary replication": a commit returns only after the write set reaches all nodes and passes certification. The Percona Server operator runs MySQL Group Replication, or asynchronous replication managed by Orchestrator as a tech preview.

QuestionXtraDB Cluster operator 1.20.0Percona Server operator 1.3.0
ReplicationGaleraGroup Replication (GA) or async with Orchestrator (tech preview)
ProxiesHAProxy or ProxySQLHAProxy (both types) or MySQL Router (Group Replication only)
Newest MySQL line8.49.7, plus 8.4 and 8.0
Group size3 to 5 nodes recommendedGroup Replication allows at most 9 instances
PITRGA, binlog collectorTech preview since 1.1.0
Incremental backupsNot available as of 1.20.0Tech preview since 1.1.0

The default CRs show the difference in practice. Both excerpts come from each operator's deploy/cr.yaml at the current release tag.

yaml
# XtraDB Cluster operator 1.20.0: deploy/cr.yaml (excerpt)
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBCluster
spec:
  crVersion: 1.20.0
  pxc:
    size: 3
  haproxy:
    enabled: true
    size: 3
  proxysql:
    enabled: false

Interpretation: HAProxy is on and ProxySQL is off by default. Enable only one of them. HAProxy sends writes to one node through the cluster1-haproxy Service, and reads can use cluster1-haproxy-replicas. Pod anti-affinity is required by default, so three PXC Pods need three schedulable Kubernetes nodes.

yaml
# Percona Server operator 1.3.0: deploy/cr.yaml (excerpt)
apiVersion: ps.percona.com/v1
kind: PerconaServerMySQL
spec:
  crVersion: 1.3.0
  mysql:
    clusterType: group-replication   # "async" is tech preview
    size: 3
  proxy:
    haproxy:
      enabled: true
    router:
      enabled: false                 # Group Replication only
  orchestrator:
    enabled: false                   # used by async clusters

Interpretation: the default is Group Replication behind HAProxy. Release 1.3.0 can switch replication type on a running cluster, but that feature is also tech preview, so pick the type at creation.

A simple rule for MySQL

Need GA PITR today on MySQL 8.4: the XtraDB Cluster operator. Need MySQL 9.7 or Group Replication: the Percona Server operator, once its PITR leaves tech preview. See Group Replication vs Galera for the engine trade-offs.

How do failover and the proxy layer work in each operator?

No operator adds its own consensus layer. Each delegates failover to the engine or a bundled tool, then points a Service or proxy at the new primary.

  • XtraDB Cluster: every Galera node holds the full data set. When the writer fails, HAProxy or ProxySQL picks another node as the single writer.
  • Percona Server: Group Replication's membership protocol elects a new primary. In async clusters, Orchestrator promotes a replica, and release 1.3.0 recovers missing binary log transactions before it promotes one.
  • PostgreSQL: Patroni coordinates leader election and updates its endpoints on failover. The cluster1-primary Service follows the leader, and PgBouncer (cluster1-pgbouncer) sits in front.
  • MongoDB: the replica set holds an election. Drivers find the new primary themselves; sharded clusters route through mongos.
yaml
# PostgreSQL operator 3.1.0: deploy/cr.yaml (excerpt; patroni block shown with its defaults)
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
spec:
  crVersion: 3.1.0
  postgresVersion: 18
  instances:
  - name: instance1
    replicas: 3
  proxy:
    pgBouncer:
      replicas: 3
  patroni:
    syncPeriodSeconds: 10           # default: 10
    leaderLeaseDurationSeconds: 30  # default: 30

Interpretation: three PostgreSQL instances (one primary and two replicas) and three PgBouncer Pods are the defaults. The cr.yaml comments say the Patroni container's probe timings are derived from these two values. Lowering them speeds up failure detection but makes a short network pause more likely to trigger a failover.

yaml
# MongoDB operator 1.23.1: deploy/cr.yaml (excerpt)
apiVersion: psmdb.percona.com/v1
kind: PerconaServerMongoDB
spec:
  crVersion: 1.23.1
  replsets:
  - name: rs0
    size: 3
  sharding:
    enabled: true
    configsvrReplSet:
      size: 3
    mongos:
      size: 3

Interpretation: the sample CR enables sharding with three config servers and three mongos routers. For an unsharded replica set, set sharding.enabled: false. Clients then connect with the connection string the operator writes to a Secret, and no proxy sits in the path.

How do backups and point-in-time recovery work in each operator?

All four operators take on-demand or scheduled backups through a CR and write them to object storage outside the Kubernetes cluster. PITR adds a continuous log stream on top of a full backup: binary logs, WAL, or the oplog.

The common Percona Operator pattern

Follow the numbers: you edit only the CR; the operator builds and maintains everything else

How a Percona Operator turns a custom resource into a running, backed-up, monitored cluster Step 1: you apply a custom resource. Step 2: the operator reconciles it. Step 3: the operator creates StatefulSets for database and proxy Pods. Step 4: backup jobs write full backups plus binary logs, WAL, or oplog to object storage for point-in-time recovery. Step 5: PMM Client sidecars send metrics to a PMM Server. Custom resource kubectl apply Operator reconcile loop StatefulSets database + proxy Pods PMM Server metrics, query analytics Object storage backups + logs for PITR 1 2 3 4 5 the same pattern in all four operators solid: backup jobs and log uploads; dashed: PMM Client sidecars

Step 4 is your recovery point: a backup you have never restored is untested. Restore one to a separate cluster before you trust the schedule.

MySQL: the binlog collector

In the XtraDB Cluster operator, enabling PITR starts a separate Pod that uploads binary logs to backup storage. The PITR documentation says to use S3-compatible or Azure-compatible storage for both the binlogs and the full backup, and that PITR does not work with other storage types.

yaml
# XtraDB Cluster operator: deploy/cr.yaml
spec:
  backup:
    pitr:
      enabled: true
      storageName: s3-us-west      # must match a name under backup.storages
      timeBetweenUploads: 60       # seconds between binlog uploads

Interpretation: timeBetweenUploads limits how much recent history a restore can reach if the whole Kubernetes cluster is lost. The collector exposes pxc_binlog_collector_* metrics on the cluster1-pitr Service, so alert on them.

PostgreSQL: pgBackRest and WAL

The PostgreSQL operator runs pgBackRest with up to four repositories and full, differential, or incremental backups, and takes an initial full backup when it creates a cluster. A point-in-time restore replays archived WAL on top of the latest full backup that finished before the target.

yaml
# deploy/restore.yaml: in-place point-in-time restore
apiVersion: pgv2.percona.com/v2
kind: PerconaPGRestore
metadata:
  name: restore1
spec:
  pgCluster: cluster1
  repoName: repo1
  options:
  - --type=time
  - --target="2026-11-03 10:15:00+00"
bash
# The newest time a restore can safely target
kubectl get pg-backup <backup_name> -n <namespace> \
  -o jsonpath='{.status.latestRestorableTime}'

Interpretation: target a time at or before latestRestorableTime. It advances only when archived WAL contains commits, so on an idle test cluster, make a small write and wait for the next WAL switch (archive_timeout, 60 seconds by default). See our pgBackRest guide for the tool itself.

MongoDB: oplog slices

The MongoDB operator runs Percona Backup for MongoDB (PBM) as a sidecar. Logical and physical full backups are GA. Physical incremental backups (from 1.20.0) and PVC snapshot backups (from 1.23.0) are tech preview, and PVC snapshot backups do not support PITR.

yaml
# MongoDB operator: deploy/cr.yaml
spec:
  backup:
    pitr:
      enabled: true
      # oplogSpanMin: 10   # default upload interval, in minutes

Interpretation: per the MongoDB operator's PITR page, the first oplog slice arrives after one interval, about 10 minutes by default. Check status.latestRestorableTime on a psmdb-backup object, as for PostgreSQL above: empty means nothing has been uploaded yet.

Tech preview is not a backup plan

As of November 2026, these are all marked tech preview, with Percona advising against production use: PITR and incremental backups in the Percona Server operator, PVC snapshot backups in the PostgreSQL and MongoDB operators, and physical incremental backups in the MongoDB operator.

How do upgrades work, and what does Smart Update do?

An upgrade has three layers: the CRDs, the operator deployment, and the database images. Upgrade them in that order. The XtraDB Cluster, Percona Server, and MongoDB operators support updateStrategy: SmartUpdate, the default in their sample CRs. The XtraDB Cluster update guide says Smart Update "restarts Pods in a specific order, with the primary instance updated last". The alternatives are RollingUpdate, run by the StatefulSet controller, and OnDelete, where you delete each Pod yourself.

yaml
# XtraDB Cluster operator 1.20.0: deploy/cr.yaml
spec:
  updateStrategy: SmartUpdate
  upgradeOptions:
    versionServiceEndpoint: https://check.percona.com
    apply: disabled          # or Recommended, Latest, 8.0-recommended, an exact version
    schedule: "0 4 * * *"

Interpretation: with apply: disabled, nothing changes until you edit the image. Recommended moves the cluster to the version service's recommended minor version on the schedule, without a change ticket, which suits staging better than production. The MongoDB operator's CR has the same block.

PostgreSQL minor and major upgrades

The PostgreSQL operator's docs don't use the term Smart Update. A minor upgrade is a kubectl patch pg that sets the new crVersion and image tags from the certified images list. The minor upgrade guide warns it can cause downtime and a failover when the primary restarts. It also warns that a base image change can change glibc or ICU collations, which means reindexing text indexes.

Major upgrades have been GA since operator 2.9.0 and use a separate resource. The major upgrade guide says the whole cluster is shut down for the upgrade, data is duplicated on each PVC, and pgaudit must be dropped and recreated in each database afterwards.

yaml
# deploy/upgrade.yaml
apiVersion: pgv2.percona.com/v2
kind: PerconaPGUpgrade
metadata:
  name: cluster1-17-to-18
spec:
  postgresClusterName: cluster1
  image: docker.io/percona/percona-distribution-postgresql-upgrade:<tag>
  fromPostgresVersion: 17
  toPostgresVersion: 18
  toPostgresImage: docker.io/percona/percona-distribution-postgresql:<tag>
  toPgBouncerImage: docker.io/percona/percona-pgbouncer:<tag>
  toPgBackRestImage: docker.io/percona/percona-pgbackrest:<tag>

Interpretation: if the upgrade fails, the cluster stays paused and starts on the old version when you resume it. Check PVC free space first, because the old data stays until you delete it.

Upgrading the PostgreSQL operator from 2.x to 3.x

The 3.0.0 release notes warn of brief pgBackRest disruptions while the CRD migration propagates. OLM installs may also start reconciling clusters in namespaces the operator previously ignored, so check each OperatorGroup first. Operator 2.8.x is end of life as of 3.1.0.

How do TLS and PMM monitoring differ between the operators?

By default, each operator generates its own TLS certificates if you supply none, and those are not renewed automatically. Each can instead use cert-manager for short-lived, automatically renewed certificates, or take certificates you supply in Secrets. In the XtraDB Cluster operator, HAProxy passes the TLS handshake through to the PXC node, so clients behind HAProxy verify against the internal certificate's CA. The external certificate applies only with ProxySQL. The MongoDB operator controls TLS with a mode setting.

yaml
# MongoDB operator: deploy/cr.yaml
spec:
  tls:
    mode: requireTLS   # default is preferTLS: TLS internally, plain client connections still accepted

Interpretation: the MongoDB operator's TLS page lists allowTLS, preferTLS (default), requireTLS, and disabled. Move to requireTLS only after every client connects with TLS.

Monitoring uses Percona Monitoring and Management (PMM). Each CR has the same pmm block, and the PMM Client runs as a sidecar in every database Pod. PMM3 authenticates with a Grafana service account token. The Secret key name differs by operator, which trips up teams that copy one operator's setup to another.

yaml
# Same block in all four sample CRs (disabled by default)
spec:
  pmm:
    enabled: true
    serverHost: monitoring-service

# XtraDB Cluster operator: token goes in the cluster Secret
#   cluster1-secrets  ->  pmmservertoken: <token>
# PostgreSQL operator: token goes in a dedicated Secret
#   cluster1-pmm-secret  ->  PMM_SERVER_TOKEN: <token>

Interpretation: upgrade PMM Server before the PMM Client images. The PostgreSQL operator has dropped PMM2, and the XtraDB Cluster operator will drop it in 1.22.0, so a PMM2 server is a blocker to clear first. Our PMM setup guide covers the server side.

How do Percona Operators compare with CloudNativePG, MCK, and Oracle's MySQL Operator?

Each engine also has a strong alternative operator. The choice is mostly about which tooling you want to run and who you buy support from.

EngineAlternative (latest release)Main difference from the Percona operator
PostgreSQLCloudNativePG 1.30.1 (23 September 2026)No Patroni: it manages failover through the Kubernetes API. Backups use the Barman Cloud Plugin or volume snapshots, and PgBouncer runs through a Pooler resource. CNCF Sandbox project, Apache 2.0.
MongoDBMongoDB Controllers for Kubernetes (MCK) 1.15.0 (3 November 2026)Replaces MongoDB's Community and Enterprise operators. Manages MongoDB Community replica sets, or Enterprise Advanced deployments through Ops Manager or Cloud Manager. Dual licence: Apache 2.0 for Community, MongoDB's Customer Agreement otherwise.
MySQLMySQL Operator for Kubernetes 26.10.0-2.3.1 (22 October 2026)Oracle's operator for MySQL InnoDB Cluster with MySQL Router. Backups use MySQL Shell dumpInstance() on a schedule; its backup manual describes dumps, not binlog-based PITR. Universal Permissive License.

Sources: the CloudNativePG repository (its backup docs deprecate the in-core object store integration from 1.26), the MCK repository, and the MySQL Operator backup manual. MongoDB's old Community Operator repository is archived, and its best-effort support ended in November 2025.

In practice: CloudNativePG suits teams that want a Kubernetes-native design without Patroni, MCK suits MongoDB Enterprise Advanced customers, and the Percona operators suit teams that want one vendor's tooling (XtraBackup, pgBackRest, PBM, PMM) across all three engines.

How do you evaluate and pilot a Percona Operator?

A pilot should prove four things on your own platform: the cluster deploys, a backup restores to a point in time, the application tolerates a failover, and an upgrade completes. First compare your Kubernetes version with the tested platforms in the release notes.

Pilot runbook for a Percona Operator

Eight steps on a non-production cluster; steps 6 and 8 interrupt service on purpose

  1. Pick the operator and topology

    Choose the operator by engine and replication type, and list every feature you need that is still tech preview.

  2. Check the version matrix

    Confirm your target database version and Kubernetes version are supported by the operator release.

    curl -s \ https://check.percona.com/versions/v1/pg-operator/3.1.0 \ | jq -r '.versions[].matrix'
  3. Install the operator in its own namespace

    Helm charts exist for all four: pxc-operator, ps-operator, pg-operator, and psmdb-operator.

    helm repo add percona \ https://percona.github.io/percona-helm-charts/ helm install my-op percona/pg-operator \ --namespace pg-pilot --create-namespace
  4. Deploy a cluster with backups and PMM on

    Set real object storage and the PMM token before the first apply, not after.

    kubectl apply -f deploy/cr.yaml -n pg-pilot kubectl get pg -n pg-pilot --watch
  5. Restore to a point in time

    Write a marker row, note the time, drop the table, then restore to just before the drop into a new cluster.

    kubectl get pg-backup -n pg-pilot
  6. Kill the primary Pod

    Failover drill

    Run application traffic through the proxy, delete the primary, and record what the application sees.

    kubectl delete pod <primary-pod> -n pg-pilot
  7. Rehearse a minor upgrade

    Patch the image tags with traffic running, and check collation warnings afterwards.

  8. Rehearse the risky change

    Outage

    For PostgreSQL, a major upgrade with PerconaPGUpgrade. For the others, an operator upgrade across one release.

    kubectl apply -f deploy/upgrade.yaml -n pg-pilot

Main risk: a pilot that skips steps 5 and 6 proves only that the operator can deploy. Production problems come from restores, failovers, and upgrades, so time each one on your own platform.

Frequently asked questions

Is the Percona Operator for MySQL production ready?

It depends on which one. The operator based on Percona XtraDB Cluster is GA, at 1.20.0 as of November 2026, with PITR included. The operator based on Percona Server for MySQL has been GA for Group Replication since 1.0.0 in November 2025. In that operator, asynchronous replication, point-in-time recovery, and incremental backups remain tech preview in 1.3.0.

Are the Percona Kubernetes Operators free and open source?

Yes. The repositories for all four Percona operators carry the Apache 2.0 licence: XtraDB Cluster, Percona Server for MySQL, PostgreSQL, and MongoDB. The PostgreSQL operator also keeps Crunchy Data's copyright, because it began as a fork of Crunchy PGO. The licence does not require a subscription to use them.

Should I use the Percona Operator for PostgreSQL or CloudNativePG?

Both are Apache 2.0. The Percona operator uses Patroni for failover, pgBackRest for backups, and PgBouncer, and adds pg_tde encryption for PostgreSQL 17 and 18 in 3.1.0. CloudNativePG manages failover through the Kubernetes API without Patroni and backs up through the Barman Cloud Plugin. Pick the one whose tooling your team already knows, then pilot it.

Does the Percona Operator for MongoDB support sharding and point-in-time recovery?

Yes. Version 1.23.1 deploys sharded clusters with a config server replica set and mongos routers, and its sample CR enables sharding. Point-in-time recovery uses Percona Backup for MongoDB, which uploads oplog every 10 minutes by default. PITR needs a successful base backup and does not work with PVC snapshot backups, which are tech preview.

What happened to Percona Everest?

In January 2026, Percona moved Everest into an independent open source project named OpenEverest, developed by its subsidiary Solanica. Percona's MongoDB operator docs describe OpenEverest as a CNCF Sandbox project and list it as an optional install method. Its GitHub repository is Apache 2.0, and its latest release as of November 2026 is v1.17.0.

Key takeaways

  • There are four Percona operators: XtraDB Cluster 1.20.0, Percona Server for MySQL 1.3.0, PostgreSQL 3.1.0, and MongoDB 1.23.1 as of November 2026. All are Apache 2.0.
  • For MySQL, the XtraDB Cluster operator has GA PITR. The Percona Server operator is GA only for Group Replication, and its PITR is still tech preview.
  • The PostgreSQL operator 3.x is a hard fork of Crunchy PGO with renamed CRDs. Plan the 2.x to 3.x upgrade, and expect a full-cluster pause for major PostgreSQL upgrades.
  • Move PMM Server to PMM3 before upgrading operators. PMM2 is gone from the PostgreSQL operator and leaves the XtraDB Cluster operator in 1.22.0.
  • Pilot with a point-in-time restore, a primary failover, and an upgrade on your own platform before moving production.

Run Percona Operators in production with JusDB

JusDB's MySQL on Kubernetes team can help you choose between the XtraDB Cluster and Percona Server operators, review your CRs, and plan a pilot with restore, failover, and upgrade drills. For other engines, see our PostgreSQL on Kubernetes and MongoDB on Kubernetes pages.

Bring your Kubernetes platform and version, your target database versions, your backup storage, and your recovery requirements. Your team approves every production change.

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

Kafka 4.0 Without ZooKeeper: KRaft Migration for CDC Pipelines

Move a ZooKeeper-mode Kafka cluster to Kafka 4.x through the 3.9 bridge: controller quorum design, migration phases, rollback points, and what to check in Debezium and Connect.

Kafka19 minNov 8, 2026
Read

ProxySQL 3.0: PostgreSQL Support and What Changed for MySQL Users

Find out which ProxySQL 3.0 release to run, what its PostgreSQL support covers, what changed for MySQL users since 2.7, and how to upgrade a node or a cluster with a rollback point.

PostgreSQL20 minNov 7, 2026
Read

SQL Server 2016 Is Out of Support: Upgrade Path to 2022 or 2025

SQL Server 2016 lost support on 14 July 2026. Weigh ESUs, pick SQL Server 2022 or 2025, check the upgrade path, and run a side-by-side cutover with a safe compatibility level plan.

SQL Server19 minNov 2, 2026
Read