欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    商用库部分系统服务培训.doc

    • 资源ID:3702738       资源大小:339KB        全文页数:22页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    商用库部分系统服务培训.doc

    商用库部分系统培训国电南瑞科技股份有限公司电网控制分公司新系统平台开发组2005年01月目录引言3一. 历史数据服务的定义以及在新系统中的定位4二历史数据服务包含的内容和相应的分类8三历史数据服务和数据库服务器的联接方式10四数据复制与同步服务的实现方式12五新系统中1+N功能的实现机制15六数据库服务器的异常处理和切换机制16七历史数据采样简介18八缓存机制以及缓存目录20九数据追捕的作用以及工作流程21十其他服务211.模型更新服务212.直接SQL服务213历史数据查询以及统计服务224历史数据修改服务225商用库告警服务22引言在新一代电力调度自动化系统的统一支撑平台中,历史数据服务作为数据库管理系统的重要组成部分,扮演着重要的角色。这些服务和其它各类服务之间的一个最重要的区别就是它们需要直接和商用数据库进行联接并交换数据,要注意的是这些服务的运行往往需要数据库(ORACLE、SYBASE等)客户端动态库支持。由于读写商用数据库的实质是磁盘文件的I/O操作,在三层体系结构中还需要通过网络进行访问,其速度和实时系统有着数量级上的差别,所以对于历史数据服务来说,首先需要解决的是相对慢的读写速度和系统连续不断读写需求(如高频率采样、画面上的不间断查询)之间的矛盾,确保商用数据库的操作不会成为整个系统正常运转的瓶颈。另外,由于系统中存在着冗余配置的数据库服务器,包括主备数据库服务器、镜像服务器、灾备服务器以及在安全隔离区以外的WEB服务器等。系统需要保证在各种配置和各种情况下数据库服务器之间数据的同步和一致,因此,数据的复制和同步机制变得非常重要。再者,考虑到调度自动化系统的高可靠性要求,系统不仅在正常情况下能够高效处理数据,还必须具备在恶劣的外部环境下确保可靠运行。例如,在数据库损坏或者网络异常中断的情况下如何保证系统还能保持大部分的功能不受影响,在切换的过程中如何保证数据没有丢失等等。因此,数据库服务器以及相关的应用服务器的异常处理和切换机制也是新系统平台中十分关注并且需要很好解决的问题。一. 历史数据服务的定义以及在新系统中的定位在新系统的统一平台中,十分强调服务的概念。所谓服务(SERVANT),也就是一个或者一组运行在相关服务器上的后台进程(多线程),它们为其它的各个客户进程提供数据的查询、更新以及应用逻辑的处理,使得数据的处理能够集中在服务器上,客户端只要关注自己的人机交互以及某些应用逻辑。这同时也是新系统C/S/S结构的要求。在新系统的平台设计中,存在着众多的服务。例如,下装服务、数据更新服务、查询服务、任务管理服务、告警服务、系统配置服务、日志管理服务、历史数据采样服务等等。在这些众多的服务当中,有一类服务需要直接和商用数据库打交道,如下装、数据更新、查询、历史数据采样等(实际上,在商用库部分实现中,诸如历史数据采样等的服务我们并不划分在历史数据服务中,以后的篇幅中我们会逐步阐述其中的原因)。我们将所有和商用数据库打交道的服务以及支持商用数据库之间复制和同步的服务统称为历史数据服务。那么,在整个新系统的体系当中,历史数据服务究竟处于什么位置,完成什么样的功能呢?在回答这个问题之前,我们先要阐明几个和C/S/S结构有关的概念。所谓C/S/S结构,简单地说,指的是系统硬件和软件的三层体系结构。一方面是将整个系统的结点划分为客户机、应用服务器和数据库服务器三个层次,另一方面是将所有的软件划分为客户应用软件、应用服务软件和数据库管理软件三个层次。其中,客户应用软件主要处理人机交互以及某些应用逻辑;应用服务软件完成大部分的应用逻辑处理以及和数据库的交互;数据库管理软件完成数据的存储、组织和管理。具体应用到我们的新一代调度自动化系统中,上述所有的那些服务在物理上就应该驻留在应用服务器当中。结合新系统的体系结构设计方案,应用服务器又可以分为SCADA应用服务器、PAS应用服务器、前置应用服务器等,根据每个服务的不同性质,将这些服务分布在各个服务器结点当中,相互配合、协调来完成整个系统的功能。那么,我们提到的历史数据服务应该位于哪个应用服务器上呢?为了解答这个问题,我们需要将各种类型的服务器进行一些概念上的定义和明确。这些术语贯串了整个设计方案。Ø 数据库服务器安装了具体商用数据库(ORACLE)的服务器结点。Ø 应用服务器专门负责处理应用或者业务逻辑的服务器,其上运行着众多的服务进程。但是,这些进程不和商用数据库直接联系。Ø 历史数据服务器专门负责处理和商用数据库直接交换数据的服务器,其上运行着我们的历史数据服务进程。必须指出,所谓的应用服务器和历史数据服务器都是逻辑上的概念,其逻辑划分是以服务的性质来决定的,并不是一个系统中必须在物理上配置这些独立的硬件。也就是说,应用服务器完全可以和历史数据服务器共存于一个物理结点中,或者,三种服务器都共存于一个物理结点中。但是,在逻辑上,特别是软件的逻辑划分上我们采用这些术语,以方便整个方案的阐述,不致引起概念的混淆。现在,我们可以比较明确地回答上面遗留的问题了。历史数据服务在逻辑上分布于历史数据服务器当中(不得不再次强调历史数据服务器是一个逻辑概念),它们主要完成和商用数据库直接交换数据的功能,其结果(数据的查询和更新)被其它服务进程或者客户应用进程引用。为什么要单独将历史数据服务以及历史数据服务器划分为一个逻辑上的概念呢?其一,这主要是为了解决在引言部分提出来的第一个问题,即商用数据库相对实时系统较慢的处理速度不能成为整个系统正常运转的瓶颈。例如,在很多调度系统中,包括现在的OPEN2000系统,历史数据采样进程在一个时间周期内(通常是5秒),既要从实时库中读取所有需要采样的遥测的数据和状态值,又要将这些数据拼接成相应的SQL并在数据库中执行。在数据量较大或者突发紧急事件(CPU负荷短暂地升高)的情况下,这些涉及到磁盘I/O操作的SQL执行根本就来不及处理,以至于会经常造成漏掉采样点的情形。为了避免这种情况,我们需要将SQL执行的部分单独提取出来作为一个服务,使得采样服务专心处理实时数据的读取(在内存中处理),而不至于因为SQL的执行速度慢导致漏掉下一个采样周期。这也是前面提到历史数据采样服务不被划分在历史数据服务中的最重要的原因。其二,由于系统中分布着各种应用服务器(SCADA,PAS,前置等),出于效率上的考虑(主要是尽量避免从网络上读取实时数据),一些服务进程会同时分布于各台应用服务器上。同样以采样为例,新系统中采样服务是作为公用服务提供给各个应用使用,也就是每个应用都拥有自己的数据采样服务。由于不同应用在物理上可能的不同分布,所以采样服务也会同时分布于各个应用服务器中。如果不将其中的SQL执行部分划分出来,则势必在每个应用服务器上都需要相应的商用数据库客户端软件。这样,和我们的C/S/S结构就存在一些冲突,同时也会潜在地增加系统的成本。其三,这样的划分有助于简化数据库服务器的复制、同步、异常以及切换时的处理机制。在考虑上述可靠性要求的时候,我们的视线只要集中于那些直接和商用数据库打交道的服务进程,也就是我们的历史数据服务。这样,可以对历史数据服务采用统一的机制来解决这些问题。将来增加其它的服务或者应用进程时,只需要将和数据库相关的部分提交给历史数据服务来处理,而无须关心数据库服务器的诸多可靠性要求。图1表示了各种服务器和相应的服务在整个系统中的分布。图2表示了各种服务器以及客户机在数据处理上的层次关系。图1 数据库服务器、历史数据服务器、应用服务器以及各种服务在系统中的分布图2 各种服务器以及客户机在数据处理上的层次关系二历史数据服务包含的内容和相应的分类从前面给出的定义可以看出,所有和商用数据库直接进行数据交换以及支持数据库服务器的复制和同步的服务都属于历史数据服务。所以,历史数据服务实质上是一个服务包。这个包中拥有下列服务进程:Ø db_modify_server 模型更新服务提供客户端或者应用进程通过约定的接口进行数据库更新操作的服务。该服务的特点是调用方需要立即知道执行的结果,并且需要同步更新每个应用服务器上的实时数据库。Ø sql_sp_server 直接SQL以及存储过程服务提供客户端或者应用进程通过直接SQL语句或者执行存储过程来进行数据库更新操作的服务。该服务的特点是调用方需要立即知道执行的结果,但是无需同步更新实时数据库。Ø db_commit 数据提交服务提供给一些需要更新商用数据库数据的服务进程(如采样、告警登录等)提交各自形成的SQL命令的服务。该服务的特点是调用方并不等待(或者说不关心)SQL命令执行的结果,但是存在着时序相关和时序无关两种类型。基于效率的和并行操作的考虑,该服务其实包含2个进程。db_commit sample(采样)db_commit scada(除采样外的其它数据)Ø download_server 数据下装服务提供将商用数据库的数据下装到实时数据库的服务。该服务的特点是没有数据库更新操作,本质上属于查询操作。Ø query_sample_server历史数据查询统计类服务提供客户端或者应用进程进行历史数据查询以及统计的服务。该服务的特点也是没有数据库更新操作。Ø db_replicate 复制处理服务所有上述这些服务进程并不直接同步其它的数据库服务器,而是统一通过调用复制动态库来完成上述工作。该动态库的特点是并不直接和数据库打交道,仅仅将数据复制请求写入复制请求文件队列。然后再由db_replicate程序处理相应的文件队列,并对远程数据库服务器进行实际的数据复制和同步工作。因此针对系统中的每一个数据库服务器,都有一个db_replicate服务进程与之对应。从上面的分析可以看出,虽然同属于历史数据服务,但是各个不同的服务完成不同的功能,并且具有不同的特点。而这些特点决定了其在数据提交、复制以及后面要讨论的数据库服务器切换过程中的机制会有所不同。为了方便阐述,我们根据它们不同的特点将这些服务划分为以下五类:Ø 查询类服务包括download_server,数据查询和数据统计服务。Ø 需要知道执行结果的数据更新类服务,简称为更新类服务包括db_modify_server,sql_sp_server两个服务,本质上是时序相关的。Ø 时序相关的数据提交服务,简称相关提交类服务包括和时序相关的数据提交服务。如发生遥信变位后,将开关状态写入开关表中,这种数据提交操作无论在复制还是切换过程中都有着严格的时间顺序要求,否则将可能产生错误的结果。Ø 时序无关的数据提交服务,简称无关提交类服务包括和时序无关的数据提交服务。如采样或者事件登录,由于形成的SQL命令中本身带有时标,所以在复制或者切换过程中无所谓执行的先后顺序。Ø 复制类服务包括db_replicate服务进程,负责数据复制和同步工作。在下面的篇幅中,我们将使用以上的分类方法和对应的术语。三历史数据服务和数据库服务器的联接方式前面提到,所谓历史数据服务,都是需要直接和商用数据库交换数据的服务进程。那么,在明确了历史数据服务的定义以及其包括的内容以后,我们需要关注一下它们和数据库服务器的联接方式。根据系统的不同规模和用户的不同要求,系统中存在各种各样的数据库服务器。一般说来,我们可以将系统中的数据库服务器分为以下几种类型:主数据库服务器、备数据库服务器、灾难备份数据库服务器、镜像数据库服务器以及WEB数据库服务器。其中,主备数据库服务器是系统运转的核心数据存储结点,其它的数据库服务器都通过系统的复制机制保持同步。其实,主备数据库服务器可以不止两台,可以是多台,而且并不是传统的主备之分,只有优先级之设定,个中理由将在后续篇幅中逐步阐明。之所以称为主备数据库服务器,主要是为了叙述上的方便。每个历史数据服务进程根据不同的性质都需要建立和上述的各种数据库服务器的联接,才能和数据库进行通讯和交换数据。基于系统的三层架构,这些服务和数据库的联接只能通过网络方式进行,即通过指定主机、端口号以及数据库实例和特定的数据库建立联接。由于我们在系统中采用双网的连接方式,所以我们首先要考虑和解决的就是如何克服单网卡故障带来的数据库联接的中断问题。幸运的是,在新系统的平台设计中,网络管理服务恰好提供了上述问题的解决方案。该服务(net_pathing)的一个重要功能就是能够完全屏蔽结点的多个网卡地址,提供给其它应用和服务进程的是一个该结点的虚拟地址。对于系统中所有的应用和服务进程来说,面对的只是一个地址,对于目标结点来说,只有网络正常和网络中断两种状态,而无须考虑双网(或者多网)的切换。这样,在和数据库服务器的联接中我们完全不需要考虑单网卡故障带来的中断和切换问题。接下来,我们需要关注每个具体的历史数据服务和前面提到的各种数据库服务器的联接方式。经过分析我们发现,由于系统的主备数据库服务器是数据复制的源头,所以除了db_replicate进程以外,其它所有的历史数据服务进程都只需要和主数据库服务器通讯。而db_replicate需要和所有的数据库服务器相连(WEB的情况比较特殊,因为其在安全隔离区之外,在后面的数据复制与同步机制中有详细讨论)。另外,需要指出的是,复制动态库不和任何数据库服务器联接。在系统正常运转的情况下,所有的历史数据服务进程(无论是在主历史数据服务器还是备历史数据服务器上)都和当前的主数据库服务器建立联接并交换数据,备数据库服务器的数据通过复制机制进行同步。当主数据库服务器的联接发生中断,这些进程重新建立和备数据库服务器的联接,同时备升为主,并保持主服务器状态。这样的处理方式使得历史数据服务进程的数据流程比较简明、清晰,并且可以有效地克服交叉故障的情况。在以后的章节里将详细阐述各种情况下数据库服务器的复制、异常和切换机制。图3表示了各历史数据服务进程和各个数据库服务器的联接方式。其中,虚线代表了在备数据库服务器值班的情况下的联接。图3 历史数据服务进程和数据库服务器的联接方式四数据复制与同步服务的实现方式数据的复制与同步,也就是各个数据库服务器中的数据保持一致,一直是困扰着国内各EMS和DMS厂商的一个大问题。这个问题如果不能真正解决好,系统的可靠性也就会相应地大打折扣。因此,在新系统的整体设计,特别是数据库系统的设计中,这个问题得到了我们特别的关注。我们一直在寻求一些比较成功和可靠的商业解决方案。不幸的是,由于电力调度系统具有连续运行、实时、数据量大、切换速度要求很高以及自身特殊的安全性规定等特点,使得目前我们还没有找到合适的产品。主要的原因有以下三点:Ø 这些商业解决方案基本上都必须通过数据库日志来实现。而我们的系统由于数据量非常大,一般不能保存这些日志,否则数据库的日志会很快占满整个数据库空间。这也是我们为什么需要选择自动清除日志的数据库选项(SYBASE),或者必须运行在非归档模式(ORACLE)下的根本原因。Ø 电力调度系统要求的切换速度很高,一般的商业解决方案无法达到这些时间指标。Ø 对于和调度系统不在一个安全隔离区的WEB数据库来说,中间隔着一个电力系统专用物理隔离设备,该隔离装置只能允许TCP/IP的单向访问。这直接造成了所有的商业软件无法得到应用。因此,在新系统的设计中,我们只能自己来实现数据的复制和同步机制。首先,我们需要明确数据复制的概念和范围。我们所说的数据复制与同步,是指所有系统中涵盖的各种数据库服务器中商用数据库里的数据保持实时的同步。这些数据库服务器包括系统的主备数据库服务器、灾备数据库服务器、镜像数据库服务器以及WEB数据库服务器等,正如我们前面已经提到的那样;另外,这种复制和同步在系统的主备数据库服务器之间是双向的,而对于其它的数据库服务器而言是单向的,即只能由主备数据库服务器向其它的服务器同步和复制数据,这些服务器只是起到一个备份或者只读访问的功能;再有,我们需要保证在各种恶劣的情况下依然能够维持数据的一致。接下来,我们阐述在本设计方案中数据复制和同步的实现方式。前面我们已经介绍了在历史数据服务器(逻辑概念)上的复制类服务进程。其中,复制动态库libdb_rep.so负责接收由db_modify_server、sql_sp_server以及db_commit等服务调用的已经在当前主数据库服务器上执行完毕的SQL复制请求(这里,SQL请求其实包含了诸如存储过程请求,为了方便,我们统称为SQL请求)。注意一点,对于db_commit服务来说,无论执行成功与否,均需要同步复制。然后复制动态库将这些请求按照接收的顺序(时间顺序)写入本地文件队列,交由db_replicate进程负责处理,这个队列我们称为复制请求队列。db_replicate是一组完全相同的进程,其个数n等于系统中所有数据库服务器的数目。每个db_replicate进程联接自己的那个目标数据库服务器(见图3),负责按照顺序读取相应复制请求队列的SQL请求并在自己的目标数据库服务器中执行。如果目标数据库服务器连接中断或正在启动关闭中,db_replicate则一直等待,直到联接恢复;如果SQL请求执行失败,则同样地需要写入ErrorLog文件当中,以便日后查询或者进行人工干预。无论SQL执行是否成功,db_replicate都需要立即从复制请求队列中删除该SQL请求。对于处于安全隔离区外的WEB数据库服务器来说,其运行db_replicate进程的实现和其它进程略有不同,因为普通的db_replicate无法跨越这个物理隔离设备连接WEB数据库。因此WEB数据库的复制程序实际上调用网络服务提供的文件传输动态库将本地缓存的SQL文件传输到WEB一侧,另外WEB上将运转一个接收程序(实际上是两个db_rep_recv/db_rep_recv_lob)将接收的文件写入本地复制队列,再由WEB本地的普通db_replicate写入WEB数据库。由于存在n个db_replicate进程,所以复制动态库维护和管理的是n个复制请求队列,也就是说复制动态库在接收到复制请求以后,需要同时在n个复制请求队列的末尾添加新的请求。而每个db_replicate进程负责处理某一个特定的复制请求队列中的数据。但是实际上,复制动态库在接收到复制请求以后,只需要根据系统中的数据库服务器配置情况(通过读取相应的配置参数得到)写入n-1个复制请求队列即可,那个联接到当前主数据库服务器的db_replicate进程所对应的复制请求队列无须写入。这是因为,当前主数据库服务器已经执行了该SQL请求(通过db_commit),不再需要进行复制。那么,我们为什么还设立这个进程和复制请求队列呢?这牵涉到在新系统中1+N功能的实现机制,我们将在下一节中阐述。历史数据服务器上的复制类进程或动态库无须判断自己是主还是备,复制动态库只要接收到请求就开始处理,而db_replicate则不断地处理相应的复制请求队列。另外,它们也无须判断数据库服务器的主和备,每个db_replicate进程都和特定的数据库服务器相连,如果联接中断,则一直等待, 联接恢复时继续进行复制工作。五新系统中1+N功能的实现机制首先,我们要给“1+N”功能在新系统中一个准确的定位。所谓“1+N”,其本意是指在一个分布式的计算机系统中,任何一个结点的退出或者故障都不会引起整个系统功能的丧失,直到只剩最后一个结点。但是,在C/S/S结构中,每个结点都承担着不同的任务,这种理想状况是当然无法达到的。分析我们的系统,其中最重要也是最核心的结点应该是主备数据库服务器,如果由于各种情况(特别是硬件故障的情况下)导致数据库服务器瘫痪,不仅历史数据会丢失,整个系统也将处于崩溃的边缘。因此,在新系统中,我们对“1+N”的定位是:当主备数据库服务器都发生故障的情况下(包括数据库退出、机器宕机、网络中断等),系统仍然保持正常运转,除数据更新类和查询类服务暂停以外,其它运行功能不受影响,期间发生的历史数据不会丢失,并且在系统恢复正常时能够自动恢复。我们把系统的这种状态称为“1+N”状态(也许需要对1+N重新命名,这里姑且借用这个名称)。当主备数据库服务器都发生故障时,也就是系统处于“1+N”状态时,db_modify_server、sql_sp_server以及所有数据库查询类服务均不再接受服务,所有客户端的调用都将有“暂停服务”的提示。因此,我们只需要关注和处理db_commit服务进程和复制类的进程。db_commit依然接收服务请求,当发现处于“1+N”状态时,跳过向数据库提交这个环节,直接将SQL复制请求发送给复制动态库,并由其将这些请求写入n个复制请求队列(注意,不是n-1个)中,即主数据库也出现复制队列。除主备数据库服务器以外的其它数据库服务器都可以进行正常复制,而退出运行的主备数据库服务器对应的db_replicate进程会发现当前联接中断,于是一直等待。待系统恢复正常后,db_replicate仍然会通过正常的数据处理流程将SQL请求从复制请求队列中读出,然后按照时间顺序复制到主备数据库服务器当中去。可以看到,我们只是多设了一个db_replicate进程,其处理流程并没有因为“1+N”的状态而发生任何改变,但是,的的确确,我们轻松而且巧妙地实现了“1+N”的功能!六数据库服务器的异常处理和切换机制前面的章节主要讲述了历史数据服务包含的内容以及每个服务进程的基本实现方式,接下来两部分我们开始讨论在异常情况下系统的处理和切换机制,以及每个历史数据服务的相应对策。首先要考虑的是当系统的主备数据库服务器发生异常时我们的应对策略。其它的数据库服务器发生故障时其对应的db_replicate进程保持等待状态(详见第6和第7部分)。我们已经提到,系统中的主备数据库服务器其实并没有真正意义上的主和备之分,只是具有不同的优先级别。所谓主指的是当前历史数据服务所联接的那个数据库服务器,是一个相对和动态的概念。我们为每个系统的数据库服务器设定一个优先级,这样的优先级划分只是为了在系统刚启动或者当前主数据库服务器发生故障时历史数据服务进程能够知道应该重新建立和哪一个数据库服务器的联接。通过这样的定义,实际上,一个系统中的数据库服务器可以完全不止两个,可以是三个、四个或者更多(当然,多数据库服务器体系的配置需要很高的资金投入)。另外需要明确的是,什么是数据库服务器的故障状态。我们认为,所谓数据库服务器发生故障,是指该数据库服务器宕机、数据库退出或者网络中断。这三种情况所表现出来的共同特征是历史数据服务进程和该数据库服务器的联接发生中断。所以,在所有的历史数据服务进程当中,都会周期性地判断当前数据库联接是否正常(由于历史数据服务进程都是被动地接收请求,所以也可以在处理请求时发现联接正常与否),这是我们对数据库服务器故障的唯一判据。现在我们可以研究一下在数据库服务器故障的情况下,系统的异常处理和切换机制了。我们以两台系统数据库服务器为例进行说明,两台以上的配置情况可以依次类推。1 系统正常运转当系统正常运转时,所有历史数据服务均联接在当前主数据库服务器上,备数据库服务器通过复制机制完成数据的同步。2 主数据库服务器故障当主数据库服务器发生故障,所有历史数据服务进程将能够立即发现,各进程开始根据系统设置的优先级寻找下一个可用的数据库服务器,并启用该联接。如果找不到一个可用的联接(即可用的数据库服务器全部中断),系统进入“1+N”状态,开始启动“1+N”流程(见第7部分)。虽然我们已经启用了备数据库服务器的联接,但是我们还不能认为此时备已经升为了主,这主要是考虑到此时备数据库服务器的数据复制工作可能还没有完全结束,而需要复制的SQL请求中完全有可能存在时序相关的操作,如果立即切换,则在理论上就会存在数据不一致的漏洞。所以,在备升为主之前,先要处理未完成的复制工作。这段过程是非常必要的,我们将这种状态称为数据库服务器的切换状态。这时由db_monitor判断该情况,直到所有的时序相关的操作完成,才退出1+N流程,通知各历史数据服务进程恢复工作。以上的处理方式主要是为了整个切换过程的完整,另外充分考虑了各种SQL提交的时序特性,从理论上保证数据的一致,实践中也完全可行。3 故障情况恢复当原先故障的数据库服务器(不能再称为主数据库服务器)重新恢复时,系统的历史数据服务进程依然采用当前的数据库联接,并不切换回来。该数据库服务器故障期间的数据由相应的复制服务(db_replicate)来恢复完成。一段时间以后,两台数据库服务器的数据将完全恢复一致。恢复时间的长短取决于故障时间的长短。我们也可以把这个过程称之为数据追赶。系统同时提供人工进行数据库服务器切换的命令,其切换的机制和上面介绍的方案完全一致。 七历史数据采样简介新系统的历史数据采样分为3类:l 主动周期采样(sample_history),YC/YX/RSl 被动周期采样(sample_data_server)YC/YXl 触发式采样(trigger_sample_server)主动/被动周期采样分应用,SCADA/AGC/PAS/FES/DTS,采样间隔时间为10种。采样定义表和实际存储表都分应用:以SCADA为例,(SCADA无后缀、PAS后缀"_pas"、DTS后缀"_dts"、AGC后缀 "_agc"、FEP后缀"_fep"):svr_yc_sample_define(SCADA遥测采样定义表)svr_yc_recall_define(SCADA遥测追忆采样定义表)svr_yx_sample_define(SCADA遥信采样定义表)svr_sample_per_change(SCADA遥测周期变化表)存储表号范围如下(SCADA):/ 主动周期采样表号范围5分钟 yc_hs_0001yc_hs_50001分钟 yc_hs_5001yc_hs_550010分钟 yc_hs_5501yc_hs_600015分钟 yc_hs_6001yc_hs_620030分钟 yc_hs_6201yc_hs_64001小时 yc_hs_6401yc_hs_66008小时 yc_hs_6601yc_hs_68001天 yc_hs_6801yc_hs_70001秒 yc_hs_7001yc_hs_72005秒 yc_hs_7201yc_hs_7400/ 被动周期采样表号范围5分钟 yc_hs_8001yc_hs_82001分钟 yc_hs_8201yc_hs_840010分钟 yc_hs_8401yc_hs_860015分钟 yc_hs_8601yc_hs_880030分钟 yc_hs_8801yc_hs_90001小时 yc_hs_9001yc_hs_92008小时 yc_hs_9201yc_hs_94001天 yc_hs_9401yc_hs_96001秒 yc_hs_9601yc_hs_98005秒 yc_hs_9801yc_hs_9999注意:7401-8000作为系统扩展使用YC追忆采样:yc_rs_0001yc_rs_9999主动周期采样由sample_history程序负责,周期工作,并直接读取本地实时库并构造相应SQL语句调用db_commit提交到数据库。由于需要读取本地实时库,因此实际上sample_history并不属于DB_SERVICE应用,而是分别属于具体的应用,需要采样的应用必须启动相应的sample_history实例。例如SCADA应用的主动采样启动命令为:sample_history SCADA。被动周期采样得有应用周期调用sample_data_server服务,提供相应数据再由sample_data_server构造相应SQL语句直接存入商用库,注意如果系统处于1+N状态,则调用db_commit提交。sample_data_server是被动服务,如果没有程序调用就没有数据保存,这就是主动与被动的区别。那么触发式采样又是什么概念呢?触发式采样与被动周期采样比较相像,但没有周期,需要的时候由应用触发即可。而且触发式采样使用的存储表结构也不一样触发采样的表号范围burst_sample_data_0001burst_sample_data_9999每一张表对应一个触发采样类型。一个触发采样类型最多包含50个int采样、50个float采样、50个string采样,当然还包含一个日期型的occur_time关键字。由此可以发现触发采样甚至可以对string型变量进行采样,这也是触发采样和主动被动周期采样的一个重要区别。需要注意的是trigger_sample_server属于PUBLIC应用,运行在各个服务器上,客户端调用本地trigger_sample_server即可。新系统的历史数据采样全部在sample_define界面完成,并由采样定义服务(sample_define_server)完成最终的定义工作。八缓存机制以及缓存目录如上所述,新系统为了避免历史数据的丢失,采用了文件队列的概念,当然需要一些目录来存放这些文件。但要注意的是如果系统异常缓存目录的膨胀可能会影响到整个系统的正常运行,如果硬盘分区满,往往会出现不可预料的后果。因此我们决定将缓存目录单独使用一个分区,该分区与user分区独立互不影响。我们把缓存全部定位在$OPEN2000E_HOME/var目录下,其下有db_commit、db_rep、re_commit等目录。db_commit为数据提交缓存目录,db_rep为复制缓存目录,re_commit为数据追捕缓存目录(该目录作用详见下节)。缓存目录情况可以使用search_file工具来查看,一个典型的search_file结果如下:kf09-1> search_file key_num = 1- db_commit sample -db_commit/sample/high/out: 6 files (first time = 2005-01-26 15:54:57)db_commit/sample/middle/out: 0 filesdb_commit/sample/low/out: 0 files- db_commit scada -db_commit/scada/high/out: 0 filesdb_commit/scada/middle/out: 0 filesdb_commit/scada/low/out: 0 files- db_rep -db_rep/db_dev/lob.out: 0 filesdb_rep/db_dev/out: 0 files- re_commit -re_commit/out: 0 files九数据追捕的作用以及工作流程历史数据服务在(例如sample_history)数据提交过程中可能出现CORBA调用db_commit失败以及未找到DB_SERVICE主机等情况,这时需要将形成的SQL语句暂存在本地,以免丢失历史数据,那么这部分数据的重新提交我们称其为数据追捕,并由db_reinforce(属于PUBLIC应用)的进程负责。db_reinforce只对本地的$OPEN2000E_HOME/var/re_commit/out目录负责,一旦发现有未提交的文件则按文件队列顺序调用db_commit提交数据,成功的话就删除已处理的文件,否则循环等待(不删除文件),直到成功。十其他服务1.模型更新服务db_modify_server服务负责完成商用库和实时库的同步更新,具体而言是首先更新商用库,如果成功的话通过发送消息到通道,由订阅该通道的odb_modify实时库程序修改相应实时数据。db_modify_server的详细使用可参见:模型更新接口说明书.doc2.直接SQL服务sql_sp_server服务负责完成针对商用库操作,结果不会影响实时数据。sql_sp_server既可以接受商用库支持的任何SQL语句,也支持“通用SQL语法”(详见上节模型更新接口说明书.doc)。同时支持LOB大字段的存取(例如图形、报文以及报表等)。新系统中大量使用LOB存储,LOB的存储只能通过该服务进行存储。LOB分为两种形式:l CLOB:ASCII/文本l BLOB:BINARY/二进制图形、报文以及报表等都使用BLOB方式存储。sql_sp_server的接口使用详见sql_sp.idl文件3历史数据查询以及统计服务query_sample_server服务负责完成所有历史采样数据的查询、数值统计,时间段以及次数统计。采样数据的查询、数值统计可以通过query_sample界面方便查询,query_sample界面的使用详见使用手册。而时间段以及次数统计可以通过图形界面进行设置。query_sample_server的接口使用详见query_sample.idl文件4历史数据修改服务sample_modify_server服务负责完成对历史采样数据的修改。修改时可以选择同步修改追忆数据以及是否设置质量码(历史数据人工修改标志)。sample_modify_server的接口使用详见sample_modify.idl文件5商用库告警服务db_warn_server服务负责完成对商用库状态的告警。具体告警内容包含:l 磁盘缓存空间告警l 表空间告警l 表记录最大个数告警l 各数据库状态告警具体告警的参数可通过系统管理的参数管理DB_SERVICE/db_warn_para修改

    注意事项

    本文(商用库部分系统服务培训.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开