informix数据复制技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据复制技术用于网络环境下多个数据库服务器之间数据的互相拷贝。

在金融业实现数据集中、数据共享和数据异地备份应用中,利用这种技术可以保证数据交换安全无隐患。

本文以广为应用的Informix数据库为例,介绍如何进行网络复制。

Informix数据复制特点
Informix要求在不同数据库之间进行数据复制的表必须是同构的(主结点和复制结点要复制的表、视图名称必须一致,要复制字段的名称、类型也必须一致);允许服务器间同步或异步复制,但每次只允许复制增量数据。

如何定义
1.定义复制服务器
对参与复制的数据库服务器进行定义,包括复制使用的Dbspace、丢弃事务(复制不成功事务)日志存放路径、丢弃行信息(对记录修改复制不成功)日志存放路径等。

2.定义复制
数据复制和定义数据复制的基本单位,以表为单位进行,包含以下因素:复制名称、复制选项、复制参与者、冲突解决规则及冲突解决范围。

3.复制组
相同数据库服务器之间的所有复制可定义成一个复制组,进行统一管理:同时启动、停止、挂起、继续。

定义数据库组可简化管理并提高复制性能。

具体应用实例
1.环境描述
操作系统:SCOUnix5.05
数据库:Informix-online7.31
主机A:主机B
IP:76.1.40.86IP:76.1.40.88
Hostname:gs86Hostname:gs88
DBname:gs_serverDBname:gs_host
DBserver:gs86a_onDBserver:gs88a_on
2.准备工作
首先,让gs86、gs88两台机器时间同步;其次,在gs86、gs88两台机器的数据库中各建一结构完全相同的数据库,分别为gs_server、gs_host,两个数据库中都建一张结构完全相同的表table_86与table88,并建立惟一索引;
最后,在gs86、gs88两台机器上分别执行如下命令:
updatestatistics
ontape-s-U数据库名
3.复制配置
以gs86机器为例,主要复制配置如下:
(1)sqlhosts文件
g_gs86group--i=2
gs86a_onontlitcpgs86on_gs88g=g_gs86
g_gs88group--i=1
gs88a_onontlitcpgs88on_gs88g=g_gs88
其中g_gs86、g_gs88为组名,on_gs88为端口号,且应为同一端口号。

(2).rhosts
gs88
(3)informix的主要配置
Informixserver=gs86a_on
(4)定义复制
cdrdefineserver-Ig_gs86
cdrdefineserver-I-cgs88a_on-Sg_gs86g_gs88(5)定义复制的表
cdrdefinerepl-i-Cignoregs88_table_86\
″Pgs_host@g_gs88 informix.table_gs86″ ″select fromtable_86″ \
″Rgs_server@g_gs86 informix.table_gs86″ ″select fromtable_86″
cdrdefinerepl-i-Cignoregs88_table_88\
″Pgs_host@g_gs88 informix.table_gs88″ ″select fromtable_88″ \
″Rgs_server@g_gs86 informix.table_gs88″ ″select fromtable_88″
(6)定义复制组
cdrdefinegroupgrpgs88_table_86gs88_table_
88
其中grp为组名。

gs88机器的配置与gs86机器的配置相似。

4.执行复制
(1)启动复制
cdrstartgroupgrp
(2)关闭启动复制
cdrstopgroupgrp
需要注意的是,启动复制只能在一方执行。

5.复制的检查及维护
(1)cdrlist server|group|repl
(2)删除server
cdrdeleteserver组名
至此,Informix数据库通过网络环境来实现数据复制工作已经完成,有兴趣的用户不妨一试。

---- 随着金融电子化的普及,数据库在大型金融业务处理系统中起着举足轻重的作用。

而数据的可靠性与完整性至关重要,它的损失或破坏将直接影响到客户和银行的切身利益,因此数据的备份是不容忽视的问题。

本文将介绍一种由INFORMIX 提供的建立在数据库一级的联机热备份技术。

它由数据库本身提供,且操作简便易行,具有一定的实用价值。

---- 一、什么是INFORMIX 的数据复制技术
---- 数据复制是指把数据从主数据库服务器(以下称主服务器)复制到从数据库服务器(以下称从服务器)。

通常主、从服务器分别位于两台主机之上,二者通过TCP/IP 建立联接,这样数据复制技术可以提供一种可靠、即时的备份机制。

除此之外,数据复制技术还具有一大优点,即用于备份的从服务器可被用于进行一些只读操作,这样一来可分担一些主服务器的负载。

---- 二、数据复制服务器的工作原理
---- 数据复制服务器的工作原理是主服务器在把逻辑日志缓冲区中的内容写往磁盘之前,先将其拷贝至数据复制缓冲区。

数据复制缓冲区的大小和逻辑日志缓冲区的大小一样。

然后数据复制缓冲区的内容通过TCP/IP 由网络传到从服务器一端的数据复制缓冲区中。

