当前位置: 首页 > 知识库问答 >
问题:

无法创建MariaDB Galera群集

白志勇
2023-03-14

我基于mariadb:10.1构建了一个映像,它基本上添加了一个新的cluster.conf,但是在第一个节点成功开始工作后,在第二个节点上遇到了以下错误。谁能帮我在这里调试一下吗?

2016-09-28 10:12:55 139799503415232 [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)
     at gcomm/src/pc.cpp:connect():162
2016-09-28 10:12:55 139799503415232 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():208: Failed to open backend connection: -110 (Connection timed out)
2016-09-28 10:12:55 139799503415232 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1380: Failed to open channel 'test_cluster' at 'gcomm://172.17.0.2,172.17.0.3,172.17.0.4': -110 (Connection timed out)
2016-09-28 10:12:55 139799503415232 [ERROR] WSREP: gcs connect failed: Connection timed out
2016-09-28 10:12:55 139799503415232 [ERROR] WSREP: wsrep::connect(gcomm://172.17.0.2,172.17.0.3,172.17.0.4) failed: 7
2016-09-28 10:12:55 139799503415232 [ERROR] Aborting

MySQL init process failed.
  1. 为了确保容器之间的网络正常工作,尝试创建另一个可以登录到第一个容器的mysql实例的容器。
  2. 这绝对与mysql_host
  3. 无关
  4. 为了查看容器是否内存不足,我使用Docker stats并看到失败的容器在整个生命周期中只使用了142MB,直到失败,这比允许的总内存(~4GB)要小得多。
  5. 我使用Docker for Mac,但尝试在CentOS VirtualBox上运行相同的操作,得到了相同的结果。看起来Mac上的Docker没有问题。
[mysqld]
user=mysql
binlog_format=ROW
bind-address=0.0.0.0
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
innodb_file_per_table=1
innodb_doublewrite=1
query_cache_size=0
query_cache_type=0
wsrep_on=ON
wsrep_provider=/usr/lib/libgalera_smm.so
wsrep_sst_method=rsync
# bootstrap node
docker run --rm -e MYSQL_ROOT_PASSWORD=123 \ 
  activatedgeek/mariadb:devel \
    --wsrep-cluster-name=test_cluster \
    --wsrep-cluster-address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4 \
    --wsrep-new-cluster

# add node into cluster
docker run --rm -e MYSQL_ROOT_PASSWORD=123 \ 
  activatedgeek/mariadb:devel \
    --wsrep-cluster-name=test_cluster \
    --wsrep-cluster-address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4

# add node into cluster
docker run --rm -e MYSQL_ROOT_PASSWORD=123 \ 
  activatedgeek/mariadb:devel \
    --wsrep-cluster-name=test_cluster \
    --wsrep-cluster-address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4

共有1个答案

拓拔德馨
2023-03-14

此问题是由于挂起init进程引起的。上面的配置和CLI参数是正确的。在启动init进程之前,唯一要做的就是在数据目录中创建并清空mysql目录(默认情况下/var/lib/mysql)。只能在除引导节点以外的所有节点上创建。

mkdir -p /var/lib/mysql/mysql

有关用法,请参见示例MariaDB集群,该集群使用自定义MariaDB映像,是创建集群的概念证明。

 类似资料:
  • 在(群信息)中,首先需创建要收发信息的对象群。 若要使用此功能,需使用PS Vita注册PlayStation®Network。 若要发送信息,需要对方的在线ID。在线ID是于注册PlayStation®Network时创建的。发送信息前,请事先询问对方的在线ID。 一个信息最多可同时发送给16人。亦可仅发送给1人。 可与使用PS3™的对象收发信息。来自PS3™的信息会显示「从PS3™发送。」。

  • OrientDB中的集群是一个重要的概念,用于存储记录,文档或顶点。 简而言之,群集是存储一组记录的地方。 默认情况下,OrientDB将为每个类创建一个群集。 一个类的所有记录都存储在同一个簇中,它与该类名称相同。最多可以在数据库中创建个群集。 是用于创建具有特定名称的集群的命令。 创建群集后,可以使用群集通过在创建任何数据模型期间指定名称来保存记录。 如果要将新群集添加到类中,请使用命令和命令

  • 创建 Swarm 集群 阅读 基本概念 一节我们知道 Swarm 集群由 管理节点 和 工作节点 组成。本节我们来创建一个包含一个管理节点和两个工作节点的最小 Swarm 集群。 初始化集群 在 Docker Machine 一节中我们了解到 Docker Machine 可以在数秒内创建一个虚拟的 Docker 主机,下面我们使用它来创建三个 Docker 主机,并加入到集群中。 我们首先创建一

  • 使用 ceph-deploy 的第一步就是新建一个集群,新集群具备: 一个 Ceph 配置文件,以及 一个监视器密钥环。 Ceph 配置文件至少要包含: 它自己的文件系统 ID ( fsid ) 最初的监视器(们)及其主机名(们),以及 最初的监视器及其 IP 地址。 详情见监视器配置参考。 ceph-deploy 工具也创建了一个监视器密钥环并置于 [mon.] 内,详情见 Cephx 手册。

  • 全球四套部署区域: 区域 地址 endpoint 金山云北京6区 https://cnbj6.cloud.mi.com http://cnbj2.emr.api.xiaomi.com AWS新加坡 https://sg.cloud.mi.com http://awssgp0.emr.api.xiaomi.com AWS俄勒冈 https://us.cloud.mi.com http://awsus

  • 在过去的几个星期里,我使用下面的gCloud命令成功地创建了dataproc集群: gcloud dataproc--区域us-east1群集创建测试1--子网默认值--区域us-east1-c--主机类型n1-standard-4--主机启动磁盘大小250--工作机数量10--工作机类型n1-standard-4--工作机启动磁盘大小200--工作机本地SSD数量1--映像版本1.2--作用域h