专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle MySQL Operator部署集群(mysql做集群)

ins518 2025-07-09 12:57:43 技术文章 2 ℃ 0 评论

以下是使用 Oracle MySQL Operator 部署 MySQL 集群的完整流程及关键注意事项:

一、部署前准备

  1. 安装 MySQL Operator通过 Helm 安装 Operator 到 Kubernetes 集群:
helm repo add mysql-operator https://mysql.github.io/mysql-operator/
helm install my-mysql-operator mysql-operator/mysql-operator \
--namespace mysql-operator --create-namespace

验证 Operator Pod 状态为 Running。

  1. 创建 Secret 存储密码生成包含 root 密码的 Secret:
kubectl create secret generic mysql-root-password \
--from-literal=password=<your-root-password>

二、定义 MySQL 集群配置 (mysql-cluster.yaml)

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mysql-cluster
spec:
  secretName: mysql-root-password  # 引用步骤2的Secret
  instances: 3                     # 一主两从节点数量
  tlsUseSelfSigned: true           # 启用自签名TLS证书
  router:
    instances: 1                   # MySQL Router实例数
  volumeSpec:
    persistentVolumeClaim:
      storageClassName: standard    # 需匹配K8s存储类
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi            # 每节点存储空间

三、部署集群

kubectl apply -f mysql-cluster.yaml

等待集群初始化完成(约 5-10 分钟),验证状态:

kubectl get innodbcluster mysql-cluster -w
# 输出 ONLINESTATUS: ONLINE 表示成功

四、集群访问与验证

连接方式

  • 写操作:通过主节点 Service
mysql -h mysql-cluster-mysql-master -uroot -p
  • 读操作:通过只读副本 Service
mysql -h mysql-cluster-mysql-replicas -uroot -p

高可用测试删除主节点 Pod 后,Operator 自动选举新主节点:

kubectl delete pod mysql-cluster-0 # 观察新主节点自动切换

五、关键注意事项

存储要求

  • 必须使用支持 ReadWriteOnce 的持久化存储(如云盘/NFS)。
  • 禁用 hostPath 避免节点故障数据丢失。

备份恢复支持定时备份到 S3 或 PVC:

spec:
  backupSchedule: "0 0 * * *"      # 每日备份
  backupStorage:
    s3:
      bucketName: my-backup-bucket

版本限制

  • 仅支持 MySQL 8.0+,不兼容旧版本。
  • Kubernetes 版本需 ≥1.19。

六、故障排查

  • 集群初始化失败:检查 Secret 命名一致性及密码复杂度。
  • 节点无法加入集群:验证网络策略是否允许 Pod 间通信(端口 3306/33061)。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表