【问题标题】:MariaDB Server vs MariaDB Galera Cluster HA ReplicationMariaDB 服务器与 MariaDB Galera 集群 HA 复制
【发布时间】:2021-05-12 17:57:03
【问题描述】:

我打算在我的 kubernetes 集群上部署 HA 数据库集群。我是数据库新手,对各种数据库术语感到困惑。我决定使用 MariaDB,我找到了两个图表,MariaDBMariaDB Galera Cluster

我知道两者都可以实现相同的目标,但是两者之间的主要区别是什么?在什么情况下我应该使用 or?

提前致谢!

【问题讨论】:

    标签: kubernetes mariadb kubernetes-helm high-availability bitnami


    【解决方案1】:

    我不是专家,所以请谨慎对待我的解释(并仔细检查)

    MariaDB 的 Chart 和 MariaDB Galera Cluster 的 Chart 的主要区别在于,第一个将部署标准的主从(或主从)数据库,而第二个是弹性主主(或主-主)数据库集群。

    更详细的含义如下:

    MariaDB Chart 将部署一个 Master StatefulSet 和一个 Slave StatefulSet,它们将生成(使用默认值)一个 master Pod 和 2 个 slave Pod .一旦您的数据库启动并运行,您就可以连接到主服务器并写入或读取数据,然后将这些数据复制到从服务器上,这样您就可以获得数据的安全副本。

    副本可用于读取数据,但只有主 Pod 才能在数据库中写入新数据。如果 Pod 崩溃.. 或运行 Pod 的 Kubernetes 集群节点出现故障,您将无法写入新数据,直到 master 的 Pod 再次启动并运行(这可能需要手动干预).. 或者如果您执行故障转移,将其他 Pod 提升为新的临时主节点(这也需要手动干预或使用代理或虚拟 ip 等进行一些设置)。

    Galera Cluster Chart 将部署更具弹性的东西。使用默认值,它将创建一个具有 3 个 Pod 的单个 StatefulSet。每个 Pod 都可以读取和写入数据,几乎充当主节点。

    这意味着如果其中一个 Pod 因某种原因停止工作,另外两个将继续为数据库提供服务,就好像什么都没发生一样,从而使整个事情变得更有弹性。当 Pod(停止工作)重新启动并运行时,它将从其他 Pod 获取新的/不同的数据,并保持同步。

    为了换取整个基础架构的弹性(如果 Galera Cluster 解决方案能够提供极好的弹性而没有缺点,那就太容易了),多主机应用程序有一些缺点,增加了更多的共同点操作中的延迟,需要保持一切同步和一致..以及增加的复杂性,这通常可能会让人头疼。

    Galera Cluster 还有其他一些限制,例如表的显式锁定不起作用或所有表都必须声明主键。您可以在此处找到完整列表 (https://mariadb.com/kb/en/mariadb-galera-cluster-known-limitations/)

    在两种解决方案之间做出决定主要取决于以下问题:

    • 如果您的 Kubernetes 集群节点之一发生故障,您是否有必要让数据库继续工作(并且可供您的应用程序使用),就像什么都没发生一样,即使它的一个 Pod 正在该特定节点上运行?李>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2018-05-15
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      相关资源
      最近更新 更多