简介
对于许多现代应用程序,其后端配置使用分布式数据库。数据通过数据库服务器的排列或集群进行存储和处理,而不是依赖单个数据库服务器。分布式模型可以确保即使其中一个数据库服务器发生故障,数据仍然可访问。然而,分布式方法引入了一个问题,即如何确保分布式系统中的所有参与者都能及时获取最终用户期望返回的信息。这引出了本指南的主题:数据库复制。
在本指南中,我们将介绍什么是数据库复制,并讨论为分布式系统实施数据库复制过程的主要优势。
什么是数据库复制?
数据库复制 是在通过网络连接的多台机器上维护数据副本的过程。该过程可以可视化如下,其中主数据库将其信息发送给从数据库进行复制
此图显示了一种特定类型的数据库复制架构,但复制也可以通过不同的方式进行。主要目标始终相同,即在不同位置保留多个相同且最新的数据副本。
数据库复制的优势
正如引言中简要提到的,有几个原因会促使人们希望拥有分布式数据库并因此实施数据库复制。一些最常见的优势包括以下几点:
- 提高数据的可用性
- 加快数据访问速度
- 提升服务器性能
- 完成灾难恢复准备
- 改进分析
提高数据的可用性
复制通过避免单点故障和丢失数据库访问来提高数据的可用性。如果发生某种技术故障、断电或任何影响该单点的不同事件,您的应用程序将无法访问其正常功能所需的数据。
数据复制通过将数据存储在多个节点上,增强了系统的弹性和可靠性。如果一个节点发生故障,另一个节点将接替,并拥有完全相同的数据,从而使操作顺利进行。
加快数据访问速度
对于大大小小的组织,可能存在全球范围内的用户。地理分布式数据库复制有助于确保组织中任何需要特定数据的用户都能及时、不延迟地获取数据。
将数据复制到靠近访问位置的本地服务器,可以为用户提供更快的数据访问和查询。如果一个组织在美国只有一个节点,那么一个在欧洲试图拉取数据的用户在访问数据时可能会遇到延迟。如果一个组织在美国有一个集群,在欧洲也有一个复制的集群,那么就可以确保该用户在需要数据时能高效地使用数据。
提升服务器性能
数据库复制还可以减少数据库主服务器的负载。如果数据只能在一个服务器上访问,那么该服务器将处理所有对数据库的请求。通过复制,负载可以分散到分布式系统中的其他节点。由于所有节点都具有相同的数据副本,一些查询可以由辅助节点处理,而主节点只处理某些读取或只处理写入。
将主服务器保留用于处理写入操作可以证明是有益的,因为如果它处理所有读取和写入,可能会对服务器的资源造成不必要的压力。对于数据库没有太多操作的情况,从主服务器读取可能是有意义的。但是,在扩展和增长时期,最好将任务委托给分布式系统,而不是将所有负载都放在单个节点上。
完成灾难恢复准备
在发生灾难时,复制还可以确保恢复丢失或损坏的数据。虽然副本本身不是备份,因为它们会持续应用更改,但它们可以作为数据库备份的目标。
例如,如果您想备份数据,可以短暂关闭其中一个辅助服务器上的复制功能,以使数据处于一致状态;在没有更多写入操作传入时备份数据;然后重新启动复制以赶上新的更新。副本为您提供了一致数据的快照,可用于灾难恢复,而不会中断操作。
复制促进灾难恢复准备的另一种方式是明确将副本配置为滞后追随者。此副本将以定义的延迟时间应用操作。这种延迟允许数据库监控团队注意到问题并避免将更改从损坏的主服务器应用到副本。然后,他们可以关闭复制并拥有一个大部分最新且正在运行的服务器,以保持操作继续进行。
这些方法增加了增强的数据保护级别,如果没有数据库复制,这些保护将不存在。
改进分析
与提升服务器性能的优势类似,复制允许专门用于分析的节点。通过在单个站点/节点之外提供精确的数据副本,现在可以选择一个专门用于对数据进行分析的辅助节点。
这样一来,任何处理写入操作或其他繁重读取的节点都不会因处理数据库用户的分析查询而受到压力。例如,您的分析团队正在拉取数据以编制过去一个季度的用户增长报告,他们将拥有一个专用节点来工作,而不会给任何核心节点造成压力。这既提高了分析团队的体验性能,又减轻了主节点不必要的负载——所有这些都使用完全相同且最新的数据。
总结
数据库复制是实现成功分布式数据系统的重要过程。在本文中,我们简要介绍了什么是数据库复制以及它为您的新应用程序或现有应用程序带来的好处。
数据库复制并非一劳永逸的过程,因此在配置时了解哪些好处对您的团队最重要至关重要。我们将在后续指南中利用已学到的好处,并讨论最常见的数据库复制架构、方法和类型。
要使用Prisma Client执行数据库迁移,请使用Prisma Migrate 工具。Prisma Migrate 会分析您的模式文件,生成迁移文件,并将其应用于目标数据库。