在从服务器一端,有线程负责接收数据复制缓冲区并将其放入恢复缓冲区,另外有线程负责根据这些逻辑日志记录操作数据库。

从而使从服务器起到了对主服务器进行备份的作用。

---- 根据逻辑日志更新从服务器中的数据库分为同步更新和异步更新两
种情况。

采用异步更新模式时,主服务器在完成从逻辑日志缓冲区到数据复制缓冲区的拷贝之后,就刷新逻辑日志缓冲区至磁盘。

而对数据复制缓冲区跨网络的传送则要等以下条件之一满足时:
* 数据复制缓冲区满。

* 当数据库以非缓冲方式记逻辑日志时,应用程序提交一个事务。

* 经过由参数DRINTERVAL 指定的时间间隔。

---- 异步更新模式的不足之处是由于某一时刻的系统故障导致一些事务在主服务器上已经提交,但未被复制到从服务器上。

---- 采用同步更新模式时,在主服务器上把逻辑日志缓冲区刷新至磁盘的工作要等到主服务器收到从服务器发来的已收到复制缓冲区的确认之后才能进行。

同步更新模式可以确保在主服务器上已提交的事务肯定被传到从服务器上。

它的不足之处是对逻辑日志缓冲区的刷新会由于等待确认消息的接收而有一定的延时,从而对系统性能造成一定影响。

---- 三、配置数据复制服务器所需的条件
* 主、从服务器的硬件和操作系统要一致。

* 主、从服务器必须使用同样版本的INFORMIX
* 网络软件和硬件的连接必须保证主、从服务器之间能够通过TCP/IP 进行通信。

而且二者必须使用同样的TCP/IP 编程接口(TLI 或Sockets)。

* 在主、从服务器上所有非临时性的dbspace 的chunk、dbspace、路径名以及偏移量都要保持一致。

事实上,两台机器上供主、从服务器使用的磁盘的分区也最好保持一致。

* 数据库必须使用事务日志。

因为数据复制工作是通过向从服务器传送日志来完成的,那些对无日志模式数据库进行的插入、修改、删除操作是不会被传送给从服务器的。

* 创建用于容纳临时表的临时dbspace,将参数DBSPACETEMP 指向此临时dbspace。

* 可以在一个服务器上使用镜像,而在另一个服务器上不使用镜像。

但如果要在主服务器上对root dbspace 作了镜像,那么也要对从服务器上的root dbspace 作镜像。

* 除此之外,逻辑日志、物理日志和共享内存的参数配置也必须一致。

---- 四、配置数据服务器的具体步骤
---- 1. 创建临时dbspace。

---- 临时dbspace 是服务器用于创建临时表,存放排序文件的磁盘空间。

在数据复制技术中需要临时dbspace 是因为在只读的服务器上进行查询操作时也需要一些临时的磁盘空间来存放中间结果。

因此,临时dbspace 是从服务器唯一可写的dbspace。

---- 设定配置参数DBSPACETEMP 指向所创建的临时dbspace。

---- 2. 设定DR 配置参数。

---- 在onmonitor 的数据复制画面中有四个输入域:
* Interval 域或DRINTERVAL 配置参数用于说明相邻两次刷新数据复制缓冲区的最大时间间隔。

它是针对主服务器设定的。

如果置为-1, 说明使用同步更新模式。

如果置为任何正整数,则说明使用异步更新模式,时间间隔以秒为单位,缺省值为30 秒。

如果数据库采用以缓冲方式记日志模式,同时数据复制服务器又采用异步更新模式,那么可以把参数DRINTERVAL 置为缺省值30 秒,以使网络延时最小化。

如果要使从服务器包含所有主服务器中已提交的事务,那么需要将数据复制服务器配成同步更新模式,同时数据库应采用以非缓冲方式记日志的模式。

* Timeout 域或DRTIMEOUT 配置参数是用来说明在同步更新模式时,数据复制服务器对儿中一方等待来自另一方的确认信息的最大时间间隔。

若该确认信息在指定的时间间隔内没有到达,那么等待的一方就认为有故障发生。

---- 参数DRTIMEOUT 也是用于测试服务器联接的ping 线程睡眠的秒数。

* Auto 域或DRAUTO 配置参数用来决定到从服务器的切换工作是自动完成还是通过手动完成。

通过对它的设置可以指定从服务器如何响应主服务器的失败。

它的值在主、从服务器上必须设成一样的。

其可选值有以下三种:
DRAUTO=0 说明从服务器在主服务器发生故障时仍旧保持原有模式,由系统管理员手动将其切换成标准数据库服务器模式(即可写模式)
DRAUTO=1 说明从服务器在主服务器发生故障时自动切换成标准服务器模式,并且在数据复制服务器重新启动后重新切回原模式。

DRAUTO=2 从INFORMIX-Online Dynamic Server版本7开始,增加了一种新的自动切换模式-REVERSE_TYPE。

