复制(Replication )是一个涉及共享信息以确保冗余资源(如多个数据库)之间的一致性,从而提高可靠性、容错性或可访问性的过程。
主-从复制
主服务器提供读写服务,将写复制到一个或多个仅提供读服务的从服务器。从服务器还可以以树状方式复制其他从属服务器。如果主设备脱机,系统可以继续以只读模式运行,直到从服务器升级为主服务器或配置新的主服务器。
优点
- 整个数据库的备份对主数据库没有影响。
- 应用程序可以在不影响主服务器的情况下读取从服务器。
- 从服务器可以脱机并同步回主服务器,而无需停机。
缺点
- 复制增加了更多硬件和额外的复杂性。
- 当主服务器发生故障时,会产生停机时间并有可能丢失数据。
- 在主从体系结构中,所有写操作也必须向主服务器进行。
- 读从服务器越多,我们需要复制的次数就越多,这将增加复制延迟。
主-主复制
两个主服务器都提供读/写服务,并相互协调。如果其中一台主服务器发生故障,系统可以继续进行读写操作。
优点
- 应用程序可以从两个主服务器读取。
- 将写负载分布到两个主节点。
- 简单、自动和快速的故障切换。
缺点
- 配置和部署不像主从式那么简单。
- 松散一致或由于同步而导致写入延迟增加。
- 随着写入节点的增加和延迟的增加,需要考虑冲突解决。
同步复制 vs 异步复制
同步复制和异步复制之间的主要区别在于如何将数据写入复制副本。在同步复制中,数据同时写入主存储和副本。因此,主副本和副本应始终保持同步。
相反,异步复制在数据已写入主存储之后将数据复制到副本。尽管复制过程可能几乎实时发生,但更常见的做法是,按照预定时间进行复制,这更节约成本。