《系统设计》课程学习笔记—数据库复制

121 阅读2分钟

复制(Replication )是一个涉及共享信息以确保冗余资源(如多个数据库)之间的一致性,从而提高可靠性、容错性或可访问性的过程。

主-从复制

主服务器提供读写服务,将写复制到一个或多个仅提供读服务的从服务器。从服务器还可以以树状方式复制其他从属服务器。如果主设备脱机,系统可以继续以只读模式运行,直到从服务器升级为主服务器或配置新的主服务器。

master-slave-replication.png

优点

  • 整个数据库的备份对主数据库没有影响。
  • 应用程序可以在不影响主服务器的情况下读取从服务器。
  • 从服务器可以脱机并同步回主服务器,而无需停机。

缺点

  • 复制增加了更多硬件和额外的复杂性。
  • 当主服务器发生故障时,会产生停机时间并有可能丢失数据。
  • 在主从体系结构中,所有写操作也必须向主服务器进行。
  • 读从服务器越多,我们需要复制的次数就越多,这将增加复制延迟。

主-主复制

两个主服务器都提供读/写服务,并相互协调。如果其中一台主服务器发生故障,系统可以继续进行读写操作。

master-master-replication.png

优点

  • 应用程序可以从两个主服务器读取。
  • 将写负载分布到两个主节点。
  • 简单、自动和快速的故障切换。

缺点

  • 配置和部署不像主从式那么简单。
  • 松散一致或由于同步而导致写入延迟增加。
  • 随着写入节点的增加和延迟的增加,需要考虑冲突解决。

同步复制 vs 异步复制

同步复制和异步复制之间的主要区别在于如何将数据写入复制副本。在同步复制中,数据同时写入主存储和副本。因此,主副本和副本应始终保持同步。

相反,异步复制在数据已写入主存储之后将数据复制到副本。尽管复制过程可能几乎实时发生,但更常见的做法是,按照预定时间进行复制,这更节约成本。