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