【问题标题】:Starting all nodes in galera at once一次启动 galera 中的所有节点
【发布时间】:2017-06-09 06:45:42
【问题描述】:

我有一个由三个节点组成的 galera 集群,如果我关闭三个虚拟机并同时启动它们,systemd 将自动在每个虚拟机上启动 mariadb。

有时会发生所有 mariadb 实例同时启动的情况,这是集群损坏的结果。

我必须使用 galera_new_cluster 重新启动

问题是,为什么一次启动所有 mariadb 实例会破坏集群?

谢谢

【问题讨论】:

    标签: mariadb galera


    【解决方案1】:

    每当您启动一个节点时,它要么作为集群中的第一个节点启动(启动一个新集群),要么尝试使用wsrep_cluster_address 连接到现有节点。行为取决于节点选项。

    因此,每次关闭或丢失所有节点并重新启动它们时,都没有可连接的内容,您需要启动一个 new 集群。 galera_new_cluster 通过使用 --wsrep-new-cluster 选项启动一个节点来实现这一点,该选项会覆盖 wsrep_cluster_address 的当前值。

    如果有时它会自动为您工作,则很可能意味着您的一个节点通过wsrep_cluster_address=gcomm://wsrep-new-cluster 永久配置为“第一个节点”。这本身就是一个错误的设置。如果您丢失或关闭了仅此节点并且必须重新启动它,它不会加入集群中的其余节点,而是会创建一个新节点。

    当您一次启动所有节点时,您创建了一个竞争条件。如果您的“第一个节点”首先出现并足够快地初始化,它将创建一个新集群,其他节点将加入它。如果另一个节点先出现,它将无法加入任何东西,因此您会得到一个“破碎的集群”。

    您可以在此处找到有关重新启动整个集群的更多信息: http://galeracluster.com/documentation-webpages/restartingcluster.html

    【讨论】:

      【解决方案2】:

      引导集群的推荐方法是先启动一个高级节点,然后是第二个和第三个节点,因此您需要检查所有节点的 lsn no 或检查 grastate.date 文件,您可以在其中检查所有节点的值。

      所以按照这些步骤你的集群节点不会崩溃

      【讨论】:

      • 因为 galera 集群机制是,如果您启动 Galera 集群,那么第一个节点应该以 bootstrap 启动(systemctl start mysql --wsrep-new-cluster)但是在您的情况下所有节点都正常启动(systemctl启动 mysql )所以当第一个节点启动时,它猜测我不是引导节点,需要检查是否有任何供体节点可用于同步,但没有找到。节点的其余部分也会发生同样的事情。他们没有找到和捐助者节点。这是您的集群失败的主要原因。
      猜你喜欢
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2018-05-27
      • 2021-11-24
      • 2019-03-05
      相关资源
      最近更新 更多