Master-master与主从数据库架构?

nev*_*ame 104 database

我听说过两种数据库架构.

  • 主 - 主

  • 主从

是不是主人更适合今天的网络,因为它就像Git,每个单位都有整套数据,如果一个人失败,那就没关系了.

主从让我想起SVN(我不喜欢),你有一个处理东西的中央单元.

问题:

  1. 各自的优点和缺点是什么?

  2. 如果你想在iPhone手机上有一个本地数据库,哪一个更合适?

  3. 选择其中一个是彻底考虑的关键因素吗?

Ski*_*hie 82

同时研究各种数据库架构.我编写了一些可能与其他人研究相关的信息.我碰到

  1. 主从复制
  2. 主 - 主复制
  3. MySQL集群

我决定在我的用例中使用MySQL Cluster.但请参阅下文,了解我编写的各种优缺点

1.主从复制

优点

  • 分析应用程序可以从从属设备读取而不会影响主设备
  • 整个数据库的备份对master的影响相对较小
  • 从站可以脱机并同步回主站,无需停机

缺点

  • 在失败的情况下,必须将奴隶提升为主人以接管其位置.没有自动故障转移
  • 主机发生故障时的停机时间和可能的数据丢失
  • 所有写入也必须在主从设计中对主设备进行
  • 由于必须读取二进制日志并将数据复制到每个从站,因此每个附加从站都会向主站添加一些负载
  • 应用程序可能必须重新启动

2.主 - 主复制

优点

  • 应用程序可以从两个主人处读取
  • 在两个主节点之间分配写入负载
  • 简单,自动和快速的故障转移

缺点

  • 松散一致
  • 不像主从配置和部署那么简单

3. MySQL Cluster

基于MySQL集群设计的小镇新人.MySQL集群的开发考虑了高可用性和可扩展性,是用于不需要停机,高可用性和水平可扩展性的环境的理想解决方案.

有关更多信息,请参阅MySQL Cluster 101

优点

  • (高可用性)没有单点故障
  • 吞吐量非常高
  • 正常运行时间为99.99%
  • 自动分片
  • 实时响应
  • 在线操作(架构更改等)
  • 分布式写入

缺点

您可以访问我的博客完整细分,包括架构图,其中详细介绍了上述3种架构.

  • 你还可以写一些关于加莱拉的事吗?Percona XtraDB集群? (2认同)

djn*_*jna 78

我们正在牺牲可用性,一致性和复杂性.首先解决最后一个问题:这有关系吗?非常好!关于如何管理数据的选择绝对是根本性的,并且没有"最佳实践"躲避决策.您需要了解您的特定要求.

有一个根本的紧张局势:

一个副本:一致性很容易,但如果碰巧失败了,每个人都没有水,如果人们偏远,那么可能会付出可怕的通信费用.将可能需要断开操作的便携式设备带入图片中,一份副本不会将其剪切掉.

Master Slave:一致性并不太难,因为每个数据都只有一个拥有主数据.但是,如果你看不到那个主人,你会怎么做,需要某种推迟的工作.

Master-Master:如果你可以使它工作,那么它似乎提供了一切,没有单点故障,每个人都可以一直工作.麻烦是保持绝对一致性非常困难.有关更多信息,请参阅维基百科文章.

维基百科似乎对优缺点进行了很好的总结

好处

  • 如果一个主服务器发生故障,其他主服务器将继续更新数据库.

  • 主人可以位于几个物理站点中,即分布在网络上.

缺点

  • 大多数多主复制系统只是松散一致,即懒惰和异步,违反了ACID属性.

  • 渴望复制系统很复杂,并且会引入一些通信延迟.

  • 随着涉及的节点数量的增加和所需的延迟减少,解决冲突等问题会变得棘手.

  • 但是当两个用户做一些矛盾的事情时会发生什么 - 比如两个用户试图购买库存的最后一个项目?想象一下,我们有两个主人并且每个用户正在击中不同的主人,然后我们得到某种沟通故障 - 最终会有妥协的妥协或可用性降低 - 一个用户被告知"对不起伙伴,我真的不知道发生了什么,直到我与其他主人交谈",或者当通信恢复时我们有一个令人讨厌的冲突 - 那些可能变得非常复杂. (7认同)
  • 当您需要一个单一的、更新的“真相”(如在金融系统中)时,您需要 Master/Slave 或实际上只是 Master。您可以稍后修补真相(想想像 Git 这样的修订控制系统中的合并冲突),然后您可以使用 Master/Master。 (4认同)
  • 金融交易或股票市场使用什么?他们会一直遇到这个问题吗? (2认同)