第五章 数据库服务器系统的安全机制
在一个运行的数据库服务器系统中,有可能会出现以下三种数据库服务器系统故障:
1. 由于主机服务器的非正常停机,例如断电等,而导致的数据库服务器系统异常;
2. 由于主机服务器系统的存放数据磁盘故障,而导致的数据库服务器系统异常;
3. 由于主机服务器的关键部件故障,而导致的数据库服务器系统异常。
对于以上三种数据库服务器系统异常,OnLine采用如下四种方案来实现数据库服务器系统高可靠性:
1.快速数据恢复机制使得主机服务器在非正常停机后的重启时,将未提交的事务滚回,以 恢复停机前的数据一致性;
2.数据库空间镜像机制使得主机服务器在存放数据一个磁盘发生故障时,能借助镜像数据 空间继续工作,数据库系统管理员可以在适当的时候去恢复故障的磁盘;
3.远程数据复制机制将一个主机服务器上数据库系统复制到远地的备份服务器上,当本主机 服务器故障时,数据库服务器系统借助远地的备份服务器继续工作;
4.增量数据备份,使得数据库系统管理员可以在监控和联机状态下进行三个等级的数据备 份。当系统需要使用磁带数据备份恢复时,快速而有效。 OnLine 动态服务器 7.1不但支持数据库系 统的冷恢复,还支持数据库系统管理员的热恢复,即允许数据库管理员在联机状态下,恢复损坏的 数据库空间。
远程数据复制
镜像数据存储块是数据库服务器系统的高可用性的一种方案。 OnLine 动态服务器7.1为数 据 库系统提供的另一种高可用性方案是远程数据复制。 通过网络连接起来的计算机系统的互为备 份 来 提高数据库服务器系统的可用性。
在这两个数据库服务器系统中,主数据库服务器Priamry Server可以接受数据的读写操作, 例如select、insert、update和delete,而备份数据库服务器Second Server仅可以接受读的操作,例如 select。 通常有主数据库服务器来承担企业事务处理的操作和批量数据修改的操作,备份数库据服 务 器承担企业内部的决策支持作业。为了提高主机服务器的利用率,可以在这两个主机服务器上 分别 建两个数据库服务器系统,使得一台主机服务器在作备份数据库服务器的同时作主数据库服务器, 或者在作主数据库服务器的同时作备份数据库服务器。两个数据库服务器必须通过TCP/IP网络协议 来联接,两台数据库服务器可以在同一个局域网上也可以在广域网上,两台数据库服务器的底层可 以用多种物理方法互联,例如以太网、X.25网等等。
数据复制的原理是,当一个事务操作在主数据库服务器上进行的时候,将数据变化的轨迹从数据库服务器系统的逻辑日志缓冲区(Log. Log Buf )中复制到复制缓冲区(Data Replication Buffer, DR Buf)中,然后通过计算机网络送到远地的备份数据库服务器的逻辑日志缓冲区中, 再由备份数据 库服务器对其操作,写入备份数据库服务器的数据库系统中。因此数据复制 机制的前提是这两个数 据库必须带有日志。 平时,主数据库服务器处于online状态,而备份数据 库服务器则处于read only状态。当主数据库服务器非正常关闭时,备份数据库服务器进入 online 状态。
两个数据库服务器系统的数据库空间组织、数据存储块结构、大小以及数据库日志必须完全一致。 由于两台主机服务器的硬件结构可能不一,因此在数据库服务器系统定义时,请不要直 接使 用设备 名。在建立数据库服务器系统时,将磁盘设备名联接到一个别名上,如
# ln -s /dev/rdsk/1s0 online1
这样可使两台数据库服务器具有相同数据库空间名和数据存储块名。
两个数据库服务器系统的切换分手动 (MANUAL)和自动 (AUTO)两种方式,而自动切换又 分保留方式 (RETAIN TYPE)和对换方式 (REVERSE TYPE)。手动切换方式当主数据库服务器关闭 以后需要数据库管理员启动备份数据库服务器,使之进入online状态;自动切换方式当主数据库服务 器关闭以后,备份数据库服务器会自动进入online状态,当主数据库服务器系统恢复后,如果我们采用保留方式,那么备份数据库服务器通过 Shutdown 状态回到Read only状态,主数据库服务器启动 后进入Online状态,两个数据库服务器系统的责能不变;如果我们采用对换方式,那么备份数据库服务器保持Online状态不变,主数据库服务器启动后进入Read only状态,相当于原备份数据库服务器上 升为主数据库服务器,而原主数据库服务器降级为备份数据库服务器,两个数据库服务器的责能对 换。可以看到,手动方式需要管理员的控制才能切换,所以它不会因网络的不稳定而错误切换;自 动方式不需要管理员干预切换,如果主数据库服务器系统应答超时太小,可能会引起备份数据库服 务器错误地进入Online状态,因此那些预想的当主数据库服务器系统非正常关闭时,要求备份数据库服务器零时间(极短时间)等待启动在实际意义上是不可行的,通常数据库服务器系统的应答超时可为15秒至60秒。对自动方式的系统,当主数据库服务器系统恢复后,采用保留方式时,备份数据库服 务器需要经过Shutdown状态才能进入Read only状态,当有大量联机用户工作时,这个状态的时间也 许是比较常的;而采用对换方式时,备份数据库服务器系统保持Online状态不变,原主数据库服务器启动以后进入 Read only 状态,因此 相对于保留方 式,它对联机用户操作的影响较小。
建立数据库复制系统的步骤是:
首先使用 ln命令分别在两台主机服务器建立完全相同的数据存储块名;
第二在Quiescant状态下对主数据库服务器系统作0级数据备份和逻辑日志备份;
第三 将主数据库服务器系统定义为 Primary 并使之进入 Online 状态;
第四将主数据 库服务器系统的 0级数据备份用冷恢复到备份数据库服务器上;
第五经备份数据库服务器定义为 Secondary;
第六将 主数据库 服 务 器系统的逻辑日志备份恢复到备份数据库服务器上并使之进入Read only 状 态。
下面我通过一个例子来说明数据库服务器复制系统的建立过程。
主数据库服务器和备份数据库服务器都建立在SCO UNIX 3.2.4.2的操作系统环境上, 它们 分 别名为server_A 和 server_B,它们的号分别为101和102。
第一步:建立数据库服务器,有三个数据库空间,它们是rootdbs、workdbs和logdbs,分别 用于存放数据库系统的描述信息、用户数据和数据库日志。 每个数据库空间都只对应于一个数据存 储块,它们所对应的磁盘都分别被联接到别名rootchuck1、workchuck1和logchuck1。 将两个数据库 服务器系统关闭。在设定DATA REPLICATION的屏幕中,将Interval设置为15秒, 表示每 15 秒钟 将主 数据库服务器系统的数据传输至备份数据库服务器,将Timeout设置为15秒,表示应答时 间大 于15秒钟时,备份数据库服务器系统进入OnLine状态,同时将Auto设置为1,表示自动切换并取保留方式。
---------------------------------------------------------------------------
DATA REPLICATION: Make desired changes and press ESC to record changes.
Press Interrupt to abort changes. Press F2 or CTRL-F for field-level help.
DATA REPLICATION PARAMETERS
Interval [ 15]
Timeout [ 15]
Auto [1]
Lost & Found [/usr/informix/etc/dr.lostfound ]
第二步:启动主数据库服务器server_A,使之进入Quiescent状态。然后用ontape -s和ontape -a作0级数据备份和逻辑日志备份,逻辑日志备份时当前的逻辑日志文件也要备份。
第三步:用onmode -d primary server_B设置该数据库服务器为server_B的主数据库服务 器, 然后使用命令 onmode -m 使server_A进入OnLine状态。
第四步:将0级备份磁盘装入备份数据库服务器的驱动器中,用 ontape -p 命令将备份恢复到 备份数据库服务器上,当数据库服务器提示是否备份逻辑日志时,回答 N。
第五步:用 onmode -d sercondary server_A 设置该数据库服务器为server_A 的备份数据 库服务 器。
第六步:将逻辑日志备份磁盘插入备份数据库服务器的驱动器中,用命令 ontape -l 来滚回0 级数据备份以后的数据操作。全部操作结束后,备份数据库服务器便进入 Read only状态。
接下来我们验证所做的数据库复制系统。取两台终端,1号终端登录server_A,2号终端登 录server_B。
第七步:在1号终端上使用命令dbaccessdemo7-log建立演示数据库stores7。 在2号终端上, 在dbaccess中选择Database菜单,反复选择Select项,在15秒钟以后,屏幕上将出现stores7的数据库 名字。
第八步:在1号终端上,在dbaccess中选择QueryLanguage菜单中的New项,输入
insert into customer (fname,lname) values ("AA","BB");
然后再按ESC键,退出SQL的编辑状态。在2号终端上,也在dbaccess中选择QueryLanguage 菜单中的New项,输入
select count(*) from customer where fname="AA" and lname="BB"
然后再按ESC键,退出SQL的编辑状态。
我们在1号终端上,按两下R,然后在2号终端上反复地按R,大约15秒钟,2号终端的屏幕会显示出计数为2。
第九步:在1号终端上,退出dbaccess,然后输入命令onmode -ky, 关闭主数据库服务器系 统。 在2号终端上,我们现按!,然后输入onstat -ur,我们将先看到数据库服务器的状态为Read only, 然后变成 Recovery,最后变成Online,这时我们按DEL键。我们再次选择New,输入命令:
insert into customer (fname,lname) values ("CC","DD")
然后再按ESC键,退出SQL编辑状态,按三次R,接着我们退出dbaccess。在命令行输入命令onstat -ur。
现在我们在1号终端上输入命令oninit和onstat -ur。1号终端上马上显示数据库服务器系统为 Fast recovery。这时2号终端上显示数据库服务器系统的状态变为Shutdown。几分钟后,1号终端上 显示上显示主数据库服务器系统的状态回到 Online,而2号终端上则显示备份数据库服务器系统的 状态回到原先的Read only。
第十步:我们在1号终端上,再次进入dbaccess,选择Query Language中的New项,输入
select fname,lname from customer where fname="CC"
运行该语句。终端屏幕上将显示出 数据“CC”和“DD”。
至此我们的例子做完了。当关闭数据库服务器复制系统时,我们应该先备份数据库服务器后主数据库服务器。而启动时则应先主数据库服务器后备份数据库服务器。
阅读(1365) | 评论(0) | 转发(0) |