点 Redis 8 来了——而且它是开源的

了解更多

数据复制详解:示例、类型和用例

什么是数据复制?

数据复制,也称为数据库复制,是一种复制数据的方法,以确保所有信息在所有数据资源之间保持实时一致。数据库复制视为一张网,可以捕获您的信息并防止其遗失或丢失。数据几乎不会停滞。它不断变化。这是一个持续的过程,确保主数据库的数据在副本中得到镜像,即使该副本位于地球的另一端。

如今,“瞬时”的速度已不够快。将延迟缩短到亚毫秒是普遍目标。我们都遇到过这种情况——刷新网站,等待似乎永恒的几秒钟才能看到信息更新。延迟降低了用户的生产力。实现近乎实时是目标。零时间延迟是任何用例的新理想状态。

数据复制如何工作?

数据复制是将数据从一个主机复制到另一个主机,例如在两个本地环境之间,或一个本地环境到云环境等等。目的是为所有用户实现数据实时一致性,无论他们从何处访问数据。数据驱动型商业模式(DDBMs),例如游戏行业,严重依赖通过实时数据获取的分析。要更清楚地了解实时可访问性对于 DDBM 的必要性,请观看下面的视频

https://www.youtube.com/embed/eWvJd45qlqI

数据复制有哪些好处?

提高可靠性和灾难恢复能力

在紧急情况下,如果您的主实例受到威胁,至关重要的是使用可以替换它的副本来保护任务关键型应用程序。灾难恢复复制方法类似于备用发电机;想象一下关键保险丝烧断或电网断电——您无需担心,因为您有备用发电机作为替代品随时待命,让您的系统持续运行。 

由于副本实例是主实例的精确副本,无论主实例发生什么情况,您都可以保证性能不会受到影响。即使主实例与副本之间的链接中断,性能也仍然得到保证,因为主实例将执行部分重新同步,收集断开连接期间未传递给副本的命令。如果不可能,将使用快照启动完全重新同步。

提高应用性能

通过将数据分散到多个实例中,您可以帮助优化读取性能。通过在多个位置访问数据,也可以优化性能,从而最大程度地减少任何延迟问题。此外,当副本负责处理大部分读取操作时,这就为主实例处理大部分繁重的写入操作腾出了空间。

提高 IT 团队效率

减少 IT 人员手动复制数据的工作量。

理解完全数据复制与部分数据复制

完全数据库复制是指在每个可用副本实例中复制整个主数据库。这是一种整体方法,将现有、新增和更新的数据镜像到所有目标。尽管这种方法非常全面,但也需要大量的处理能力,并且由于复制的数据量很大,会增加网络负载。 

与完全复制不同,部分复制仅镜像部分数据,通常是最近更新的数据。部分复制根据数据在特定位置的重要性,隔离特定数据片段。例如,一家总部位于伦敦的大型金融公司可能在全球各地设有许多卫星办公室,例如波士顿的办公室、吉隆坡的办公室等等。 

部分复制允许伦敦的分析师在其站点仅拥有与英国相关的数据,并且仅持续复制这些数据以满足其需求。位于美国和马来西亚的其他卫星办公室也可以这样做,而不会拖慢任何一个系统,从而提高性能并最大限度地减少网络流量。

数据复制的示例

事务复制

这种形式的数据库复制将主数据库的数据实时复制到副本实例,通过镜像这些变更在主数据库中发生的顺序来实现。这优化了一致性。复制会获取主数据库数据所谓的“快照”,并使用该快照作为需要在其他地方复制内容的蓝图。通过事务复制,您可以根据需要跟踪和分发变更。

illustration of snapshot being replicated to a replica
主实例的快照被共享给副本
The primary sends information gathered after the snapshot to the replica.
主实例将快照后收集的数据发送给副本

考虑到此过程的增量性质,事务复制在寻找备份数据库选项时并非最佳选择。事务复制适用于需要在所有数据位置实现实时一致性、需要记录每个微小变更(而不仅仅是变更的整体影响),以及数据定期从一个特定位置发生变更的情况。 

快照复制

