每个现代应用程序都依赖于数据,用户期望数据快速、最新且始终可访问。然而,数据库并非万能的。它们可能会在负载下发生故障或速度变慢。它们还可能受到物理和地理限制,这时复制就变得必不可少。
数据库复制是指在多台机器上保存相同数据的副本。这些机器可以位于同一数据中心,也可以分布在全球各地。其目标很简单:
-
提高容错能力。
-
刻度读数。
-
通过将数据带到更接近需要的位置来减少延迟。
复制是任何旨在确保系统在故障情况下不丢失数据或不让用户失望的核心。无论是毫秒级更新的社交信息流、处理限时抢购的电商网站,还是处理全球交易的金融系统,复制都能确保系统即使部分功能中断也能持续运行。
然而,复制也带来了复杂性。它迫使人们在一致性、可用性和性能方面做出艰难的决策。数据库可能已启动,但滞后的副本仍然可能提供过时的数据。网络分区可能会导致两个领导节点误以为自己在负责,从而导致脑裂写入。围绕这些问题进行设计并非易事。
在本文中,我们将介绍复制滞后的概念以及当今分布式数据库中使用的主要复制策略。我们将介绍单主、多主和无主复制模型,并分析每种模型的工作原理、它们解决了哪些问题以及它们的不足之处。
为什么要复制数据?
原文: https://blog.bytebytego.com/p/a-guide-to-database-replication-key