轩辕镜像
轩辕镜像专业版
个人中心搜索镜像
交易
充值流量我的订单
工具
工单支持镜像收录Run 助手IP 归属地密码生成Npm 源Pip 源
帮助
常见问题我要吐槽
其他
关于我们网站地图

官方QQ群: 13763429

轩辕镜像
镜像详情
colinmollenhour/mariadb-galera-swarm
官方博客使用教程热门镜像工单支持
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。
轩辕镜像 - 国内开发者首选的专业 Docker 镜像下载加速服务平台 - 官方QQ群:13763429 👈点击免费获得技术支持。
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

mariadb-galera-swarm Docker 镜像下载 - 轩辕镜像

mariadb-galera-swarm 镜像详细信息和使用指南

mariadb-galera-swarm 镜像标签列表和版本信息

mariadb-galera-swarm 镜像拉取命令和加速下载

mariadb-galera-swarm 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

mariadb-galera-swarm
colinmollenhour/mariadb-galera-swarm
自动构建

mariadb-galera-swarm 镜像详细信息

mariadb-galera-swarm 镜像标签列表

mariadb-galera-swarm 镜像使用说明

mariadb-galera-swarm 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

基于官方MariaDB镜像构建的Galera集群Docker容器,支持DNS服务发现和自动恢复,可与Kubernetes、Docker Swarm、Kontena Classic等调度系统兼容,实现集群初始化和恢复的自动化管理。
37 收藏0 次下载activecolinmollenhour镜像
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源
中文简介版本下载
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源

mariadb-galera-swarm 镜像详细说明

mariadb-galera-swarm 使用指南

mariadb-galera-swarm 配置说明

mariadb-galera-swarm 官方文档

MariaDb Galera Cluster

该Docker容器基于官方Docker mariadb镜像构建,设计用于兼容自动调度系统,特别是Kubernetes、Docker Swarm Mode和Kontena Classic。通过指定正确的环境变量,它也可用于手动调度(docker run),或可能与使用类似约定的其他调度系统配合使用。

标签

建议仔细测试所有升级!切勿在生产环境中使用latest标签!

支持多个版本,偶尔会重新构建并使用版本号和构建日期进行标记,因此只需为您的主版本选择适合的最新构建版本,或构建自己的版本。使用新版本时,务必通过test.sh脚本测试复制功能!

工作原理

这不是简单的配置更新,而是投入了大量精力使该容器能够自动化集群的初始化和恢复。入口点脚本通过让节点在启动mysqld进程之前相互通信,确保集群正确恢复,从而在同时重置时协调完整恢复。它通过检查Galera的状态文件、恢复所有节点上的GTID位置,然后在节点之间通信以找到最新的节点(如需要)来形成新集群。它还提供多个不同健康程度的健康检查端点,以帮助集成负载均衡器和调度系统。

示例

  • Kubernetes
  • Docker Swarm
  • Kontena Classic

欢迎提交更多针对Mesos等的示例,以及对现有示例的改进!

通过使用DNS解析发现其他节点,无需显式指定节点,因此该容器应可与任何基于DNS的服务发现系统(如Kubernetes、Docker Swarm、Consul等)配合使用。

命令

入口点接受以下启动“模式”作为命令。其他参数将传递给mysqld命令行。例如,通常需要添加--log-bin=mysqld-bin以启用二进制日志。

seed

仅用于初始化新集群,初始化后且其他节点加入后,应停止“seed”容器,并使用相同卷替换为“node”容器。

node

加入现有集群。接受第二个参数,即逗号分隔的IP或主机名列表,用于构建--wsrep_cluster_address选项以加入集群。

“node”也可通过在数据卷中放置标志文件/var/lib/mysql/new-cluster,像“seed”一样引导集群。

no-galera

启动禁用Galera的服务器。适用于维护任务,如执行mysql_upgrade和重置root凭据。

重置root密码

例如,要重置root用户密码,在Galera容器停止后,可运行新的临时容器:

shell1 $ docker run --rm -v {卷名}:/var/lib/mysql --name no-galera-temp {镜像} no-galera --skip-grant-tables
shell2 $ docker exec -it no-galera-temp mysql -u root mysql
MariaDB> update user set password=password("您的新密码") where user='root' and host='127.0.0.1';
MariaDB> flush privileges;
MariaDB> quit
shell2 $ exit
shell1 $ <CTRL+C>

然后使用新的root密码启动Galera容器。

sleep

启动容器但不启动服务器。运行“sleep infinity”。适用于初始化卷或在服务器未运行时执行docker exec。

bash

打开bash shell而非启动容器。例如bash -c 'touch /var/lib/mysql/new-cluster',用于创建标志文件,指示下次启动时创建新集群。

