<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>CNMSQL Blog</title>
        <link>https://cnmsql.co/blog</link>
        <description>Releases, design notes and guides on running MySQL and MariaDB on Kubernetes with the CNMSQL operator.</description>
        <lastBuildDate>Fri, 16 Oct 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>Copyright © 2026 The CNMSQL - CloudNative for MySQL Authors. Licensed under CC BY 4.0.</copyright>
        <item>
            <title><![CDATA[MySQL operators for Kubernetes compared (2026)]]></title>
            <link>https://cnmsql.co/blog/mysql-kubernetes-operators-compared</link>
            <guid>https://cnmsql.co/blog/mysql-kubernetes-operators-compared</guid>
            <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A factual comparison of MySQL and MariaDB operators for Kubernetes in 2026: Percona, Oracle, MOCO, Vitess, mariadb-operator, KubeDB, KubeBlocks and CNMSQL.]]></description>
            <content:encoded><![CDATA[<p>To run MySQL on Kubernetes you usually pick an operator: a controller that
provisions the database, keeps replication healthy, fails over when the
primary dies and takes backups. Several are actively maintained, and they
differ in which MySQL they run, how they stay available and how far back you
can restore.</p>
<p>We maintain CNMSQL, so we are not neutral. Every fact below comes from each
project's own documentation, listed under <a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#sources" class="">Sources</a>, and there is a
full section on what CNMSQL cannot do. If something is wrong or out of date,
<a href="https://github.com/cnmsql/docs/issues" target="_blank" rel="noopener noreferrer" class="">open an issue</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-short-version">The short version<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#the-short-version" class="hash-link" aria-label="Direct link to The short version" title="Direct link to The short version" translate="no">​</a></h2>
<ul>
<li class=""><strong>A vendor-maintained operator with a GA release:</strong> one of Percona's two
operators. One runs Percona XtraDB Cluster (Galera), the other runs Percona
Server with Group Replication.</li>
<li class=""><strong>Oracle MySQL, InnoDB Cluster or the Enterprise edition:</strong> Oracle's MySQL
Operator.</li>
<li class=""><strong>More writes than one primary can take:</strong> Vitess.</li>
<li class=""><strong>MariaDB with Galera or MaxScale:</strong> mariadb-operator.</li>
<li class=""><strong>Plain semi-sync replication, no proxy:</strong> MOCO or CNMSQL.</li>
<li class=""><strong>One platform for many database engines:</strong> KubeDB (commercial) or
KubeBlocks (AGPL-3.0).</li>
<li class=""><strong>CloudNativePG-style operations for MySQL:</strong> CNMSQL. It offers continuous
binlog archiving with point-in-time recovery to a time or a GTID, and one
API for Percona Server and MariaDB. It is four months old, so read
<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#what-cnmsql-does-not-do" class="">what it does not do</a> first.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="feature-comparison">Feature comparison<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#feature-comparison" class="hash-link" aria-label="Direct link to Feature comparison" title="Direct link to Feature comparison" translate="no">​</a></h2>
<p>Checked on 16 October 2026. Numbers in the table refer to the notes under it.</p>
<div class="matrix_J68E"><ul class="legend_NKJP" aria-label="Legend"><li><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span>Supported</li><li><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span>Partial, with caveats, or tech preview</li><li><span class="dot_jIIy no_ypAE" aria-hidden="true"></span>Not supported</li><li><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span>Not found in the docs we checked</li></ul><p class="hint_D7zi">Scroll sideways to see every project.</p><div class="scroller_gSj9" role="region" aria-label="MySQL operators for Kubernetes: feature comparison" tabindex="0"><table class="table_kGQW"><caption class="srOnly_YnkB">MySQL operators for Kubernetes: feature comparison</caption><thead><tr><th scope="col" class="feature_wIlR">Feature</th><th scope="col" class="project_i04Y"><a href="https://github.com/cnmsql/cnmsql" target="_blank" rel="noopener noreferrer">CNMSQL</a></th><th scope="col" class="project_i04Y"><a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/index.html" target="_blank" rel="noopener noreferrer">Percona XtraDB Cluster operator</a></th><th scope="col" class="project_i04Y"><a href="https://docs.percona.com/percona-operator-for-mysql/ps/latest/index.html" target="_blank" rel="noopener noreferrer">Percona Server operator</a></th><th scope="col" class="project_i04Y"><a href="https://dev.mysql.com/doc/mysql-operator/en/" target="_blank" rel="noopener noreferrer">Oracle MySQL Operator</a></th><th scope="col" class="project_i04Y"><a href="https://github.com/cybozu-go/moco" target="_blank" rel="noopener noreferrer">MOCO</a></th><th scope="col" class="project_i04Y"><a href="https://github.com/planetscale/vitess-operator" target="_blank" rel="noopener noreferrer">Vitess Operator</a></th><th scope="col" class="project_i04Y"><a href="https://github.com/mariadb-operator/mariadb-operator" target="_blank" rel="noopener noreferrer">mariadb-operator</a></th><th scope="col" class="project_i04Y"><a href="https://kubedb.com/" target="_blank" rel="noopener noreferrer">KubeDB</a></th><th scope="col" class="project_i04Y"><a href="https://github.com/apecloud/kubeblocks" target="_blank" rel="noopener noreferrer">KubeBlocks</a></th></tr></thead><tbody><tr class="section_QAZO"><th scope="colgroup" colspan="10"><span>Project</span></th></tr><tr><th scope="row" class="feature_wIlR">License</th><td><span class="cell_VfTC"><span>Apache-2.0</span></span></td><td><span class="cell_VfTC"><span>Apache-2.0</span></span></td><td><span class="cell_VfTC"><span>Apache-2.0</span></span></td><td><span class="cell_VfTC"><span>UPL 1.0</span></span></td><td><span class="cell_VfTC"><span>Apache-2.0</span></span></td><td><span class="cell_VfTC"><span>Apache-2.0</span></span></td><td><span class="cell_VfTC"><span>MIT</span></span></td><td><span class="cell_VfTC"><span>Commercial<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-kubedb-license" aria-label="Note 1">1</a></sup></span></span></td><td><span class="cell_VfTC"><span>AGPL-3.0</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Latest release</th><td><span class="cell_VfTC"><span>0.8.0 (Sep 2026)<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-cnmsql-age" aria-label="Note 2">2</a></sup></span></span></td><td><span class="cell_VfTC"><span>1.20.0 (Jun 2026)</span></span></td><td><span class="cell_VfTC"><span>1.2.0 (Jul 2026)</span></span></td><td><span class="cell_VfTC"><span>26.7.0-2.3.0 (Jul 2026)</span></span></td><td><span class="cell_VfTC"><span>0.37.0 (Sep 2026)</span></span></td><td><span class="cell_VfTC"><span>2.17.1 (Sep 2026)</span></span></td><td><span class="cell_VfTC"><span>26.10.1 (Sep 2026)</span></span></td><td><span class="cell_VfTC"><span>v2026.10.12</span></span></td><td><span class="cell_VfTC"><span>1.0.2 (Feb 2026)</span></span></td></tr></tbody><tbody><tr class="section_QAZO"><th scope="colgroup" colspan="10"><span>Database engines</span></th></tr><tr><th scope="row" class="feature_wIlR">MySQL</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Percona Server 8.0, 8.4</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Percona XtraDB Cluster 5.7, 8.0, 8.4</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Percona Server 8.0, 8.4</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL 8.4, 9.7, 26.7</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL 8.0, 8.4</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL, through Vitess 24</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>MariaDB only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL 5.7, 8.0, 8.4</span></span></td></tr><tr><th scope="row" class="feature_wIlR">MariaDB</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>10.11, 11.4, 12.3</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>10.6 and later</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Separate resource</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Separate addon</span></span></td></tr></tbody><tbody><tr class="section_QAZO"><th scope="colgroup" colspan="10"><span>High availability</span></th></tr><tr><th scope="row" class="feature_wIlR">Async or semi-sync, with failover</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Async or semi-sync</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Galera instead</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Async, tech preview<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-ps-async" aria-label="Note 3">3</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Group Replication only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Semi-sync, up to 5 instances</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Failover by VTOrc</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Async</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Semi-sync</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Group Replication</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Single-primary<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-cnmsql-gr" aria-label="Note 4">4</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>GA</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>InnoDB Cluster</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Not in MariaDB</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Also InnoDB Cluster</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Galera</th><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-galera" aria-label="Note 5">5</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Separate resources</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Sharding</th><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Standby cluster in another region</th><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Planned<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-cnmsql-replica" aria-label="Note 6">6</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Multi-site replication</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Group Replication only (1.2.0)</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Replicates from an external MySQL</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Zones in one Kubernetes cluster<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-vitess-cells" aria-label="Note 7">7</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Multi-cluster replication</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Remote replica</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr></tbody><tbody><tr class="section_QAZO"><th scope="colgroup" colspan="10"><span>Client routing</span></th></tr><tr><th scope="row" class="feature_wIlR">Native routing</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Read-write, read-only and any-instance Services<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-services" aria-label="Note 8">8</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Proxy by default<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-pxc-direct" aria-label="Note 9">9</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Through MySQL Router</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Primary and replica Services<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-services" aria-label="Note 8">8</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Through vtgate</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Primary and secondary Services</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Proxy</th><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>HAProxy or ProxySQL</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>HAProxy or MySQL Router</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL Router</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>vtgate</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MaxScale, optional</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Connection pooling</th><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>With ProxySQL</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-router-pooling" aria-label="Note 10">10</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-router-pooling" aria-label="Note 10">10</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>No</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>vttablet pools</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr></tbody><tbody><tr class="section_QAZO"><th scope="colgroup" colspan="10"><span>Backup and recovery</span></th></tr><tr><th scope="row" class="feature_wIlR">Physical backups</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>XtraBackup or mariadb-backup</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>XtraBackup</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>XtraBackup, incremental, encrypted</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Logical dumps only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Logical dumps only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Builtin or XtraBackup engine</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>mariadb-backup, volume snapshots</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>XtraBackup</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Logical backups</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>mysqldump or mariadb-dump</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>XtraBackup only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>XtraBackup only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL Shell dump</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>MySQL Shell dump</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>MySQL Shell engine, experimental</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>mariadb-dump</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Through KubeStash</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>mydumper</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Backup storage</th><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>S3-compatible only<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-cnmsql-s3" aria-label="Note 11">11</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3-compatible, Azure, volume</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3-compatible, GCS, Azure</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3, Azure, OCI, volume</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3-compatible, GCS, Azure</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3, GCS, Ceph, file</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3-compatible, Azure, volume</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3, GCS, Azure, volume</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>S3, GCS, Azure and others</span></span></td></tr><tr><th scope="row" class="feature_wIlR">Point-in-time recovery</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>To a time or a GTID<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-cnmsql-pitr" aria-label="Note 12">12</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Yes<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-pxc-pitr" aria-label="Note 13">13</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Tech preview</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Up to the last backup run<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-moco-pitr" aria-label="Note 14">14</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>To a time or a GTID</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Since 26.3.0</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Continuous archiving</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr></tbody><tbody><tr class="section_QAZO"><th scope="colgroup" colspan="10"><span>Day-2 operations</span></th></tr><tr><th scope="row" class="feature_wIlR">Declarative users and databases</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Database and DatabaseUser resources</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Users in the cluster resource (1.16+)<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-pxc-users" aria-label="Note 15">15</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>System users only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy no_ypAE" aria-hidden="true"></span><span>Operator accounts only</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy partial_o2QA" aria-hidden="true"></span><span>Keyspaces and vtgate users</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>User, Grant and Database resources</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr><tr><th scope="row" class="feature_wIlR">In-place major version upgrade</th><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>8.0 to 8.4<sup class="ref_S03I"><a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#operators-note-cnmsql-upgrade" aria-label="Note 16">16</a></sup></span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Only minor upgrades documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Only minor upgrades documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>Rolling, one instance at a time</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy yes_OrU0" aria-hidden="true"></span><span>UpdateVersion request</span></span></td><td><span class="cell_VfTC"><span class="dot_jIIy unknown_fKb3" aria-hidden="true"></span><span>Not documented</span></span></td></tr></tbody></table></div><ol class="notes_FzOF"><li id="operators-note-kubedb-license">Free only for databases created and destroyed within 30 days, such as dev or CI clusters. Production use needs a paid license.</li><li id="operators-note-cnmsql-age">First release (0.1.0) on 18 June 2026. The API is still v1alpha1, and the repository lists three contributors.</li><li id="operators-note-ps-async">Percona labels asynchronous replication a tech preview and does not recommend it for production.</li><li id="operators-note-cnmsql-gr">MySQL 8.0.22 and later. Multi-primary mode is rejected, and a running cluster cannot switch between async replication and Group Replication.</li><li id="operators-note-galera">Galera needs primary keys and InnoDB tables, and large or conflicting transactions can fail certification. Commits wait for the cluster.</li><li id="operators-note-cnmsql-replica">The spec.replica field exists in the API, but the operator rejects it today. Cross-region recovery means restoring from the object store.</li><li id="operators-note-vitess-cells">The operator documentation describes replicating across availability zones within one Kubernetes cluster.</li><li id="operators-note-services">Clients connect straight to the database Pod, with no extra hop. The application picks the read-write or read-only Service itself and reconnects after a failover.</li><li id="operators-note-pxc-direct">HAProxy is the default. The operator can also expose the XtraDB Cluster Pods directly.</li><li id="operators-note-router-pooling">MySQL Router 8.4 can share and reuse server connections. We did not find an operator setting that turns it on.</li><li id="operators-note-cnmsql-s3">Any S3-compatible store, including AWS S3, MinIO, Ceph RGW, Cloudflare R2 and Backblaze B2. GCS works through its S3 interoperability API with HMAC keys. Azure Blob Storage and volumes are not supported.</li><li id="operators-note-cnmsql-pitr">Binary logs are archived continuously to S3-compatible storage. Recovery cannot bring back transactions that were never archived and are missing from the new primary.</li><li id="operators-note-pxc-pitr">A dedicated Pod uploads binary logs to S3-compatible or Azure storage at a configurable interval.</li><li id="operators-note-moco-pitr">Binary logs are collected at each backup run, not streamed. If the whole cluster is lost, up to one backup interval of writes can be lost.</li><li id="operators-note-pxc-users">Users and grants are declared in the users section of the cluster resource. Removing a user from the resource does not drop it from the database.</li><li id="operators-note-cnmsql-upgrade">One series at a time, with a rolling restart and a switchover. MariaDB follows 10.11, 11.4, 12.3. Downgrades are not supported.</li></ol></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-cnmsql-does-not-do">What CNMSQL does not do<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#what-cnmsql-does-not-do" class="hash-link" aria-label="Direct link to What CNMSQL does not do" title="Direct link to What CNMSQL does not do" translate="no">​</a></h2>
<p>Some of these are on the roadmap. Others are design choices.</p>
<table><thead><tr><th>Area</th><th>Limitation</th></tr></thead><tbody><tr><td>Maturity</td><td>First release in June 2026. The API is <code>v1alpha1</code> and can change between minor releases; read the <a class="" href="https://cnmsql.co/operator-upgrades">upgrade notes</a> before every upgrade.</td></tr><tr><td>Scale</td><td>No sharding and no multi-primary writes. One primary takes every write.</td></tr><tr><td>Disaster recovery</td><td>No standby cluster in another region yet. Cross-region recovery means restoring from the object store.</td></tr><tr><td>Backup storage</td><td>S3-compatible object storage only. GCS works through its S3 interoperability API; Azure Blob Storage and volumes are not supported.</td></tr><tr><td>Routing</td><td>No proxy. Applications choose between Kubernetes Services. There is no read/write splitting or connection pooling.</td></tr><tr><td>Engines</td><td>Percona Server 8.0 and 8.4 only for MySQL. No Oracle MySQL images, no 5.7. On MariaDB: no Galera or Group Replication.</td></tr><tr><td>Changes in place</td><td>A cluster cannot switch between async replication and Group Replication, or between MySQL and MariaDB. Downgrades are not supported.</td></tr><tr><td>Recovery</td><td>Group Replication quorum loss needs a human to run <code>kubectl cnmsql group recover</code>. A diverged replica is re-initialized by hand, which discards its data.</td></tr><tr><td>Dependencies</td><td>cert-manager is required. No NetworkPolicy examples ship yet.</td></tr></tbody></table>
<p>Details: <a class="" href="https://cnmsql.co/group-replication">Group Replication</a>,
<a class="" href="https://cnmsql.co/replication-failover">Replication and failover</a>,
<a class="" href="https://cnmsql.co/pitr">Point-in-time recovery</a>, <a class="" href="https://cnmsql.co/mariadb">MariaDB flavor</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-other-options-in-brief">The other options, in brief<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#the-other-options-in-brief" class="hash-link" aria-label="Direct link to The other options, in brief" title="Direct link to The other options, in brief" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="percona-xtradb-cluster-operator">Percona XtraDB Cluster operator<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#percona-xtradb-cluster-operator" class="hash-link" aria-label="Direct link to Percona XtraDB Cluster operator" title="Direct link to Percona XtraDB Cluster operator" translate="no">​</a></h3>
<p>The longest-running operator in this list (since 2018). It runs Galera-based
synchronous replication behind HAProxy or ProxySQL.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you want a mature vendor operator, still run 5.7, or need
synchronous replication.</li>
<li class=""><strong>Watch out for:</strong> Galera's rules on primary keys and large transactions,
and the extra commit latency.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="percona-server-operator">Percona Server operator<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#percona-server-operator" class="hash-link" aria-label="Direct link to Percona Server operator" title="Direct link to Percona Server operator" translate="no">​</a></h3>
<p>Percona's operator for standard Percona Server. Group Replication has been GA
since 1.0.0 (November 2025), and 1.2.0 added cross-site replication and
encrypted backups.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you want Group Replication with a vendor behind it.</li>
<li class=""><strong>Watch out for:</strong> async replication and point-in-time recovery are still
tech previews.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="oracle-mysql-operator">Oracle MySQL Operator<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#oracle-mysql-operator" class="hash-link" aria-label="Direct link to Oracle MySQL Operator" title="Direct link to Oracle MySQL Operator" translate="no">​</a></h3>
<p>Runs InnoDB Cluster (Group Replication plus MySQL Router) on Oracle's
Community or Enterprise images.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you are standardized on Oracle MySQL or need the Enterprise
edition.</li>
<li class=""><strong>Watch out for:</strong> backups are logical dumps only, point-in-time recovery is
not documented, and only one cluster-wide operator can be installed.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="moco">MOCO<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#moco" class="hash-link" aria-label="Direct link to MOCO" title="Direct link to MOCO" translate="no">​</a></h3>
<p>Cybozu's operator for GTID semi-sync replication on MySQL 8.0 and 8.4, up to
five instances. It does not do Group Replication by design.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you want plain MySQL replication from a small, focused
operator.</li>
<li class=""><strong>Watch out for:</strong> binlogs are collected at backup time, not streamed, and
old backups are not deleted for you.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vitess-operator">Vitess Operator<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#vitess-operator" class="hash-link" aria-label="Direct link to Vitess Operator" title="Direct link to Vitess Operator" translate="no">​</a></h3>
<p>Runs <a href="https://vitess.io/" target="_blank" rel="noopener noreferrer" class="">Vitess</a>, a CNCF graduated project that shards MySQL
behind the vtgate proxy.</p>
<ul>
<li class=""><strong>Pick it if:</strong> one primary cannot keep up with your writes or data size.</li>
<li class=""><strong>Watch out for:</strong> more components to run, and
<a href="https://vitess.io/docs/reference/compatibility/mysql-compatibility/" target="_blank" rel="noopener noreferrer" class="">SQL limits on sharded keyspaces</a>
such as no <code>CREATE PROCEDURE</code> through Vitess and no unique <code>auto_increment</code>
across shards.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mariadb-operator">mariadb-operator<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#mariadb-operator" class="hash-link" aria-label="Direct link to mariadb-operator" title="Direct link to mariadb-operator" translate="no">​</a></h3>
<p>MariaDB only, with async replication or Galera, optional MaxScale, and
point-in-time recovery since 26.3.0.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you run MariaDB and want Galera or MaxScale.</li>
<li class=""><strong>Compared with CNMSQL on MariaDB:</strong> CNMSQL has neither Galera nor MaxScale.
It makes sense for MariaDB only if you want one operator for MariaDB and
Percona Server.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubedb">KubeDB<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#kubedb" class="hash-link" aria-label="Direct link to KubeDB" title="Direct link to KubeDB" translate="no">​</a></h3>
<p>AppsCode's commercial platform for many engines. For MySQL it supports Group
Replication, InnoDB Cluster, semi-sync and remote replicas.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you want one supported product across many databases.</li>
<li class=""><strong>Watch out for:</strong> a paid license is needed for anything that lives longer
than 30 days.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubeblocks">KubeBlocks<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#kubeblocks" class="hash-link" aria-label="Direct link to KubeBlocks" title="Direct link to KubeBlocks" translate="no">​</a></h3>
<p>ApeCloud's multi-engine platform. Its MySQL addon supports replication, Group
Replication and Orchestrator topologies on 5.7, 8.0 and 8.4.</p>
<ul>
<li class=""><strong>Pick it if:</strong> you want one platform for several engines.</li>
<li class=""><strong>Watch out for:</strong> the AGPL-3.0 license, which some organizations do not
allow.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="inactive-projects">Inactive projects<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#inactive-projects" class="hash-link" aria-label="Direct link to Inactive projects" title="Direct link to Inactive projects" translate="no">​</a></h3>
<p><a href="https://github.com/bitpoke/mysql-operator" target="_blank" rel="noopener noreferrer" class="">Bitpoke mysql-operator</a> (last
release May 2023) and
<a href="https://github.com/radondb/radondb-mysql-kubernetes" target="_blank" rel="noopener noreferrer" class="">RadonDB MySQL Kubernetes</a>
(last release November 2024) are not archived, but we would not start a new
deployment on either.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="managed-services">Managed services<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#managed-services" class="hash-link" aria-label="Direct link to Managed services" title="Direct link to Managed services" translate="no">​</a></h3>
<p>If the database does not have to run inside your cluster, Amazon RDS, Google
Cloud SQL or Azure Database for MySQL remove the need for an operator, at the
cost of price, provider lock-in and control over versions.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-choose">How to choose<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#how-to-choose" class="hash-link" aria-label="Direct link to How to choose" title="Direct link to How to choose" translate="no">​</a></h2>
<ol>
<li class=""><strong>Engine.</strong> Oracle MySQL, Percona Server, Percona XtraDB Cluster or
MariaDB? This alone rules out several options.</li>
<li class=""><strong>Write scale.</strong> If one primary cannot keep up, look at Vitess.</li>
<li class=""><strong>Disaster recovery.</strong> Need a standby in another region today? Look at the
Percona operators, mariadb-operator or KubeDB.</li>
<li class=""><strong>Data loss.</strong> Compare the point-in-time recovery row, and check whether it
is GA or a tech preview.</li>
<li class=""><strong>Proxy or not.</strong> A proxy adds read/write splitting and one more component
to run.</li>
<li class=""><strong>License.</strong> AGPL-3.0 (KubeBlocks) and commercial (KubeDB) need sign-off in
many companies.</li>
<li class=""><strong>Maturity.</strong> GA vendor operators, community projects with years of
releases, and pre-1.0 projects like CNMSQL carry different levels of risk.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-cnmsql-fits">Where CNMSQL fits<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#where-cnmsql-fits" class="hash-link" aria-label="Direct link to Where CNMSQL fits" title="Direct link to Where CNMSQL fits" translate="no">​</a></h2>
<p>CNMSQL applies the design of <a href="https://cloudnative-pg.io/" target="_blank" rel="noopener noreferrer" class="">CloudNativePG</a> to
MySQL: an instance manager in each Pod, failover decided by the operator with
leases and fencing, and Kubernetes Services instead of a proxy. On top of the
features in the table, it has a namespaced install mode, HPA and VPA support,
and slim rootless images.</p>
<p>If the limitations above don't rule it out, the <a class="" href="https://cnmsql.co/quickstart">quickstart</a>
gets a three-instance cluster running in a few minutes. Issues and pull
requests are welcome on <a href="https://github.com/cnmsql/cnmsql" target="_blank" rel="noopener noreferrer" class="">GitHub</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://cnmsql.co/blog/mysql-kubernetes-operators-compared#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h2>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Every source, checked on 16 October 2026</summary><div><div class="collapsibleContent_i85q"><p>Release dates come from each project's GitHub releases page unless a source
below gives one.</p><ul>
<li class=""><strong>CNMSQL:</strong> <a class="" href="https://cnmsql.co/">documentation</a>, <a href="https://github.com/cnmsql/cnmsql" target="_blank" rel="noopener noreferrer" class="">GitHub repository</a></li>
<li class=""><strong>Percona XtraDB Cluster operator:</strong> <a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/index.html" target="_blank" rel="noopener noreferrer" class="">documentation</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/ReleaseNotes/Kubernetes-Operator-for-PXC-RN1.20.0.html" target="_blank" rel="noopener noreferrer" class="">1.20.0 release notes</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/backups-pitr.html" target="_blank" rel="noopener noreferrer" class="">point-in-time recovery</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/backups-storage.html" target="_blank" rel="noopener noreferrer" class="">backup storage</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/users.html" target="_blank" rel="noopener noreferrer" class="">users</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/pxc/latest/update-db.html" target="_blank" rel="noopener noreferrer" class="">database upgrades</a></li>
<li class=""><strong>Percona Server operator:</strong> <a href="https://docs.percona.com/percona-operator-for-mysql/ps/latest/index.html" target="_blank" rel="noopener noreferrer" class="">documentation</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/ps/ReleaseNotes/Kubernetes-Operator-for-PS-RN1.2.0.html" target="_blank" rel="noopener noreferrer" class="">1.2.0 release notes</a>, <a href="https://docs.percona.com/new/2025/11/17/general-availability-percona-operator-for-mysql-100-with-group-replication/" target="_blank" rel="noopener noreferrer" class="">GA announcement</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/ps/latest/backups-storage.html" target="_blank" rel="noopener noreferrer" class="">backup storage</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/ps/latest/users.html" target="_blank" rel="noopener noreferrer" class="">users</a>, <a href="https://docs.percona.com/percona-operator-for-mysql/ps/latest/update-db.html" target="_blank" rel="noopener noreferrer" class="">database upgrades</a></li>
<li class=""><strong>Oracle MySQL Operator:</strong> <a href="https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-introduction.html" target="_blank" rel="noopener noreferrer" class="">introduction</a>, <a href="https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-backups.html" target="_blank" rel="noopener noreferrer" class="">backups</a>, <a href="https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-properties.html" target="_blank" rel="noopener noreferrer" class="">custom resource properties</a>, <a href="https://dev.mysql.com/doc/relnotes/mysql-operator/en/news-26-7-0-2.3.0.html" target="_blank" rel="noopener noreferrer" class="">26.7.0-2.3.0 release notes</a>, <a href="https://github.com/mysql/mysql-operator" target="_blank" rel="noopener noreferrer" class="">README</a></li>
<li class=""><strong>MOCO:</strong> <a href="https://github.com/cybozu-go/moco" target="_blank" rel="noopener noreferrer" class="">README</a>, <a href="https://github.com/cybozu-go/moco/blob/main/docs/backup.md" target="_blank" rel="noopener noreferrer" class="">backup design</a>, <a href="https://github.com/cybozu-go/moco/blob/main/docs/azure-blob-storage.md" target="_blank" rel="noopener noreferrer" class="">Azure Blob Storage</a>, <a href="https://github.com/cybozu-go/moco/blob/main/docs/usage.md" target="_blank" rel="noopener noreferrer" class="">usage</a>, <a href="https://github.com/cybozu-go/moco/blob/main/docs/upgrading.md" target="_blank" rel="noopener noreferrer" class="">upgrading mysqld</a></li>
<li class=""><strong>Vitess:</strong> <a href="https://vitess.io/docs/faq/operating-vitess/overview/what-is-the-vitess-operator/" target="_blank" rel="noopener noreferrer" class="">operator overview</a>, <a href="https://vitess.io/docs/reference/compatibility/mysql-compatibility/" target="_blank" rel="noopener noreferrer" class="">MySQL compatibility</a>, <a href="https://vitess.io/docs/user-guides/operating-vitess/backup-and-restore/overview/" target="_blank" rel="noopener noreferrer" class="">backup and restore</a></li>
<li class=""><strong>mariadb-operator:</strong> <a href="https://github.com/mariadb-operator/mariadb-operator" target="_blank" rel="noopener noreferrer" class="">README</a>, <a href="https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/sql_resources.md" target="_blank" rel="noopener noreferrer" class="">SQL resources</a>, <a href="https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/logical_backup.md" target="_blank" rel="noopener noreferrer" class="">logical backups</a>, <a href="https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/updates.md" target="_blank" rel="noopener noreferrer" class="">updates</a></li>
<li class=""><strong>KubeDB:</strong> <a href="https://kubedb.com/kubernetes/databases/run-and-manage-mysql-on-kubernetes/" target="_blank" rel="noopener noreferrer" class="">MySQL overview</a>, <a href="https://kubedb.com/docs/v2026.10.12/guides/mysql/" target="_blank" rel="noopener noreferrer" class="">MySQL guides</a>, <a href="https://kubedb.com/docs/v2026.10.12/guides/mysql/clustering/remote-replica/" target="_blank" rel="noopener noreferrer" class="">remote replica</a>, <a href="https://kubedb.com/docs/v2026.10.12/guides/mysql/update-version/overview/" target="_blank" rel="noopener noreferrer" class="">version updates</a>, <a href="https://kubedb.com/docs/v2026.10.12/guides/mariadb/" target="_blank" rel="noopener noreferrer" class="">MariaDB guides</a>, <a href="https://kubedb.com/kubernetes/databases/run-and-manage-percona-xtradb-on-kubernetes/" target="_blank" rel="noopener noreferrer" class="">Percona XtraDB</a>, <a href="https://kubestash.com/docs/latest/guides/backends/overview/" target="_blank" rel="noopener noreferrer" class="">KubeStash storage backends</a>, <a href="https://kubedb.com/pricing/" target="_blank" rel="noopener noreferrer" class="">pricing</a></li>
<li class=""><strong>KubeBlocks:</strong> <a href="https://github.com/apecloud/kubeblocks" target="_blank" rel="noopener noreferrer" class="">repository</a>, <a href="https://github.com/apecloud/kubeblocks-addons/tree/main/addons/mysql" target="_blank" rel="noopener noreferrer" class="">MySQL addon</a>, <a href="https://github.com/apecloud/kubeblocks-addons/tree/main/addons/mysql/templates" target="_blank" rel="noopener noreferrer" class="">MySQL backup actions</a>, <a href="https://kubeblocks.io/docs/preview/user_docs/concepts/backup-and-restore/backup/backup-repo" target="_blank" rel="noopener noreferrer" class="">backup repositories</a>, <a href="https://github.com/apecloud/kubeblocks-addons/tree/main/addons" target="_blank" rel="noopener noreferrer" class="">addon list</a></li>
</ul></div></div></details>]]></content:encoded>
            <category>Comparison</category>
            <category>Kubernetes</category>
            <category>MySQL</category>
            <category>MariaDB</category>
            <category>Operators</category>
        </item>
    </channel>
</rss>