
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
MariaDB Galera 是一款多主数据库集群解决方案,支持同步复制和高可用性。Bitnami 提供的此包可通过 Helm 包管理器在 Kubernetes 集群上快速部署和管理 MariaDB Galera 集群,适用于需要高可用性和数据一致性的生产环境。
MariaDB Galera 概述
商标声明:本软件包由 Bitnami 打包。产品中提及的商标分属各自公司所有,使用此类商标不意味着任何关联或背书。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/mariadb-galera
注意:生产环境建议使用 VMware Tanzu Application Catalog(Bitnami 商业版目录)。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共目录,通过 Bitnami Secure Images 计划 提供精选的强化安全镜像。过渡期变更如下:
更多详情参见 https://github.com/bitnami/containers/issues/83267%E3%80%82
| 特性 | MariaDB Galera Helm Chart | MariaDB Helm Chart |
|---|---|---|
| 集群拓扑 | 多主(默认 3 节点,均支持读写) | 单主(1 主节点,可选从节点) |
| 复制方式 | 同步复制 | 异步复制 |
| 故障处理 | 自动成员控制,故障节点自动移除 | 需手动或通过外部工具切换主节点 |
| 扩展性 | 支持读写扩展 | 主要支持读扩展(增加从节点) |
| 数据一致性 | 强一致性(同步复制) | 最终一致性(异步复制) |
使用以下命令部署 MariaDB Galera 集群:
consolehelm 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。
consolekubectl scale sts my-release-mariadb-galera --replicas=0
consolehelm delete my-release
资源请求与限制
通过 resources 参数配置容器资源请求和限制,生产环境建议根据实际负载调整:
yamlresources: requests: cpu: 500m memory: 1Gi limits: cpu: 1000m memory: 2Gi
也可通过 resourcesPreset 使用预设配置(如 micro、small、medium),但生产环境建议手动配置以适配实际需求。
更新凭据
凭据(如 root 密码)在首次部署时设置,后续更新需手动操作:
sqlSET PASSWORD FOR 'root'@'localhost' = PASSWORD('new-root-password');
shellkubectl 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 -
Prometheus 监控集成
启用 metrics 以集成 Prometheus:
yamlmetrics: enabled: true serviceMonitor: enabled: true # 若使用 Prometheus Operator,启用 ServiceMonitor
将自动部署 mysqld-exporter 作为 sidecar 容器,并通过 metrics Service 暴露指标。
启用 LDAP 认证
配置 LDAP 集成参数以启用 LDAP 身份认证:
yamlldap: 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 认证用户:
sqlCREATE USER 'ldap-user'@'localhost' IDENTIFIED VIA pam USING 'mariadb';
启用 TLS 加密
consolekubectl 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
yamltls: enabled: true certificatesSecret: "mariadb-tls-secret" certFilename: "cert.pem" certKeyFilename: "key.pem" certCAFilename: "ca.pem"
初始化实例
通过以下方式自定义初始化脚本:
files/docker-entrypoint-initdb.d,存放脚本(自动挂载为 ConfigMap)initdbScripts 参数定义脚本:yamlinitdbScripts: 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 号节点引导时(如 0 号节点故障):
grastate.dat 中的 safe_to_bootstrap 值:console# 示例:检查节点 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,使用以下命令重新部署:consolehelm 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 备份数据
consolekubectl exec -it my-release-mariadb-galera-0 -- mysqldump -uroot -p${MARIADB_ROOT_PASSWORD} --all-databases > backup.sql
consolekubectl exec -i my-release-mariadb-galera-0 -- mysql -uroot -p${MARIADB_ROOT_PASSWORD} < backup.sql
方法 2:使用 Velero 备份 PV
适用于同平台 Kubernetes 集群迁移,需安装 Velero:
console# 备份 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 参数自定义:
yamlpersistence: enabled: true storageClass: "fast-storage" # 指定存储类 size: "10Gi" # 存储大小
核心配置参数说明(完整列表参见 https://github.com/bitnami/charts/blob/main/bitnami/mariadb-galera/README.md%EF%BC%89%EF%BC%9A
| 参数 | 描述 | 默认值 |
|---|---|---|
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 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务