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