• MySQL-Galera集群笔记


    什么是Galera群集?

    Galera Cluster是可写库复制形式的写集复制服务提供程序。 它提供同步复制并支持多主复制。Galera Cluster能够无限制地并行应用(即“并行复制”),多播复制和自动节点供应。
    Galera Cluster的主要重点是数据一致性。事务要么应用于每个节点,要么根本不生效。Galera Cluster不是群集管理器、负载平衡器或群集监视器。它的作用是使数据库保持同步。当然,前提是它们在一开始就已正确配置和同步。

    为什么要使用Galera Cluster而不是Basic MySQL Replication?

    Galera Cluster使用多主复制方法:它允许您写入集群中的任何节点,且任何节点上的写入都将同步到所有节点。标准的MySQL复制使用单主多从模式:尽管您可以从任何节点读取数据,但是只能在主节点上进行写入。
    使用Galera和多主复制,任何写操作都可以提交给群集中的所有节点,也可以回滚。使用标准的MySQL主从复制,可能无法将对主服务器的写入同步到一个或多个从服务器,但用户可以继续从不同步的从服务器读取数据。
    使用Galera,如果一个主服务器发生故障,群集将继续运行,并且用户可以继续在其他节点上进行写入和读取。使用标准的MySQL复制,如果主服务器失败,则用户无法进行写入,直到将其还原或更换为止--这可能需要人工干预,并需要花费大量时间。

    如果我现在使用的是MySQL标准复制,是否可以轻松切换到Galera?

    这可能非常容易。但还是需要考虑一些事项,您可能需要进行更改。
    首先,您必须将所有表迁移到InnoDB。尽管MySQL和MariaDB提供了多个存储引擎,但Galera仅允许InnoDB表。您还必须解决更改为InnoDB将如何影响您的应用程序的问题。
    接下来,您还应该将每个服务器迁移到相同版本的MySQL或MariaDB,以及最新版本。这可能会影响表的架构以及数据和应用程序。
    最后,您可能需要对硬件进行一些更改。对于一台,如果只有两台服务器,则应添加第三台。尽管没有必要,但建议所有使用的服务器在资源上相同。
    基本上,如果您已经在使用最新的数据库软件并且仅使用InnoDB表,那么实施Galera将会非常容易。否则,实施Galera将需要一些思想和精力。但是,我们将获得更好的群集:所有服务器都将相同,以便于维护和性能。他们将运行最新的软件,这将提供优势;数据将得到更好的保护,并具有高可用性。

    如何升级集群?

    对于数据库服务器本身或Galera复制插件,将定期向Galera Cluster提供更新。要更新某个节点的软件,您需要将客户端连接重定向到远离该节点的位置,然后停止该节点。然后升级节点的软件。完成后,只需重新启动节点即可。
    有关升级过程的更多信息,请参阅升级Galera群集

    Galera平衡负载吗?

    对于高流量的群集,为防止一个节点被读写查询所淹没,您可能需要使用负载平衡器。Galera Cluster不包含此功能。但是,我们可以使用MariaDB的MaxScale,ProxySQL或其他类似的负载平衡器。
    MaxScale是一种数据库代理,可以扩展数据库服务器和集群的高可用性,可伸缩性和安全性。通过将应用程序与基础数据库基础架构分离,它还简化了应用程序开发。它将与MariaDB和MySQL一起使用。

    如何管理故障转移?

    Galera Cluster是真正的同步多主复制系统,它允许随时将任何或所有节点用作主节点,而无需任何额外的配置。这意味着在传统的MySQL主从意义上没有故障转移。
    Galera Cluster的主要重点是跨节点的数据一致性。这不允许对数据库进行任何可能损害一致性的修改。例如,该节点拒绝写入请求,直到加入节点与集群同步并准备处理请求为止。
    这样的结果是,您可以安全地使用自己喜欢的方法在节点之间分配或迁移连接,而不会引起不一致的风险。
    有关连接分配的更多信息,请参见部署变式

    如何备份数据库

    在Galera群集中进行数据库备份非常容易。一种简单的方法是从群集中删除一个节点,而无需关闭mysqld守护程序。从那里,您可以mysqldump用来进行逻辑备份,或者您喜欢的任何备份软件。它对群集的整体性能几乎没有影响。完成后,只需将节点重新连接到集群即可。其他节点将迅速提供与集群异步所需的功能。有关mysqldump与Galera一起使用的更多信息,请参见mysqldump
    但是,这种简单备份方法的问题在于它缺少全局事务ID(GTID)。您可以使用这种备份来恢复数据,但是它们不足以将节点恢复到定义良好的状态。另外,某些备份过程可能会在备份期间阻止群集操作。
    将GTID包含在备份中需要使用不同的方法。为此,您可以通过状态快照传输机制调用备份。有关此方法的更多信息,请参见备份群集数据

    GCache是二进制日志吗?

    Write-set Cache,也叫GCache,是用于写集的内存分配器。 其主要目的是最大程度地减少RAM中的写集占用空间。 它不是事件日志,而是缓存。

    • GCache不是持久性的。
    • 并非GCache中的每个条目都是写集。
    • 并非将提交GCache中的每个写集。
    • GCache中的写集未按提交顺序分配。
    • 写集不是binlog的最佳条目,因为它们包含额外的信息。
      但是,可以从写集缓存中构造出二进制日志。

    应该使用Galera启用二进制日志吗?

    标准MySQL复制使用二进制日志进行复制。但是,Galera不使用二进制日志。但是,在某些情况下,您可能希望使用时间点恢复方法来还原自上次备份以来的表或数据。
    您可能还希望使用标准MySQL复制将异步从属服务器附加到您的节点之一,并将其设置为延迟。这也有助于恢复自上次备份以来丢失的表和数据。

    通常是什么导致群集停止?

    尽管这种情况并不经常发生,但是有几个原因会导致Galera集群崩溃。以下是它们的列表,按原因类型分组:

    1. 物理服务器及相关原因
      • 节点的磁盘空间不足;
      • 操作系统正在交换或具有较高的I / O等待
      • 存储引擎原因
    2. InnoDB存储引擎崩溃;
      • 使用仍在实验中的MyISAM表;
      • 创建或删除没有主键的表
      • 配置问题
    3. MySQL配置文件中对参数的不兼容更改;
      • 将binlog_format设置为仅MIXED,而不是ROW。仅支持ROW格式。
    4. Galera常规错误
      • 写入相同的行集时,在重负载期间过多的死锁;
      • 主要组成部分缺失。
      • 群集超出法定人数;
      • Galera软件的错误

    Galera的局限性是什么?

    当对数据库使用MySQL或MariaDB时,Galera Cluster是一个出色的复制系统。但是,它确实有一些限制,您可能需要在迁移到该限制之前知道这些限制。
    首先,它只能在Linux和类似Unix的操作系统上运行。没有Windows版本。在数据库服务器中,除了使用MyISAM的系统表以外,仅允许使用InnoDB表。之所以使用InnoDB,是因为它是出色的事务存储引擎。所有表都必须具有显式主键,即单列索引或多列索引。
    有关限制的更多详细信息,请参见与独立MySQL服务器的区别

    最慢的节点会影响其他节点的性能吗?

    与Galera Cluster复制集成在一起,集群将等待集群中的所有节点返回认证测试的状态,然后再提交事务或将它们回滚。因此,一个被流量淹没的节点将延迟该节点对集群的答复,并延迟其他节点等待其报告的时间。
    为了缓解此问题,您将确保所有服务器在物理上都是相同的(即,RAM的数量,网络接口的类型),或者至少具有相同数量的可用资源。您还可以使用负载均衡器(例如MariaDB MaxScale,ProxySQL)来确保一个节点不会因通信量而过载。

    原文档:https://galeracluster.com/library/faq.html

  • 相关阅读:
    第十周进度条
    冲刺阶段第十天
    冲刺阶段第九天
    冲刺阶段第八天
    冲刺阶段第七天
    冲刺阶段第六天
    第一次冲刺阶段(十一)
    第一次冲刺阶段(十)
    第一次冲刺阶段(九)
    第一次冲刺阶段(八)
  • 原文地址:https://www.cnblogs.com/hyry/p/14547328.html
Copyright © 2020-2023  润新知