李海浩
(中国人民解放军91413 部队,河北 秦皇岛 066000)
随着船舶设备软件的飞速发展,数据库已经成为其组织和管理数据的必需成员。由于Oracle 数据库相对其他数据库显现出稳定性好、安全性高、数据处理性能强等优点,逐渐成为船舶设备软件数据库的首选。Oracle 数据库高可用方案往往需要资深的数据库管理工程师的配合与维护,而船舶设备软件的操作船员无法实现相关维护。根据Oracle 数据库的高可用方案的功能与使用方法,结合船舶设备的使用特性,提出了一套适用于船舶设备软件的Oracle 数据库方案,对船舶设备软件数据库的应用具有一定的借鉴意义。
高可用性有两种不同的含义,在广义环境中是指整个系统的高可用性,在狭义方面一般指主机、服务的冗余。高可用性不仅包含了系统本身故障、应用层的故障、网络故障、人为操作的错误等,还包含数据的冗余、容灾及计划的维护时间等。
RAC 通过不同的节点使用一个或多个Oracle 实例与一个数据库连接,该数据库存放于多个节点的公用存储上,通过高速缓存合并技术使得集群中的每个节点都可以通过高速集群互联高效的同步其内存高速缓存,从而最大限度的降低磁盘IO,并自动并行处理及均匀分布负载,当其中一个节点发生故障时,可以自动容错和恢复能力来实现节点的故障切换,从而保证数据库长时间的高效可用。
Data Guard 一般包括两套数据库环境,一台主要数据库,一台备用数据库,与RAC 不同的是只有一个节点处于活动状态,所有应用都连接到主服务器上,只有当主服务器发生故障才考虑切换到备用服务器。Oracle Data Guard 可以实现数据库主机及存储的完全冗余保护,该冗余甚至可以跨地域做成容灾保护,是Oracle 主推的容灾产品。在这种模式下,主数据库必须运行在归档模式下,以保证备用节点的数据一致性,因此该特性并不适合数据仓库。
Oracle 数据泵方案利用Oracle 数据泵技术,结合操作系统脚本与计划任务,搭建一套适用于船舶设备软件使用环境的数据库方案。该方案以Oracle 10g 数据库与Solaris 10 操作系统为例进行数据泵的搭建。
Oracle 10g 的数据泵技术能够帮助用户将数据库的数据和元数据快速移动到另一个Oracle 数据库中。数据泵导出是使用EXPDP 工具将数据库对象的数据或元数据导出到转储文件中;数据泵导入是使用IMPDP 工具将转储文件中的数据或元数据导入到Oracle 数据库中。数据泵导入导出可以再数据库用户之间、数据库之间进行数据的移动。
使用两台数据库服务器,分别安装Oracle 10g 数据库,每台服务器拥有独立的存储,一台高配置的服务器作为主数据库服务器,另外一台作为备用数据库服务器。
数据泵方案的基本内容如下:
(1)将主数据库导入到备用数据库的命令形成脚本,在备用数据库所在操作系统通过计划任务定期运行,而不需要对主数据库服务器进行任何配置;
(2)在完成主数据库导入到备用数据库操作后,使用EXPDP 工具将备用数据库导出到备用数据库服务器本地文件系统;
(3)每一天夜间对主数据库进行数据泵导出,导到主数据库服务器本地文件系统,在主备数据都出现故障时恢复数据使用;
(4)当系统管理员需要对数据库进行及时备份时,可以直接调用备份脚本;
(5)编写主数据库自动启动脚本,使主数据库服务器开机后自动启动数据库服务,并启动数据库监听;
(6)编写主数据库自动关闭脚本,使主数据库服务器关机时自动关闭数据库服务;
(7)编写备用数据库自动启动脚本,使备用数据库服务器开机后自动启动数据库服务,但不启动备用数据库的监听程序;
(8)编写备份数据库自动关闭脚本,是备用数据库服务器关机时自动关闭数据库服务。
备用数据库同步与备份脚本如图1 所示:
在使用主数据库时,主数据库的监听程序处于启动状态。当发生故障时,关闭主数据库的监听程序,启动备用数据库的监听程序,令备用数据库对外提供服务。
上述备用数据库从主数据库中同步数据的脚本运行周期需要适当地选取。不同的数据库环境同步的时间是不相同的,从几分钟到几十分钟不等。如果在一次同步尚未结束时,又开始了另一个同步操作,虽然不会出现错误,但会出现排队现象,主数据库的性能也会降低。选择同步的周期可以根据使用数据库的频率和新增数据的重要性来选取。
另外,数据泵方案使用的是Oracle 数据库的逻辑备份工具,解决的是数据库数据失效的问题,对于物理文件的恢复不具有解决能力
测试环境的主数据库机器选择Sun Fire V490 服务器、双核1500MHz 的CPU、8G 内存,备数据库机器选择Dell OPTIPLEX780 台式机、2926MHz 的CPU、2G 内存。使用Quest Spotlight On Oracle 测试工具监视Oracle 数据库服务性能,包括CPU、内存、网络的使用情况;Benchmark Factory 测试工具测试数据库性能和扩展性,在非生产环境下模拟成千上万用户在实际数据库上的事务处理。
(1)在备用数据库上运行脚本,一次将主数据库scott 用户的所有对象导入备用数据库。结果:导入成功,耗时4 分钟。
(2)在备用数据库上运行脚本,仅将主数据库scott 用户的表数据导入备用数据库,导入数据量500M。结果:由于备用数据库在做改变时不断写归档日志,当归档日志空间未满时,耗时3 分钟;当归档日志空间已满时,不能完成导入。
(3)将备用数据库改为非归档模式,在备用数据库上运行脚本,仅将主数据库scott 用户的表数据导入备用数据库,导入数据量为500M。结果:导入成功,备用数据库在做改变时不再写归档日志,耗时2 分钟。
(4)在主数据服务器上运行脚本,将主数据库scott 用户的表数据导出到主数据库服务器文件系统,即生成dump 文件。结果:导出成功,耗时小于2 分钟。
(5)联机重做日志设置为3 组,每组3 各成员,每个成员50M。联机重做日志在备用数据库所在操作系统上设置计划任务,每3 分钟同步一次。结果:运行2 天后,联机重做日志写入出现故障。
(6)联机重做日志设置为7 组,每组3个成员,每个成员200M。联机重做日志在备用数据库所在操作系统上设置计划任务,每5 分钟同步一次。结果:运行8×24 小时,正常运行。
数据泵方案能够满足功能以及特定的性能需求,操作简单。数据泵方案的同步过程会不断的修改备用数据库,产生大量重做日志,如果重做日志的组数较少,会导致一组日志尚未写完,又一个写操作已经来临,可能导致重做日志写失败使重做日志损坏。因此备用数据库要指定多组重做日志组,每组的成员不能太少,如果备用数据库处于归档模式,很快归档空间就会装满导致数据库无法启动,因此备用数据库处于非归档模式。
通过对Oracle 数据泵方案的测试,此方案得到了验证。Oracle 数据泵方案能够有效的满足数据库高可用性,同时兼顾方便船员的使用,充分考虑了不同的使用环境、不同使用需求,提高了设备软件数据库的可用性、可维护性。此方案在应用时,用户应当根据具体需求,考虑调整同步的周期、数据库日志的配置以及对应的备份策略等方面的问题。
[1]吕海波.Oracle 内核技术揭密[M].机械工业出版社,2014,09:113-149.
[2]林树泽,李渊.Oracle 数据库进阶——高可用、性能优化和备份恢复[M].北京:清华大学出版社,2011.