如何使用Helm在K8S上配置StatefulSet和PVC部署MySQL主从集群?

2026-05-07 22:150阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计955个文字,预计阅读时间需要4分钟。

如何使用Helm在K8S上配置StatefulSet和PVC部署MySQL主从集群?

直接说结论:

为什么必须用 StatefulSet 而不是 Deployment

MySQL 主从依赖稳定的网络标识(如 mysql-0.mysql-service)、有序启停、以及每个实例独占持久卷。Deployment 无法保证 Pod 名称固定、无法按序创建、也无法为每个副本绑定唯一 PVC —— 这会导致:

  • mysql-1 启动时连不上 mysql-0(DNS 解析失败或地址漂移)
  • 两个从库挂载同一份 PVC,造成数据损坏
  • 滚动更新时主库被杀,复制链断裂且无法自动恢复

Bitnami Chart 中 architecture: "replication" 模式会自动启用 StatefulSet,但前提是 primary.replicaCountsecondary.replicaCount 都设为 1(非 0),且 storageClass 支持动态供给或已预置对应数量的 PV。

StatefulSet 下 PVC 的正确配置方式

主从 Pod 各需独立 PVC,不能共用 storageClass 的同一个 volumeClaimTemplate 名称(否则会被当成同一份存储)。

阅读全文
标签:Mysql

本文共计955个文字,预计阅读时间需要4分钟。

如何使用Helm在K8S上配置StatefulSet和PVC部署MySQL主从集群?

直接说结论:

为什么必须用 StatefulSet 而不是 Deployment

MySQL 主从依赖稳定的网络标识(如 mysql-0.mysql-service)、有序启停、以及每个实例独占持久卷。Deployment 无法保证 Pod 名称固定、无法按序创建、也无法为每个副本绑定唯一 PVC —— 这会导致:

  • mysql-1 启动时连不上 mysql-0(DNS 解析失败或地址漂移)
  • 两个从库挂载同一份 PVC,造成数据损坏
  • 滚动更新时主库被杀,复制链断裂且无法自动恢复

Bitnami Chart 中 architecture: "replication" 模式会自动启用 StatefulSet,但前提是 primary.replicaCountsecondary.replicaCount 都设为 1(非 0),且 storageClass 支持动态供给或已预置对应数量的 PV。

StatefulSet 下 PVC 的正确配置方式

主从 Pod 各需独立 PVC,不能共用 storageClass 的同一个 volumeClaimTemplate 名称(否则会被当成同一份存储)。

阅读全文
标签:Mysql