使用 Galera Cluster 代替 Master/Slave Replication 有什么缺点?

Sam*_*Sam 14 mysql replication mariadb xtradb-cluster galera

使用 Galera Cluster 而不是常规的 Master/Slave Replication 有什么缺点?Galera 的 0 从延迟时间、同步复制和无单点故障看起来很吸引人,那为什么 Galera 集群不常见呢?

Bil*_*win 17

因为与任何其他优化一样,它并不适合所有工作负载。

Galera 可能会因高交易率或交易更新多行而不堪重负。它还可以使您的应用程序在集群同步时遇到 COMMIT 延迟。

Galera 也不同步更新其他节点。它只是同步传输工作集。这样,有点像半同步模式下的标准复制。因此,从另一个集群节点读取陈旧数据的可能性仍然很小。您可以设置一个选项来强制 SELECT 等待工作集队列更新数据库,但这意味着您在 SELECT 上有延迟。甚至有可能在 SELECT 上陷入僵局,这似乎违反直觉。

Galera 非常出色,但并非一刀切的技术。仍然有充分的理由使用异步复制。

  • 另一个缺点是有一个捐赠节点,用于复制(通过 xtrabackup、rsync、mysqldump)到引入集群的任何节点,让集群中的其余节点完成繁重的工作,直到新节点同步。对于中小型数据库来说,这不是一个缺点。 (3认同)
  • @jynus,问题不在于 *donor* 节点上的锁定,而是 *receiving* 节点处于脱机状态,并且在 SST 正在进行时无法进行任何查询。因此,如果您使用集群进行查询负载平衡,则必须将发送到接收节点的查询发送到其他节点,直到完成 SST。 (3认同)
  • 如果其他人正在查看,Bill 所指的选项是 `wsrep_causal_reads`... 设置为 ON 并使用 `SET GLOBAL wsrep_causal_reads = 'ON';` 使选择等待所有写入集完成。 (2认同)