环境变量

  • XTRABACKUP_PASSWORD(必填,除非提供XTRABACKUP_PASSWORD_FILE)
  • SYSTEM_PASSWORD(必填,或如果提供XTRABACKUP_PASSWORD,则设为其哈希值)
  • CLUSTER_NAME(可选)
  • NODE_ADDRESS(可选 - 默认为ethwe,然后是eth0)
  • LISTEN_WHEN_HEALTHY(可选)- 指定集群达到健康状态后打开健康检查套接字的端口号。适用于Kontena的wait_for_port功能。
  • HEALTHY_WHILE_BOOTING(可选)- 如果为'1',则HEALTHCHECK脚本在启动阶段(等待DNS解析和恢复wsrep位置)报告健康。
  • SKIP_TZINFO(可选)- 指定任何值以在初始化新目录时跳过时区表数据加载。
  • DEFAULT_TIME_ZONE(可选 - 默认为TZ环境变量,如未定义则为'+00:00')- 指定数据库时区,可为数字格式(+01:00)或文字格式(CET、Europe/Bratislava等)。后者仅在未指定SKIP_TZINFO时可用。有关需要此设置的原因,详见此处。
  • SST_METHOD(可选 - 10.2+默认为'mariabackup',10.1默认为'xtrabackup-v2')- 也可设为'rsync'或'mysqldump'。此镜像中不支持需要进一步配置或安装依赖的其他方法。
  • SKIP_UPGRADES(可选 - 阻止运行run-upgrades.sh脚本)

“seed”的附加变量:

  • MYSQL_ROOT_PASSWORD(可选)- 另见/var/lib/mysql/new-cluster标志文件。
  • MYSQL_ROOT_HOST(可选)- 未指定时默认为'127.0.0.1'。指定'%'允许从任何主机登录root。
  • MYSQL_ROOT_SOCKET_AUTH(可选)- 默认启用,指定0禁用。如果启用,引导时会创建'root'@'localhost',允许root通过unix套接字无密码登录!这使docker exec命令无需密码,同时仍要求网络登录需密码。
  • MYSQL_DATABASE(可选)
  • MYSQL_USER(可选)
  • MYSQL_PASSWORD(可选)

“node”的附加变量:

  • GCOMM_MINIMUM(可选 - 默认为2)

通过文件提供密钥

也可使用文件配置敏感变量,此方法用于Docker Swarm、Rancher等。密钥文件路径默认为/run/secrets/{小写变量名},但也可通过以下环境变量显式指定:

  • XTRABACKUP_PASSWORD_FILE
  • SYSTEM_PASSWORD_FILE
  • MYSQL_ROOT_PASSWORD_FILE
  • MYSQL_ROOT_HOST_FILE
  • MYSQL_PASSWORD_FILE
  • MYSQL_DATABASE_FILE

标志文件

为了在无需更改CMD(在自动调度器中有时难以操作)的情况下控制引导阶段,可在启动容器前创建以下文件以更改引导行为。所有文件应位于/var/lib/mysql目录(需将此目录挂载为容器卷)。

  • /var/lib/mysql/new-cluster - 使“node”容器在首次运行时表现为“seed”容器。也可用于无法形成主组件时的恢复,或代替“seed”容器引导新集群。如果文件有内容,将用作MYSQL_ROOT_PASSWORD。
  • /var/lib/mysql/hold-start - 使“node”容器等待此文件删除后再尝试启动。适用于缺乏细粒度调度控制的调度器。
  • /var/lib/mysql/force-cluster-bootstrapping - 强制再次创建MySQL用户(“seed”或“node”命令)。
  • /var/lib/mysql/skip-cluster-bootstrapping - 阻止创建MySQL用户。此文件会自动创建,正常情况下不应删除。
  • /var/lib/mysql/skip-upgrades - 阻止运行run-upgrades.sh脚本。

健康检查

默认情况下,后台运行两个基于HTTP的健康检查服务器。

  • 端口8080仅在准备好服务客户端时报告健康(已同步)。
  • 端口8081在服务器处于同步或***者/不同步状态时报告健康。此端口用于帮助其他节点在启动服务器前确定集群状态,也用于Dockerfile的HEALTHCHECK命令。

默认HEALTHCHECK命令在/var/lib/mysql/sst_in_progress存在时也返回健康状态,以避免节点在SST期间被终止。否则,它使用第二个健康检查(端口8081),仅在节点“已同步”时返回健康,以防止节点因长时间作为***者而被终止。健康检查命令的行为取决于您的使用场景,因此可能需要根据所需行为覆盖它。无论如何,两个健康检查服务器都会启动,除非被实际 ping,否则资源消耗可忽略不计。

此外,如果指定LISTEN_WHEN_HEALTHY端口号,容器将启动循环检查自身的8080端口健康检查,一旦报告健康,将在此端口打开新套接字,转发至8080端口。这可与Kontena的wait_for_port功能配合使用,以适应滚动更新机制。

升级

通常,由于MariaDb并非特别稳定的服务器, minor版本号常引入回归或向后兼容性问题,因此始终建议在生产环境中使用特定标签,并先在 staging 环境测试升级。还建议阅读提交日志以了解变更。不提供任何保证,使用风险自负!

从10.1升级到10.2

升级前,需授予xtrabackup用户PROCESS权限:

mysql> GRANT PROCESS ON *.* TO 'xtrabackup'@'localhost';

运行测试

