Sybase系统的数据同步与复制

网络整理 - 07-27

  sybase复制服务器(sybase replication server)用来满足日益发展的企业客户/服务器计算机环境的需要。自从复制服务器被广泛应用以来,已成为企业范围内客户/服务器应用模式的基础。

  一个实用的复制系统必须考虑到以下的业务要求。

  数据的高可靠性:
  复制系统将使应用系统更加可靠,减少了计算机系统失败给业务处理造成的影响。

  信息传递的一致性:
  分布系统各节点内保护数据的一致性;

  高的系统性能:
  复制系统必须在不增加数据源节点的负担、有效使用网络的前提下,允许每个节点优化本地数据的存取方式;

  方便数据集中管理:
  系统管理员能够方便容易地管理分布与各节点的数据;

  异构数据源访问:
  复制系统有能力在不同厂商提供的数据源之间移动传递数据,如sybase、oracle、ms sql等系统间数据的复制和同步;

  本地自治:
  每个节点能够决定自己将接受的是哪些数据,以及访问和更新本节点数据。
  复制服务器的工作方式

  在这节中我们将描述sybase复制服务器产品的各个部份及它们的功能。复制数据操作可以分为四个部分:

  对一个或多个数据源改变数据事务的监测
  在网络上传送事务
  将事务分发给各个目标数据源
  复制系统管理
  在sybase复制服务器环境中,对源数据库中数据的修改由一个称为日志传输管理(log transfer manager 简称ltm)的进程来实现。最典型的结构中ltm与源数据库放在同一个硬件平台上。

  ltm将log传送给复制服务器进程,复制服务器进程可以在另一机器上。在一个复制系统中,若干复制服务器的配置,可以分布在不同的局域网上,根据复制系统的配置,改变数据的log从一个复制服务器传送到其它复制服务器,最后由这些复制服务器将数据改变传给目标数据库。完整的数据复制操作进程可以由一个基于gui环境的复制服务器管理界面来管理和监控。因为在复制系统中使用了稳定队列(stable queue),数据从源数据库到目标数据库的途径中,能够避免系统中任一部分失败发生的数据丢失现象。稳定队列是一个安全机制,容错环境失败。

  日志传输管理

  sybase复制服务器产品有一部分为log transfer manager(ltm).ltm是一个低调度进程,最典型的配置方法是将ltm运行在与源数据库相同的平台上。如果复制系统中将有多于一个节点的源数据被修改,则需要每个节点有一个ltm。

  ltm的任务是监视并捕获与它相联数据库的事务,而且将这些事务传送给复制服务器,以便复制服务器将事务再传给其它的复制节点。

  ltm有一个联接到sql server,读取主sql server的事务日志,监测它是否改变了主节点数据。事务日志是用来观察主节点数据变化的最好的信息来源,因为它包含已经提交给server的事务,可用来恢复事务。在图六中,当某应用程序修改了主节点数据时,这个事务被记在事务日志中,以保证数据一致性,当提交时数据改变写入磁盘。复制进程不干涉数据库功能,只是ltm在监测sql server中的事务,当发现某个事务应该被复制时,将它传送给sybase复制服务器。

  ltm进程,是一个由sybase open server/open client编写的应用程序,并有一个联接到sybase复制服务器。这个进程可以驻留在单独的机器上。正是由于sybase复制服务器进程可以运行在与主数据源不同的机器上,才使用户将复制系统对主数据库施加的负担降低到最小限度。

  ltm进程可以将独立于主数据源命令的事务翻译给复制服务器。例如,一个事务中完成的是“update”,ltm将把事务传送给复制服务器并且给予解释,翻译成主节点完成的update命令。这个源数据库事务到复制服务器翻译或映射所认识的命令的机制是sybase复制服务器技术的一个重要策略。从ltm到复制服务器的界面对用户来说是可见的。也就是说,如果你能获得数据源的事务,就可以将它映射到sybase复制系统环境并且复制它。与其它竞争厂家产品不同,sybase复制技术允许建立应用程序来复制异构数据源。

  数据在局域网和广域网上的传送

  现在让我们来看,当信息从ltm传送到与之相联的复制服务器之后,又发生了什么?如果当数据与复制数据在不同的局域网上,那么复制进程将要把数据从主数据库的复制服务器传送到负责复制节点数据库的复制服务器。请注意,如果主节点与复制节点同在一个局域网上,那么可以省掉第二个复制服务器。在单一局域网复制环境中,一个复制服务器可以完成接受ltm数据并传送到复制节点两项任务。

  在多局域网环境中,不同sybase复制服务器之间路由可以是直接的,不需要中间节点。也可以是间接的。在主复制服务器与从复制服务器之间有中间传送节点。这些直接的或间接的路由是由系统管理员来配置的,允许系统管理员根据网络限制及应用程序传送数据的需要,有效地使用整个系统环境。在直接的及间接的配置状态中,可用复制服务器管理软件监视路由上传递的信息。

  数据到达复制节点

  在上两个标题中我们已看到ltm进程与服务器进程是如何协同工作的,将事务从主节点数据库送过网络到达目标节点。现在来看复制过程最后处理程序,复制服务器怎样把数据送到目标数据库。

  sybase复制服务器是由基于sybase open server/open client的应用程序。在复制的最后过程,复制服务器在目标数据库上建立一个联接,将从主数据库接收到的数据写入复制数据库。同样,复制节点可以是非sybase数据系统。

  sybase复制服务器以标准客户/服务器联接方式连到目标数据库。并有足够的权限修改目标数据库。下面我们可以看到复制服务器怎样知道传送哪些事务,传送到什么地方。包含复制数据的节点要向复制系统订购它所需要的数据。至于订购单信息被存在与之相关的sybase复制服务器数据字典中。每个复制服务器有一个相应的数据字典。简称rssd,用来存贮复制系统信息。

  因为sybase复制服务器仅是简单地象其客户程序一样把事务传送到目标数据源,可以是非sybase数据源。用户可以使用sybase omni-gateway,让复制服务器联接到第三方数据源,使复制服务器认为复制节点就是sybase,从复制服务器到目标数据源之间传送数据不需做任何形式变化。

  复制系统配置和管理工具

  replication server manager(rsm)是一个功能性很强的系统管理工具,使我们能成功地实现和管理分布复制环境。sybase正是认识到这一点,设计复制服务器的同时也设计了复制服务器管理程序。 rsm提供一个图形用户界面,使用户仅从一个图形操作界面便能使系统管理员监控管理复制系统的每个部分。rsm是sybase企业客户/服务器系统管理工具家庭成员之一,提供基于对象的管理方式。

  rsm帮助系统管理员建立复制数据定单,接收复制的数据,指定这些数据复制到某个节点。定单上定义复制节点将从主节点订购哪些记录行。

  使用rsm代替了复杂的复制服务器sql命令,仅需用易于使用的填空方式便可建立复制系统定义,可用性非常好。

  稳定队列:

  sybase复制系统的设计模式,允许复制系统中的网络或者任意部分在短暂失败之后,能快速而简便地重新达到数据同步,这种配置能保护复制系统不受环境失败的影响,在其中担当主要任务的是稳定磁盘队列。

  在复制环境中,事务从复制系统的一个部分传送到另一部分(例如,从ltm传送到sybase复制服务器,或者从某一复制服务器传送到另外一个复制服务器),在传输的中间环节,事务均可以被暂时存放在磁盘上,避免某一部分失败引发的数据丢失。当复制环境恢复到正常状态时,复制服务器能自动将磁盘队列中数据传送到目标节点。存放数据队列的磁盘分区的大小则可以动态调整。

  修改复制数据(分布修改)

  一般情况下,复制节点数据跟随主节点而变化。如果用户希望直接修改复制节点数据又会怎样呢?sybase复制服务器如何来保证协同环境下的数据一致性?

  在sybase复制服务器环境中,修改复制节点数据有以下两种方法:

  异步复制:节点之间传输存贮过程调用
  同步复制:直接连接到各节点,修改每一个节点数据
  在任何系统中,任何时刻,每个数据项都必须有一个明确的主节点来控制它。也就是说,每个数据项在分布式环境中在某一节点是唯一标准的,其它网络节点只存放主节点数据的拷贝。update操作可以发生在任何节点上,但在系统环境中只有主节点唯一能真正完成update。

  数据项之间的关系是相当重要的,在任意一个update节点,其数据也属于其他节点,一个成功的系统,其生命周期的很多时间花费在解决这样的数据冲突问题上。另外,还有系统备份与恢复,在复杂的数据关系下也不是件容易的事情。设计一个良好的系统环境,在应用系统中变得十分重要。