什么是数据复制?

数据复制是指有意将相同数据存储在多个站点或服务器中。公司复制数据的原因有很多。它允许在服务器停机或服务器流量繁忙的情况下无缝地获取数据。用户始终可以访问数据,同时不会干扰或减慢其他用户的访问速度。对于云应用程序,数据复制允许您访问本地数据库中的数据副本,其性能远高于通过云应用程序的 API 访问数据,后者对于分析和数据科学特别有用。数据复制还允许您避免某些云应用程序具有的 API 事务限制和节流。

数据复制图

数据复制与普通备份不同,其作用更大。数据来源的服务器称为发布服务器,将数据复制的目标服务器称为订阅服务器。在数据复制中,发布服务器上完成的事务会与订阅服务器同步,并自动更新数据。发布服务器上的任何数据更改也会自动反映在订阅服务器中。

可以是完全复制或部分复制。在完全复制的情况下,所有源数据都存储在所有复制站点。如果是部分复制,则只复制经常访问的数据,而其他数据则保留在源位置。

数据复制的类型

数据复制有三种主要类型。

事务复制

在事务复制中,频繁发生的数据更改是自动化的,并分布在服务器之间。将更改从发布服务器复制到订阅服务器的过程几乎是实时进行的。它不只是复制事务的最终结果,而是记录事务的每个步骤以及更改发生的顺序。

例如,对于 ATM 事务,从发布服务器到订阅服务器的复制不仅是记录的期末余额,还包括在这两者之间进行的所有单个事务。事务复制的另一个关键功能是,虽然发布服务器上的数据更改在订阅服务器上复制,但反向操作却不起作用。默认情况下,不会在订阅者级别进行数据更改。

快照复制

快照复制在给定时间点同步发布服务器和订阅服务器之间的数据。它可以在单个事务中将数据块从发布服务器移动到订阅服务器。快照复制中的更新频率不如交易性复制那么频繁。它可以在事务性复制之前完成,以建立两台服务器的基本状态。它不会更新服务器之间的每个事务,也不会更新数据更改的顺序。

此过程用于同步在一段时间内发生变化的数据。例如,许多公司将客户、联系人和机会等数据从云 CRM 复制到本地数据库以进行报告。这可能每 15 分钟、每小时或每天一次,具体取决于数据更改的频率。为了提高效率,复制过程可以检测发布服务器中已更改的数据,并仅复制更改,而不是在每个复制间隔内生成完整快照。

合并复制

合并复制是一种稍微复杂的复制形式。来自发布者的初始同步是快照复制。但是,在这种形式中,它允许在发布服务器和订阅服务器级别进行数据更改。然后将更新的数据发送到安装在所有服务器上的合并代理。合并代理使用冲突解决算法来更新和分发数据。

例如,如果员工在线时正在编辑直接保存在云服务器(发布服务器)上的笔记本电脑或手机(订阅服务器)上的文档,则这将是事务性复制,因为该文档几乎是实时保存的。但是,如果文档是从云服务器下载并在笔记本电脑或手机上离线更新的,则会发生冲突,因为数据是在订阅服务器端更新的。重新联机后,它将通过合并代理,该代理将使用冲突解决系统,通过比较两个文件来更新发布服务器的文档。

合并复制用于用户无法始终直接访问发布服务器的多种情况,例如移动用户在更新数据时可能会脱机。在多个订阅服务器可能在不同时间访问和更新相同数据并将其与发布服务器或其他订阅服务器同步的情况下,也可以使用它。如果来自发布服务器的相同数据由多个订阅服务器同时分段更新,也可以使用它。

数据复制网络的重要组成部分

除了发布服务器和订阅服务器之外,网络还具有成功所需的几个关键要素。

分发服务器

要更改复制设置,首先需要配置分发服务器。分发服务器是复制网络中的一台服务器,它控制分发数据库并存储所有复制的元数据和历史记录。它还存储用于复制的事务和快照。分发服务器可以与发布服务器(本地分发服务器)相同,甚至可以是远程分发服务器,具体取决于复制的类型。

当单个分发服务器迎合多个发布服务器或需要在单独的计算机上进行处理以不影响发布服务器的数据移动时,通常使用远程分发服务器。这通常用于事务复制,在此情况下更新频率要高得多,并且如果在同一台服务器上,则可能会影响分发服务器的处理速度。合并复制可以通过本地分发服务器完成,因为复制和更新的频率不如事务复制那么频繁。这也有助于合并后订阅服务器的更新数据最终要与发布服务器同步。

复制代理

复制代理是复制的核心,根据所安装的复制类型而不同。它们是执行各种任务的程序,例如检测和更新发布服务器和订阅服务器数据库、创建副本以及解决冲突。复制代理通常存储在分发服务器中。从分发服务器运行的一些复制代理包括:

  • 快照代理
  • 分发代理
  • 合并代理
  • 日志读取器代理
  • 队列读取器代理

数据复制的优势

数据复制是提供对数据的一致访问的好方法。它还增加了多个用户同时访问数据的权限。通过合并数据库和使用不完整的数据更新从属数据库,可以消除数据冗余。而且,通过数据复制,自然可以更快地访问数据库。

数据复制的缺点

数据复制需要较大的存储空间和基础架构来进行维护。复制成本高昂,维护基础架构以保持数据一致需要采取复杂的措施。它还使软件更多部分收到隐私和安全漏洞的影响。

复制的最佳做法

配置复制网络后,请务必遵循一些有效的管理实践:

  • 应该制定定期备份数据库的策略。还应该定期运行测试来还原这些备份。
  • 作为灾难恢复的一部分,必须编写所有复制组件和重复性任务的脚本,因为脚本可以很容易地存储和备份。如果策略发生变化,组件可以很容易重新编写。
  • 有必要确定影响复制性能的因素。这包括硬件、数据库设计、网络配置、服务器配置和代理参数等方面。所有这些都需要到位并针对应用程序使用的工作负载进行监控。

为了提高效率,应监控以下五个参数:

  • 复制所需的时间
  • 复制持续了一段时间
  • 可以同时发生的并发性或复制活动的数量
  • 同步的持续时间
  • 复制的资源消耗
    • 为避免灾难,必须建立性能阈值,以便在达到阈值时生成警告并向管理员发送警报。还可以为复制代理或复制进程的操作建立警报。
    • 监视复制拓扑
    • 需要在发布服务器和订阅服务器上对事务复制和合并复制的数据进行定期验证,以保持成功复制

数据复制不仅仅是创建数据备份。尽管它是数据管理的关键组成部分之一,但如果管理不当,它也可能是一个昂贵而复杂的过程。关键在于根据您的需要选择正确的复制过程。