顾名思义,快照复制会截取主实例数据在特定时刻的“快照”,并将其传输到副本。就像照片一样,快照复制捕捉了数据在某个时间点上的样子,即它从主实例传输到副本时的样子,但不记录后续更新。因此,不要使用快照复制来创建备份。

如果发生存储故障,快照复制将无法获取更新的信息。为了保持信息一致,您可以从快照开始,然后确保对主实例所做的所有更改随后都传递给每个副本。 

另一方面,这种方法对于意外删除后的恢复非常有用。可以将其视为您在 Google Docs 中的版本历史记录。希望能够继续处理您的演示文稿,就像四个小时前一样吗?如果 Google Docs 每小时对您的工作进行一次快照,您可以点击回溯到四个小时前的那个版本或“快照”,看看当时您的信息是什么样的。 

合并复制

这种方法通常从数据的快照开始,并将数据分发给其副本,并维护整个系统之间的数据同步。合并复制的不同之处在于,它允许每个节点独立地修改数据,然后将所有这些更新合并成一个统一的整体。 

合并复制还会记录每个节点上的每项变更。回到我们之前的 Google Docs 示例,如果您曾经与同事共享文档,他们随后在文档中留下评论和编辑,您会看到谁在什么时间做了什么更改。合并复制的功能与此非常相似。 

基于键的复制

这种方法也称为基于键的增量数据复制,它利用复制键仅识别、定位和更改自上次更新以来已更改的特定数据。通过隔离这些信息,它简化了备份过程,仅处理必需的负载。尽管基于键的复制是一种快速更新新数据的方法,但其缺点是无法复制已删除的数据。

https://www.youtube.com/embed/RuK46IL9DcE

双活地理分布

双活地理分布,也称为点对点复制,其工作原理有点像事务复制,因为它依赖于通过节点进行的持续事务数据。在双活模式下,同一网络中的所有节点通过与所有对应节点同步数据库,不断地相互发送数据。所有节点也都是可写的,这意味着任何人可以在世界任何地方更改数据,并且这些更改会反映在所有其他节点中。这保证了实时一致性,无论更改发生在世界何处。

无冲突复制数据类型(CRDTs)定义了这些数据的复制方式。如果其中一个副本或节点发生网络故障,一旦该节点重新上线,其他副本将拥有所有必要的数据准备进行复制。对于需要在全球各地设立多个数据中心的企业而言,这是一个可靠的解决方案。请观看下面的视频,了解双活地理分布用例的示例。 

立即下载揭秘:Redis CRDTs 白皮书

同步复制和异步复制

使用同步复制,数据同时写入主实例和副本,因此得名。另一方面,异步复制仅在主实例中完成写入后才将数据复制到副本。  异步复制通常不会实时发生,尽管有可能。由于异步复制中的写入操作往往是分批进行的计划性操作,有时会丢失数据,大多数情况下是在发生故障转移事件时。尽管如此,当需要在远距离复制数据时,异步复制是一个合适的解决方案,因为实时性不是关键因素。

常见的数据复制实现挑战有哪些?

在多个实例之间维护数据需要一套一致的资源。在许多情况下,拥有一个主实例和多个副本实例的成本可能相当高。维护这些操作并确保不发生系统故障需要一支专业的专家团队。并且根据架构的不同,当新的进程到位时,网络带宽可能会过载,这可能会影响延迟、读写性能。

常见问题

  • 什么是数据复制?
    • 数据复制是一种复制数据的方法,以确保所有信息在所有数据资源之间保持实时一致。将数据库复制视为一张网,可以捕获您的信息并防止其遗失或丢失。数据几乎不会停滞。它不断变化。这是一个持续的过程,确保主数据库的数据在副本中得到镜像,即使该副本位于地球的另一端。
  • 什么是复制数据库?
    • 复制数据库是一种数据库系统,它在不同的节点或服务器上维护同一数据的多个副本。复制数据的目的是提高数据可用性、容错能力和性能。

Redis 使数据复制便捷、经济高效且易于实现。您准备好体验 Redis Enterprise 的强大功能了吗?