gpt4 book ai didi

database - 什么时候首选主从,什么时候集群?

转载 作者:太空狗 更新时间:2023-10-30 01:51:06 26 4
gpt4 key购买 nike

我知道有很多关于数据库复制的文章。相信我,我花了一些时间阅读这些文章,包括 this SO 解释了复制的优缺点。 This SO 文章分别深入介绍了复制和集群,但没有回答我遇到的这些简单问题:

  1. 什么时候复制数据库,什么时候集群?
  2. 两者可以同时进行吗?如果是,每个人的灵感是什么?

提前致谢。

最佳答案

MySQL 目前支持两种不同的解决方案来创建高可用性环境和实现多服务器可扩展性。

MySQL 复制

第一种形式是复制,MySQL从3.23版开始支持复制。 MySQL 中的复制目前是作为使用逻辑日志传送后端的异步主从设置实现的。

主从设置意味着指定一台服务器作为主服务器。然后需要接收所有写查询。然后主服务器执行并记录查询,然后将查询发送到从服务器执行,从而在所有复制成员之间保持相同的数据。

复制是异步的,这意味着当主服务器执行更改时,从服务器不能保证拥有数据。通常,复制将尽可能实时。但是,无法保证更改传播到从站所需的时间。

可以出于多种原因使用复制。一些更常见的原因包括可扩展性、服务器故障转移和备份解决方案。

可以实现可扩展性,因为您现在可以跨任何从属服务器执行 SELECT 查询。然而,由于写入必须发生在每个复制成员上这一事实,写入语句通常不会得到改进。

使用心跳或类似机制来检测主服务器故障的外部监控实用程序可以相当容易地实现故障转移。 MySQL 当前不执行自动故障转移,因为逻辑通常非常依赖于应用程序。请记住,由于复制是异步的,因此并非所有在主服务器上完成的更改都可能传播到从服务器。

即使在较慢的连接和不连续的连接中,MySQL 复制也能很好地工作。它还能够跨不同的硬件和软件平台使用。大多数存储引擎都可以使用复制,包括 MyISAM 和 InnoDB。

MySQL 集群

MySQL Cluster 是一个无共享的分布式分区系统,它使用同步复制来保持高可用性和性能。

MySQL Cluster 是通过一个名为 NDB Cluster 的独立存储引擎实现的。该存储引擎将自动跨多个数据节点对数据进行分区。数据的自动分区允许并行化执行的查询。读取和写入都可以以这种方式扩展,因为写入可以分布在许多节点上。

在内部,MySQL Cluster 也使用同步复制来消除系统中的任何单点故障。由于始终保证有两个或多个节点具有数据片段,因此至少一个节点可以发生故障而不会对正在运行的事务产生任何影响。故障检测是自动处理的,死节点被删除,对应用程序是透明的。节点重启后,会自动重新融入集群,并尽快开始处理请求。

在决定 MySQL Cluster 是否是适合您的情况的正确解决方案时,必须牢记当前存在的许多限制。

目前MySQL集群中存储的所有数据和索引都存储在整个集群的主内存中。这确实会根据集群中使用的系统限制数据库的大小。

MySQL 集群设计用于内部网络,因为延迟对于响应时间非常重要。

因此,不可能在很远的地理距离上运行单个集群。此外,虽然 MySQL Cluster 将在商业网络设置上运行,但为了获得最高性能,可以使用特殊的集群互连。

关于database - 什么时候首选主从,什么时候集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38036955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com