test.sh脚本是使用docker run启动seed和node容器的简单脚本。它在后台启动seed,将seed日志输出到控制台,然后在前台启动node。测试成功与否应通过检查日志确定,还应执行启动额外节点、终止一个或多个节点等操作,以验证恢复功能是否正常。

示例

make test-10.4

或为10.4构建并运行自己的镜像,启动单个seed和node:

$ docker build . -f Dockerfile-10.4 -t galera-test-10.4
$ ./test.sh galera-test-10.4

在另一个控制台,验证集群状态和大小:

$ docker exec -it cm-galera-test-node mysql -be "show status like 'wsrep_cluster_s%';"
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_cluster_size         | 2                                    |
| wsrep_cluster_state_uuid   | e54090dc-f892-11ec-ad6f-f2704a681293 |
| wsrep_cluster_status       | Primary                              |
+----------------------------+--------------------------------------+

更多信息

  • 尝试处理尽可能多的恢复场景,包括集群同时重置的完全恢复,方法是使用--wsrep-recovery检查Galera状态文件,恢复所有节点的GTID位置,然后在节点间通信以找到最新节点(如需要)形成新集群。
  • 如果需要手动恢复先前健康的集群,可使用“node”模式,但创建文件/var/lib/mysql/new-cluster以强制节点引导新集群并绕过自动恢复步骤。
  • XtraBackup用于状态传输,MariaDb现在支持pc.recovery,因此在所有节点正常关闭的情况下,主组件应自动恢复。重要的是所有节点一起启动,以便它们可以相互通信状态。
  • 容器内运行go服务器,公开HTTP服务用于智能健康检查:
    • 端口8080用于Docker 1.12 HEALTHCHECK功能,也可被网络中的其他健康检查节点(如HAProxy或Consul)用于确定可读/可写节点。
    • 端口8081用于确定集群状态。
  • 如果容器网络不使用ethwe*或eth0,则需将NODE_ADDRESS指定为要监听的接口名称或匹配容器IP地址的grep模式。例如:NODE_ADDRESS='^10.0.1.*'。
  • 使用DNS进行节点地址发现时,容器入口脚本将无限期等待GCOMM_MINIMUM个IP解析,然后尝试启动mysqld,以防某些容器启动较慢,增加健康恢复的机会。可能无法解析足够IP的场景包括:
    • 某些节点可能比其他节点更快从远程仓库拉取容器镜像
    • 调度器可能未足够快地启动节点
    • 服务发现系统可能通过DNS传播更新较慢
  • 如果文件/usr/local/lib/startup.sh存在,将在start.sh脚本中被source。
  • 如果需要将运行中的节点提升为新“主组件”,可运行以下命令:
    • $ docker exec -i <容器> mysql -p /primary-component.sql
  • 通过将wsrep_notify_cmd设为/usr/local/bin/notify.sh,可更清晰地监控集群状态变化,该脚本会将更新输出到Docker日志/控制台。

credits

  • 分叉自"jakolehm/docker-galera-mariadb-10.0"
    • 分叉自"sttts/docker-galera-mariadb-10.0"
  • galera-healthcheck go二进制文件来自"sttts/galera-healthcheck"
查看更多 mariadb-galera-swarm 相关镜像 →

常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 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 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

轩辕镜像下载加速使用手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

🔐

登录方式进行 Docker 镜像下载加速教程

通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤

🐧

Linux Docker 镜像下载加速教程

在 Linux 系统上配置轩辕镜像源,支持主流发行版

🖥️

Windows/Mac Docker 镜像下载加速教程

在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统

📦

Docker Compose 镜像下载加速教程

在 Docker Compose 中使用轩辕镜像加速,支持容器编排

📋

K8s containerd 镜像下载加速教程

在 k8s 中配置 containerd 使用轩辕镜像加速

🔧

宝塔面板 Docker 镜像下载加速教程

在宝塔面板中配置轩辕镜像加速,提升服务器管理效率

💾

群晖 NAS Docker 镜像下载加速教程

在 Synology 群晖NAS系统中配置轩辕镜像加速

🐂

飞牛fnOS Docker 镜像下载加速教程

在飞牛fnOS系统中配置轩辕镜像加速

📱

极空间 NAS Docker 镜像下载加速教程

在极空间NAS中配置轩辕镜像加速

⚡

爱快路由 ikuai Docker 镜像下载加速教程

在爱快ikuai系统中配置轩辕镜像加速

🔗

绿联 NAS Docker 镜像下载加速教程

在绿联NAS系统中配置轩辕镜像加速

🌐

威联通 NAS Docker 镜像下载加速教程

在威联通NAS系统中配置轩辕镜像加速

📦

Podman Docker 镜像下载加速教程

在 Podman 中配置轩辕镜像加速,支持多系统

📚

ghcr、Quay、nvcr、k8s、gcr 等仓库下载镜像加速教程

配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤

🚀

专属域名方式进行 Docker 镜像下载加速教程

无需登录即可使用轩辕镜像加速服务,更加便捷高效

需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429

商务:17300950906
|©2024-2025 源码跳动
商务合作电话:17300950906|Copyright © 2024-2025 杭州源码跳动科技有限公司. All rights reserved.