它是指从数据库服务器在主服务器发生故障时自动切换成标准数据库服务器模式,并且在数据复制服务器重新启动后,使自己成为主服务器,而原来的主服务器成为从数据库服务器。

---- 值得注意的是:当使用数据复制服务器的自动切换特性时必须小心,因为任何类型的数据复制失败都有可能导致从服务器自动切换成标准服务器模式。

这些失败包括网络失败或处理延时(超过了DRTIMEOUT 设定的时间间隔)。

* Lost&Found 域或DRLOSTFOUND 配置参数用于设定丢失并且被找到的事务文件的路径名。

---- 五、如何启动数据复制服务器
---- 在开始启动数据复制服务器之前应检查主、从数据库服务器的用于联接的配置参数是否设置正确。

若要建立不同主机上数据库服务器之间的联接可按以下步骤进行:
* 为数据库服务器选择合适的NETTYPE 参数。

远程联接必须使用TCP/IP 协议。

可以通过查看文件$INFORMIXDIR/release/machnotes 来确定你的系统是使用sockets 还是TLI。

* 在$INFORMIXDIR/etc/sqlhosts 文件中为你的本地数据库服务器想要联接的远程数据库服务器创建一行。

* 使两个数据库服务器均启动为联机模式。

* 在两个数据库服务器中创建用于测试的数据库和表,然后执行如下的远程SELECT 语句:
database localdb
select * from remotedb@remotesvr:table
---- 在测试两端的数据库服务器能够建立联接之后,就可开始按以下步骤启动数据复制服务器了。

INFORMIX-Online Dynamic Server 使用备份和逻辑日志作最初的从主数据库服务器到从数据库服务器的复制工作。

通常步骤如下:
---- 在主数据库服务器上进行
---- 1. 对主数据库服务器进行一次0 级备份。

---- 2. 备份主数据库服务器的逻辑日志。

---- 3. 执行以下命令使自己成为主数据库服务器:
onmode -d primary sec_name
---- 其中sec_name 是从数据库服务器名,是由参数DBSERVERNAME 指定的。

---- 执行完该命令后,确认消息日志文件中应出现以下信息:
DR: new type = primary, server name = sec_name
DR: Cannot connect to secondary server
---- 在从数据库服务器上执行
---- 4. 用在主数据库服务器上进行的0 级备份在从数据库服务器上进行物理恢复。

该备份可通过网络由主数据库服务器传到从数据库服务器上,也可通过在从数据库服务器上指定远程磁带机的方法获得。

例如:TAPEDEV hostname:/dev/rst0
---- 在从数据库服务器上进行恢复的过程中,当被问及是否想要备份逻辑日志时,一定要回答n,因为在恢复过程中用不着从数据库服务器上的逻辑日志。

---- 5. 执行以下命令使自己成为从数据库服务器:
onmode -d secondary primary_name
---- 其中primary_name 是主数据库服务器名,是由参数DBSERVERNAME 指定的。

---- 执行完该命令后,确认消息日志文件中应出现以下信息:
DR:new type = secondary ,server name = primary_name
---- 6. 进行逻辑恢复。

从数据库服务器会询问并读入在0 级备份以后备份的逻辑日志磁带。

一旦,最后一盘磁带被读完,从数据库服务器就会联接到主数据库服务器,并开始读取自上一次进行逻辑日志备份以来积累在主数据库服务器一端的日志记录。

这些记录被通过网络传送到从数据库服务器一端,然后被用于在从数据库服务器上重演。

在重演结束以后,数据复制服务器就可以开始运作了。

---- 执行完以上步骤以后,在主数据库服务器一端的消息日志文件中应出现以下信息:
DR: Primary server operational
---- 在从数据库服务器一端的消息日志文件中应出现以下信息:
DR: Secondary server operational
---- 注意:如果使用ontape 实用程序在从数据库服务器上进行恢复时,不要使用ontape -r。

而应通过使用-l 和-p 选项分别进行逻辑恢复和物理恢复。

即用ontape -p 进行物理恢复。

用ontape -l 进行逻辑恢复。

---- 六、如何使客户端程序重定向至新的数据复制服务器
---- 在启动客户应用程序之前,设置DBPATH 依此指向主服务器和从服务器。

客户应用程序将自动按照DBPATH 中指定的顺序检查被列出的服务器是否包含目标数据库,如果当前的服务器不可到达,那么它将检查下一个服务器。

由于DBPATH 的顺序十分重要,所以要把希望访问的服务器放在前面。

例如,通常要访问的主服务器为ny_soc,则DBPATH 应设为:
export DBPATH=//ny_soc://lond_soc
---- 如果你的客户应用程序是只读的,那么你也许想访问从服务器,则DBPATH 应设为:
export DBPATH=//lond_soc://ny_soc
---- 这种方法只有在客户应用程序使用CONNECT 语句时才起作用。

如果客户应用程序使用的是DATABASE 语句与服务器建立联接,那么当服务器故障时,客户应用程序就会失败。

相关文档
最新文档