ApeCloud
博客开源社区关于我们
关系型数据库
开源

在 Kubernetes 上运行生产级 MySQL 集群

KubeBlocks MySQL Operator 支持 SemiSync、MGR、Orchestrator 三种高可用拓扑,提供自动故障转移、PITR 按时间点恢复与零停机版本升级,RTO 低于 30 秒。

访问 GitHub

3 种

HA 拓扑

RTO < 30s

故障自动切换

RPO = 0

同步复制模式

100%

开源免费

2 步部署生产级 MySQL Operator

1

安装 KubeBlocks

# 添加 Helm 仓库
helm repo add kubeblocks https://apecloud.github.io/helm-charts
helm repo update

# 安装 KubeBlocks
helm install kubeblocks kubeblocks/kubeblocks \
  --namespace kb-system --create-namespace
2

创建 MySQL Operator 集群

apiVersion: apps.kubeblocks.io/v1
kind: Cluster
metadata:
  name: mysql-cluster
  namespace: demo
spec:
  terminationPolicy: Delete
  clusterDef: mysql
  topology: semisync  # 或 mgr
  componentSpecs:
    - name: mysql
      replicas: 3

核心能力

多种 HA 拓扑

支持 SemiSync 半同步、MySQL Group Replication(MGR)和 Orchestrator 三种高可用模式,满足不同业务对一致性与可用性的权衡需求。

PITR 按时间点恢复

基于 binlog 流式备份,支持按任意时间点还原数据,RPO 接近零,满足金融级数据安全要求。

ProxySQL 连接池

内置 ProxySQL 读写分离与连接池管理,主从切换对应用透明,无需修改业务代码。

零停机升级

滚动升级策略配合健康检查,大版本升级期间业务不中断,RTO 低于 30 秒。


部署拓扑

SemiSync 半同步复制

最广泛使用的 MySQL 高可用方案。Primary 节点写入时至少等待一个 Replica 确认 binlog 落盘,故障切换后数据零丢失,同时保持读写分离的高性能。

Primary + Replicas
读写分离
RTO < 30s
RPO = 0
关键特性

Primary 提供读写服务,Replica 承载只读流量;读写分离可通过应用侧路由或选用带 ProxySQL 的拓扑(如 orc-proxysql)

主库故障时由 KubeBlocks 内置 HA 管理器完成自动选主与复制拓扑修复,RTO 通常低于 30 秒

半同步模式下 Primary 提交前至少一个 Replica 确认 binlog,不丢数据

支持同步转异步降级,防止网络抖动阻塞主库写入

应用 / 客户端
通过 ProxySQL :6033 或直连 :3306
K8s Service · ClusterIP
Kubernetes 服务
可选
mysql-cluster-proxysql
ClusterIP · :6033
选择器: proxysql pods
ProxySQL
mysql-cluster-mysql
ClusterIP · :3306
selector: role=primary
MySQL 直连
→ proxysql pod
可选
ProxySQL — 读写分离
:6033 MySQL
:6032 管理
WRITEINSERT / UPDATE / DELETE → 仅主库
READSELECT → 从库(负载均衡)
pod FQDN via headless service · :3306
mysql-0主节点
mysql
:3306 · 主库角色
rw
syncer
角色探测 via syncerctl
mysql-exporter
:9104 监控指标
PVC data-0 · 20Gi
mysql-1从节点
mysql
:3306 · 从库角色
ro
syncer
角色探测 via syncerctl
mysql-exporter
:9104 监控指标
PVC data-1 · 20Gi
mysql-2从节点
mysql
:3306 · 从库角色
ro
syncer
角色探测 via syncerctl
mysql-exporter
:9104 监控指标
PVC data-2 · 20Gi
Binlog 流(异步 / 半同步复制)主库-0 → 从库-1 · 从库-2
ProxySQL (可选)
主库 / 写入
从库 / 只读
持久化存储

常见问题

KubeBlocks MySQL Operator 支持哪些 MySQL 版本?

KubeBlocks MySQL Operator 支持 MySQL 5.7、8.0 和 8.4 等主流版本,也可通过自定义镜像运行其他兼容版本。

MySQL 主从切换需要多长时间(RTO)?

在 SemiSync 和 MGR 拓扑下,KubeBlocks 的自动故障转移 RTO 通常低于 30 秒。Orchestrator 拓扑由于需要感知复杂链路,切换时间略长,一般在 30-60 秒内完成。

KubeBlocks MySQL 如何进行备份?

KubeBlocks 支持基于 XtraBackup 的全量备份和基于 binlog 的增量备份(PITR),备份文件可上传至 S3、MinIO 等对象存储,支持按任意时间点恢复,RPO 接近零。

KubeBlocks MySQL Operator 是否免费?

KubeBlocks开源版完全开源免费,涵盖所有核心 HA 拓扑、备份恢复与运维操作。KubeBlocks企业版 提供图形化控制台、多集群管理与商业支持等增值功能。

在 Kubernetes 上运行 MySQL 会有性能损耗吗?

经过测试,在合理配置 CPU/内存资源请求与限制、使用本地 SSD StorageClass 的情况下,Kubernetes 上的 MySQL 性能与裸机相差不超过 5%,与云厂商 RDS 相比吞吐量相当,P99 延迟更低。

如何将现有 MySQL 迁移到 KubeBlocks 管理?

推荐使用开源工具 ape-dts 进行在线迁移,支持全量 + 增量同步,迁移完成后切换流量,业务中断时间极短。也可使用 mysqldump 或 XtraBackup 导出数据后在 KubeBlocks 集群上恢复。