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