pat*_*tie 5 mysql clustering physical-design xtradb-cluster galera
我目前正在考虑建立一个数据库集群(MySQL Galera 或 Percona),但我只有 2 台机器。
但是,根据我读过的许多来源(这篇来自 Mariadb KB 的文章),集群中的最小节点大小应为 3,以避免出现裂脑情况。
为了避免裂脑情况,集群中推荐的最小节点数为3。阻止状态转移是需要至少3 个节点才能在其中一个成员发生故障并需要重新启动时享受服务可用性的另一个原因。虽然其中两名成员将从事状态转移,但其余成员将能够继续为客户请求提供服务。
所以我想知道我是否可以在两台机器上运行 3 个(或更多)docker 容器,每个容器都运行一个数据库服务器。如果其中一台机器出现故障,集群中仍然有 3 个节点,因此不会出现裂脑问题。
感觉像是作弊,但我想不出不这样做的理由。
这个设置有意义吗?
Galera(对于 MySQL、Percona XtraDB Cluster 或 MariaDB Cluster,它们本质上是相同的,但来自不同的供应商和基础 mysql 版本)可以在 2 台机器上完美工作,这是替代标准 MySQL 复制的非常常见的设置。
需要 3 个节点并不是 Galera 的要求,而是任何关心数据一致性而不是可用性的集群的要求。换句话说,为了在只有一个节点遭受网络分区(导致集群上出现“脑裂”)的情况下提供可用性和数据完整性,需要它。我们需要奇数个节点,并且 1 个节点不是一个集群:-)。您可能知道这一点,但我想为任何阅读此答案的人澄清这一点。
鉴于拥有 3 个节点的唯一原因是为了在节点故障/网络故障时保持可用性,设置具有网络分割保护的 2 节点集群的推荐方法是设置Galera 仲裁器,它本质上是 MySQL 节点的模拟,但不存储任何本地数据。您可以将其安装在任何地方,但必须小心,因为如果存在网络延迟问题,仍然可能会影响集群的性能。
在同一个物理节点上运行多个实例是没有用的(不需要docker,顺便说一句,你只需更改本地配置即可做到这一点),就好像你绝对只能在2台机器上运行东西一样,你最好禁用自动关闭在其中一个节点上并手动管理故障转移。3.限制只是为了数据一致性,没有任何物理或协议上的要求一定数量的节点。
您可以在官方文档中阅读有关它的更多信息。
归档时间: |
|
查看次数: |
3568 次 |
最近记录: |