mysql - 一个节点死亡后,3 节点 Galera 集群的定义行为是什么?

标签 mysql mariadb database-cluster galera

我一直在阅读 Galera 集群的文档:http://galeracluster.com/documentation-webpages/genindex.html

我一直看到建议(或者,在某些地方,明确限制)最小集群为 3 个节点。

我的问题是,一个节点出现故障后最小集群会发生什么。

  • 集群是否会将状态更改为不可用?
  • 剩下的 2 个节点还会复制吗?
  • 是否仍会自动处理添加新节点?

最佳答案

这取决于节点如何离开集群。以下情况假设一个三节点集群,其中一个节点离开,所有节点通过以太网交换机连接。

如果一个节点由于服务重新启动或复制问题而正常关闭,那么集群将变成一个双节点集群,不会发生什么大事。集群将继续正常运行,如果离开的服务器没有处理任何查询,则不会中断运行。

如果节点由于网络问题而丢失或以其他方式离开而不通知集群的其余部分,则可能会出现问题。为了使集群正常运行,它需要一个法定人数,即集群中活跃的大多数节点。其他两个节点将继续正常运行,因为它们的分区有超过一半的已知节点,但离开的节点在意识到它不再与事件分区联系时将停止接受查询。在这种情况下,假设应用程序可以访问两个事件节点,则故障几乎不会被注意到。

建议最少使用三台服务器的主要原因是为了增加在出现网络问题时存在仲裁的可能性。如果集群有两个节点(或更一般地任何偶数个节点),单个网络链接故障可能会导致集群暂停,因为它可能会创建两个分区,其中一半的节点都没有法定人数。奇数个节点意味着单个网络链接故障不会导致集群暂停,因为总会有法定人数。但是,如果存在不止一个网络链路故障,事情会变得更加复杂,但只有具有法定人数的分区才能正常运行。

如果节点尝试连接到集群中的事件分区,它将正常加入。如果它只能连接到非事件分区,它将在尝试联系事件分区时等待一段可配置的时间。

更多信息请访问 http://galeracluster.com/documentation-webpages/recovery.html .

关于mysql - 一个节点死亡后,3 节点 Galera 集群的定义行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23236871/

相关文章:

php - 使用 PHP/MySQL/Ajax 的队列表

mysql - 如何将Common table expression查询的Row_number转换为Mysql

mysql - 获取 MySQL/MariaDB 关系表中给定父节点的所有子节点(及其子节点)

mysql - 在 MariaDB v. 10.1.xx 中将 VARCHAR 数据转换为 DATE

spring-boot - 使用生成的 JOOQ 代码针对多种数据库类型

mysql - Galera Cluster 为断开连接的节点启用了数据库写入

mysql - MySQL 中的数据库表分区

php - 处理和匹配大量数据

Redis 预 GET 事件

php - 在一个php文件中连接MySQL并在另一个php文件中使用它