本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
MariaDB Galera 是一款多主数据库集群解决方案,支持同步复制和高可用性。Bitnami 提供的此包可通过 Helm 包管理器在 Kubernetes 集群上快速部署和管理 MariaDB Galera 集群,适用于需要高可用性和数据一致性的生产环境。
MariaDB Galera 概述
商标声明:本软件包由 Bitnami 打包。产品中提及的商标分属各自公司所有,使用此类商标不意味着任何关联或背书。
helm install my-release oci://registry-1.docker.io/bitnamicharts/mariadb-galera
注意:生产环境建议使用 VMware Tanzu Application Catalog(Bitnami 商业版目录)。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共目录,通过 Bitnami Secure Images 计划 提供精选的强化安全镜像。过渡期变更如下:
更多详情参见 Bitnami Secure Images 公告。
| 特性 | MariaDB Galera Helm Chart | MariaDB Helm Chart |
|---|---|---|
| 集群拓扑 | 多主(默认 3 节点,均支持读写) | 单主(1 主节点,可选从节点) |
| 复制方式 | 同步复制 | 异步复制 |
| 故障处理 | 自动成员控制,故障节点自动移除 | 需手动或通过外部工具切换主节点 |
| 扩展性 | 支持读写扩展 | 主要支持读扩展(增加从节点) |
| 数据一致性 | 强一致性(同步复制) | 最终一致性(异步复制) |
使用以下命令部署 MariaDB Galera 集群:
helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb-galera
注意:需替换
REGISTRY_NAME和REPOSITORY_NAME为实际 Helm 仓库地址。Bitnami 官方仓库示例:REGISTRY_NAME=registry-1.docker.io,REPOSITORY_NAME=bitnamicharts。
kubectl scale sts my-release-mariadb-galera --replicas=0
helm delete my-release
通过 resources 参数配置容器资源请求和限制,生产环境建议根据实际负载调整:
resources: requests: cpu: 500m memory: 1Gi limits: cpu: 1000m memory: 2Gi
也可通过 resourcesPreset 使用预设配置(如 micro、small、medium),但生产环境建议手动配置以适配实际需求。
凭据(如 root 密码)在首次部署时设置,后续更新需手动操作:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new-root-password');
kubectl create secret generic my-release-mariadb-galera \ --from-literal=mariadb-root-password=new-root-password \ --from-literal=mariadb-password=new-user-password \ --from-literal=mariadb-galera-mariabackup-password=new-backup-password \ --dry-run -o yaml | kubectl apply -f -
启用 metrics 以集成 Prometheus:
metrics: enabled: true serviceMonitor: enabled: true # 若使用 Prometheus Operator,启用 ServiceMonitor
将自动部署 mysqld-exporter 作为 sidecar 容器,并通过 metrics Service 暴露指标。
配置 LDAP 集成参数以启用 LDAP 身份认证:
ldap: enabled: true uri: "ldap://ldap-server:389" # LDAP 服务器地址 base: "dc=example,dc=org" # 基础 DN binddn: "cn=admin,dc=example,dc=org" # 绑定 DN bindpw: "admin-password" # 绑定密码 scope: "sub" # 搜索范围 filter: "(uid=%s)" # 搜索过滤器
部署后,通过 MariaDB 客户端创建 PAM 认证用户:
CREATE USER 'ldap-user'@'localhost' IDENTIFIED VIA pam USING 'mariadb';
kubectl create secret generic mariadb-tls-secret \ --from-file=cert.pem=/path/to/cert.pem \ --from-file=key.pem=/path/to/key.pem \ --from-file=ca.pem=/path/to/ca.pem
tls: enabled: true certificatesSecret: "mariadb-tls-secret" certFilename: "cert.pem" certKeyFilename: "key.pem" certCAFilename: "ca.pem"
通过以下方式自定义初始化脚本:
files/docker-entrypoint-initdb.d,存放脚本(自动挂载为 ConfigMap)initdbScripts 参数定义脚本:initdbScripts: create-db.sh: | #!/bin/sh if [[ $(hostname) == *-0 ]]; then # 仅在引导节点执行 mysql -uroot -p${MARIADB_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS appdb;" fi init-table.sql: | CREATE TABLE IF NOT EXISTS appdb.users (id INT PRIMARY KEY);
注意:
.sh脚本在所有节点执行,.sql和.sql.gz仅在引导节点执行。
当集群需要从非 0 号节点引导时(如 0 号节点故障):
grastate.dat 中的 safe_to_bootstrap 值:# 示例:检查节点 2 的 grastate.dat kubectl run -i --rm --tty volpod --image=bitnami/minideb --overrides=' { "spec": { "volumes": [{"name": "data", "persistentVolumeClaim": {"claimName": "data-my-release-mariadb-galera-2"}}], "containers": [{"name": "check", "image": "bitnami/minideb", "command": ["cat", "/data/grastate.dat"], "volumeMounts": [{"mountPath": "/data", "name": "data"}]}] } }'
safe_to_bootstrap: 1,使用以下命令重新部署:helm install my-release oci://registry-1.docker.io/bitnamicharts/mariadb-galera \ --set rootUser.password=old-root-password \ --set galera.mariabackup.password=old-backup-password \ --set galera.bootstrap.forceBootstrap=true \ --set galera.bootstrap.bootstrapFromNode=N \ --set podManagementPolicy=Parallel
方法 1:使用 mysqldump 备份数据
kubectl exec -it my-release-mariadb-galera-0 -- mysqldump -uroot -p${MARIADB_ROOT_PASSWORD} --all-databases > backup.sql
kubectl exec -i my-release-mariadb-galera-0 -- mysql -uroot -p${MARIADB_ROOT_PASSWORD} < backup.sql
方法 2:使用 Velero 备份 PV
适用于同平台 Kubernetes 集群迁移,需安装 Velero:
# 备份 PV velero backup create mariadb-backup --include-resources=pvc,pv --selector app.kubernetes.io/instance=my-release # 恢复 PV velero restore create --from-backup mariadb-backup
数据存储在容器路径 /bitnami/mariadb,默认使用动态 PV 供应。可通过 persistence 参数自定义:
persistence: enabled: true storageClass: "fast-storage" # 指定存储类 size: "10Gi" # 存储大小
核心配置参数说明(完整列表参见 官方文档):
| 参数 | 描述 | 默认值 |
|---|---|---|
rootUser.password | root 用户密码 | 自动生成随机密码 |
galera.replicas | 集群节点数量 | 3 |
galera.bootstrap.forceBootstrap | 强制从指定节点引导集群 | false |
image.tag | MariaDB Galera 镜像标签 | "latest" |
resources.requests.cpu | CPU 请求 | 250m |
resources.requests.memory | 内存请求 | 256Mi |
metrics.enabled | 是否启用 Prometheus 指标 | false |
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429