首页 > 编程知识 正文

HighGo HVR简介

时间:2023-05-05 06:22:13 阅读:268905 作者:4819

HVR可以在数据库(HVR称之为 ‘location’)之间进行事务复制。它将捕获到的每个变化都应用到目标端。HVR也能在目录(file locations)之间或者数据库和目录之间进行基于文件的同步复制。

 

术语

 HUB DATABASE是一个小型的数据库,HVR使用它来控制数据复制。它可以是Oracle schema(一个实例中的用户),Ingres数据库,SQL Server数据库或DB2数据库。它是特意为HVR安装创建的,可以任意命名(在本手册大部分例子中命名为hubdb)。HUB中包含HVR目录表(catalog tables),这些目录表中记录了所有的复制信息,包括复制数据库的名称、复制方向和被复制表的列表等。这些目录表会在安装过程中被自动创建在HUB数据库中。(参见3.1 Unix、Linux平台安装和3.2 Windows平台安装)

LOCATION是HVR复制的源端或目标端。location也可以是文件目录(‘file location’)。

CHANNEL是HVR中的一个对象,它将作为主备的locations和需要复制的表组合到一起。它还包含action,这些action控制如何复制。例如,为了捕捉到变化,数据库 location中必须定义Capture action。channels在hub数据库中定义。通过配置channel,可以使HVR在各种不同的数据库之间、文件之间或者在数据库和文件之间进行复制。除了复制变化外,channel也可以用于刷新数据。刷新(HVR Refresh)意味着将所有的数据从源端读取然后加载到另一个数据库(目标端)。

 

进程架构和网络连接

hub机器包含HVR hub数据库、一个HVR调度器(HVR Scheduler)(它控制复制作业)以及所有的日志文件。locations可以在本地(即在hub机器上)也可以在远程机器上。

   

通常,要访问远程location,HVR会使用指定的TCP/IP端口号连接到那台远程机器。如果远程机器是Unix,那么需要配置INTED进程来监听这个TCP/IP端口。如果是windows机器,那么HVR会使用自己的HVR Remote Listener(一个windows服务)来监听。或者,HVR也可以使用DBMS协议(例如Oracle TNS)连接到远程数据库。

使用hub机上的HVR调度器可以开启捕获或者应用作业连接到远程location上。远程机器上的HVR是被动连接的;只是作为hub机器的代理而存在。数据的同步复制完全是由hub机器控制的。

 

设置通道(channel)的步骤概览

首先必须在所涉及的各台机器上安装HVR软件。安装步骤,请参考3.1 Unix、Linux平台安装、3.2 Windows平台安装和3.3 MacOS平台安装。这些安装步骤也创建了一个包含空目录表(catalog table)的hub数据库。

一旦安装了HVR,就可以使用图形用户界面(GUI)进行管理。如果hub机器是windows或者linux,那么GUI可直接在hub机上运行。否则,它应该在用户的PC上运行,然后连接到远程hub机器。

通过双击快捷方式或者在Linux上执行hvrgui命令可以启动GUI(参见5.9 hvrgui了解更多信息)。HVR GUI允许在hub数据库中定义一个channle。Channel必须包含至少两个location(如一个Oracle schema,或Ingres或SQL Server数据库)。还必须包含location group。它是属于一个channel的locations的集合。 HVR actions一般定义在channel的location group上。 HVR channel可以被用于数据库复制或者文件复制。

要建立一个数据库复制通道,在GUI中选择Table Select选项从数据库location中导入表的列表。在源数据库上定义action:Capture来捕获数据库的变化,在目标数据库定义Integrate来整合变化。参见8.1 Oracle HVR快速入门,8.2 Ingres HVR快速入门,8.3 SQL Server HVR快速入门,8.5 DB2 HVR快速入门或者8.6 Teradata HVR快速入门,以了解更多信息。

可以通过在actions上指定其他参数或增加其他actions来重新配置HVR的行为。

 

管理文件传输

文件复制channel使用file location建立。file location 可以是已经安装了HVR机器上的一个目录或目录树,也可以是一个HVR可以使用FTP、SFTP、WebDAV、HDFS或者S3协议访问的location。

HVR可以将新文件从file location复制到另一个不同的file location,也可以在file location和数据库location之间复制。如果HVR在file location之间复制,它会将这些文件看做是字符流。但是,如果一个channel既有数据库locations又有file locations,那么每个文件为包含数据库更改的文件,且默认为HVR的XML格式。

当HVR正在从file location的目录捕捉变化时,它可以移动每个文件(变化被捕获之后删除它),或者将其复制到目标location。

 

开始进行复制

运行时复制系统由GUI中的HVR Initialize或hub机上命令行的hvrinit生成。

HVR Initialize检查channel,然后创建复制需要的对象和HVR Scheduler中的复制作业。同样对于基于触发器的捕获(与基于日志的捕获相反),HVR创建数据库对象,例如用于捕获更改的触发器(或“规则”)。

一旦执行HVR Initialize,将更改从源位置复制到目标位置的过程按以下步骤发生:

1. 捕获由用户所做的更改。对于基于日志的捕捉,这些都是由DBMS日志系统自动记录。

2. 当“capture job”运行时,它将源location的变化传输到hub机器上的路由器事务文件(router transaction files)。注意,当捕获作业处于suspended状态,变化将继续被捕获(步骤1)。

3. 当“integrate job”运行时,它读取hub上的路由器事务文件并在目标端运行insert、update和delete语句以模仿由用户在源端作出的原始改变。

运行时复制要求HVR Scheduler正在运行。右键单击hub数据库以创建并启动HVR Scheduler。

   

HVR Initialize创建suspended状态的作业。可以使用GUI通过右键单击channel和选择start来启动。

像其他在HVR GUI的操作,启动作业也可以使用命令行来完成。参考5.21 hvrstart。

HVR Scheduler通过$HVR_CONFIG/log/hubdb目录下的多个日志文件来收集输出和错误信息。每个复制作业都有其自己的输出和错误的日志文件,也有包含所有输出或者只有对于每个channel或者整个HVR的错误记录的日志文件。

   

作业的错误,可以通过点击scheduler目录树下的作业并单击View Log来查看。这些日志文件被命名为chn cap loc.out或者 chn integ loc.out,可以在目录$HVR_CONFIG/log/hubdb中找到。

   

 

刷新和比对

除了实际的复制(捕捉每一个变化,并把它整合到另一个数据库),HVR还支持刷新(HVR Refresh)和比对(HVR Compare)。 HVR提供两种方式的刷新和比对。

   

批量比对意味着HVR对复制channel中的所有表执行校验。实际数据不通过网络,所以这对使用WAN的大型数据库是很有效的。

批量刷新是HVR从一个数据库中的所有表中提取数据,比较,经网络传输,解压缩,并且将数据加载到目标数据库的过程。数据被批量装载到目标数据库之后,索引被重新初始化。

   

逐行比对是HVR从一个数据库中提取数据,压缩,然后在目标端将这些数据逐行和目标端数据库中的数据进行比较。每检测到一个不同点,就执行写入对应的SQL语句;insert,update或者delete。

      

逐行刷新(修复)是HVR比较每个表的副本,识别哪些行是不同的,应用这些更改(作为修复)。 内部HVR从一个数据库中选择数据,对其进行压缩,将其传送到目标计算机,并将这些更改逐行与目标表中的行进行比较。 对于检测到的每个差异,执行“修复”SQL语句; insert,update或者delete。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。