商用库部分系统服务培训

上传人:1888****888 文档编号:38757539 上传时间:2021-11-08 格式:DOC 页数:23 大小:361KB
返回 下载 相关 举报
商用库部分系统服务培训_第1页
第1页 / 共23页
商用库部分系统服务培训_第2页
第2页 / 共23页
商用库部分系统服务培训_第3页
第3页 / 共23页
点击查看更多>>
资源描述
商用库部分系统培训商用库部分系统培训国电南瑞科技股份有限公司电网控制分公司国电南瑞科技股份有限公司电网控制分公司新系统平台开发组新系统平台开发组20052005 年年 0101 月月商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司2目录目录引言引言.3一一. . 历史数据服务的定义以及在新系统中的定位历史数据服务的定义以及在新系统中的定位.4二历史数据服务包含的内容和相应的分类二历史数据服务包含的内容和相应的分类.8三历史数据服务和数据库服务器的联接方式三历史数据服务和数据库服务器的联接方式.10四数据复制与同步服务的实现方式四数据复制与同步服务的实现方式.12五新系统中五新系统中 1+N1+N 功能的实现机制功能的实现机制.15六数据库服务器的异常处理和切换机制六数据库服务器的异常处理和切换机制.16七历史数据采样简介七历史数据采样简介.18八缓存机制以及缓存目录八缓存机制以及缓存目录.20九数据追捕的作用以及工作流程九数据追捕的作用以及工作流程.21十其他服务十其他服务.211.模型更新服务.212.直接 SQL 服务.213历史数据查询以及统计服务.224历史数据修改服务.225商用库告警服务.22商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司3引言引言在新一代电力调度自动化系统的统一支撑平台中,历史数据服务作为数据库管理系统的重要组成部分,扮演着重要的角色。这些服务和其它各类服务之间的一个最重要的区别就是它们需要直接和商用数据库进行联接并交换数据,要注意的是这些服务的运行往往需要数据库(ORACLE、SYBASE 等)客户端动态库支持。由于读写商用数据库的实质是磁盘文件的 I/O 操作,在三层体系结构中还需要通过网络进行访问,其速度和实时系统有着数量级上的差别,所以对于历史数据服务来说,首先需要解决的是相对慢的读写速度和系统连续不断读写需求(如高频率采样、画面上的不间断查询)之间的矛盾,确保商用数据库的操作不会成为整个系统正常运转的瓶颈。另外,由于系统中存在着冗余配置的数据库服务器,包括主备数据库服务器、镜像服务器、灾备服务器以及在安全隔离区以外的 WEB 服务器等。系统需要保证在各种配置和各种情况下数据库服务器之间数据的同步和一致,因此,数据的复制和同步机制变得非常重要。再者,考虑到调度自动化系统的高可靠性要求,系统不仅在正常情况下能够高效处理数据,还必须具备在恶劣的外部环境下确保可靠运行。例如,在数据库损坏或者网络异常中断的情况下如何保证系统还能保持大部分的功能不受影响,在切换的过程中如何保证数据没有丢失等等。因此,数据库服务器以及相关的应用服务器的异常处理和切换机制也是新系统平台中十分关注并且需要很好解决的问题。商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司4一一. . 历史数据服务的定义以及在新系统中的定位历史数据服务的定义以及在新系统中的定位在新系统的统一平台中,十分强调服务的概念。所谓服务(SERVANT) ,也就是一个或者一组运行在相关服务器上的后台进程(多线程) ,它们为其它的各个客户进程提供数据的查询、更新以及应用逻辑的处理,使得数据的处理能够集中在服务器上,客户端只要关注自己的人机交互以及某些应用逻辑。这同时也是新系统 C/S/S 结构的要求。在新系统的平台设计中,存在着众多的服务。例如,下装服务、数据更新服务、查询服务、任务管理服务、告警服务、系统配置服务、日志管理服务、历史数据采样服务等等。在这些众多的服务当中,有一类服务需要直接和商用数据库打交道,如下装、数据更新、查询、历史数据采样等(实际上,在商用库部分实现中,诸如历史数据采样等的服务我们并不划分在历史数据服务中,以后的篇幅中我们会逐步阐述其中的原因) 。我们将所有和商用数据库打交道的服务以及支持商用数据库之间复制和同步我们将所有和商用数据库打交道的服务以及支持商用数据库之间复制和同步的服务统称为历史数据服务的服务统称为历史数据服务。那么,在整个新系统的体系当中,历史数据服务究竟处于什么位置,完成什么样的功能呢?在回答这个问题之前,我们先要阐明几个和 C/S/S 结构有关的概念。所谓 C/S/S 结构,简单地说,指的是系统硬件和软件的三层体系结构。一方面是将整个系统的结点划分为客户机、应用服务器和数据库服务器三个层次,另一方面是将所有的软件划分为客户应用软件、应用服务软件和数据库管理软件三个层次。其中,客户应用软件主要处理人机交互以及某些应用逻辑;应用服务软件完成大部分的应用逻辑处理以及和数据库的交互;数据库管理软件完成数据的存储、组织和管理。具体应用到我们的新一代调度自动化系统中,上述所有的那些服务在物理上就应该驻留在应用服务器当中。结合新系统的体系结构设计方案,应用服务器又可以分为SCADA 应用服务器、PAS 应用服务器、前置应用服务器等,根据每个服务的不同性质,将这些服务分布在各个服务器结点当中,相互配合、协调来完成整个系统的功能。那么,我们提到的历史数据服务应该位于哪个应用服务器上呢?为了解答这个问题,我们需要将各种类型的服务器进行一些概念上的定义和明确。商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司5这些术语贯串了整个设计方案。数据库服务器数据库服务器安装了具体商用数据库(ORACLE)的服务器结点。应用服务器应用服务器专门负责处理应用或者业务逻辑的服务器,其上运行着众多的服务进程。但是,这些进程不和商用数据库直接联系。历史数据服务器历史数据服务器专门负责处理和商用数据库直接直接交换数据的服务器,其上运行着我们的历史历史数据服务数据服务进程。必须指出,所谓的应用服务器和历史数据服务器都是逻辑上的概念,其逻辑划分是以服务的性质来决定的,并不是一个系统中必须在物理上配置这些独立的硬件。也就是说,应用服务器完全可以和历史数据服务器共存于一个物理结点中,或者,三种服务器都共存于一个物理结点中。但是,在逻辑上,特别是软件的逻辑划分上我们采用这些术语,以方便整个方案的阐述,不致引起概念的混淆。现在,我们可以比较明确地回答上面遗留的问题了。历史数据服务在逻辑上分布历史数据服务在逻辑上分布于历史数据服务器当中(不得不再次强调历史数据服务器是一个逻辑概念)于历史数据服务器当中(不得不再次强调历史数据服务器是一个逻辑概念) ,它们主要,它们主要完成和商用数据库直接交换数据的功能,其结果(数据的查询和更新)被其它服务进完成和商用数据库直接交换数据的功能,其结果(数据的查询和更新)被其它服务进程或者客户应用进程引用程或者客户应用进程引用。为什么要单独将历史数据服务以及历史数据服务器划分为一个逻辑上的概念呢?其一,这主要是为了解决在引言部分提出来的第一个问题,即商用数据库相对实时系统较慢的处理速度不能成为整个系统正常运转的瓶颈。例如,在很多调度系统中,包括现在的 OPEN2000 系统,历史数据采样进程在一个时间周期内(通常是 5 秒) ,既要从实时库中读取所有需要采样的遥测的数据和状态值,又要将这些数据拼接成相应的 SQL 并在数据库中执行。在数据量较大或者突发紧急事件(CPU 负荷短暂地升高)的情况下,这些涉及到磁盘 I/O 操作的 SQL 执行根本就来不及处理,以至于会经常造成漏掉采样点的情形。为了避免这种情况,我们需要将 SQL 执行的部分单独提取出来作为一个服务,使得采样服务专心处理实时数据的读取(在内存中处理) ,而不至于因为 SQL 的执行速度慢导致漏掉下一个采样周期。这也是前面提到历史数据采样服务不被划分在历史数据服务中的最重要的原因。商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司6其二,由于系统中分布着各种应用服务器(SCADA,PAS,前置等) ,出于效率上的考虑(主要是尽量避免从网络上读取实时数据) ,一些服务进程会同时分布于各台应用服务器上。同样以采样为例,新系统中采样服务是作为公用服务提供给各个应用使用,也就是每个应用都拥有自己的数据采样服务。由于不同应用在物理上可能的不同分布,所以采样服务也会同时分布于各个应用服务器中。如果不将其中的 SQL 执行部分划分出来,则势必在每个应用服务器上都需要相应的商用数据库客户端软件。这样,和我们的 C/S/S 结构就存在一些冲突,同时也会潜在地增加系统的成本。其三,这样的划分有助于简化数据库服务器的复制、同步、异常以及切换时的处理机制。在考虑上述可靠性要求的时候,我们的视线只要集中于那些直接和商用数据库打交道的服务进程,也就是我们的历史数据服务。这样,可以对历史数据服务采用统一的机制来解决这些问题。将来增加其它的服务或者应用进程时,只需要将和数据库相关的部分提交给历史数据服务来处理,而无须关心数据库服务器的诸多可靠性要求。图 1 表示了各种服务器和相应的服务在整个系统中的分布。图 2 表示了各种服务器以及客户机在数据处理上的层次关系。网络通信中间件商用数据库管理系统商用数据库管理系统数据库服务器数据库服务器下装服务模型更新服务查询服务数据提交服务数据复制服务历史数据服务器SQL与存储过程统计服务.历史数据服务器实时信号处理遥控遥调服务实时数据库服务告警服务采样服务.SCADA应用服务器事故信息处理公式计算服务用户权限服务系统管理服务公共图形服务.SCADA应用服务器通道规约处理网络规约处理实时数据接受.实时数据库服务通道切换服务通道数据统计.前置应用服务器前置应用服务器.状态估计服务调度员潮流服务负荷预报告警服务采样服务.PAS应用服务器图 1 数据库服务器、历史数据服务器、应用服务器以及各种服务在系统中的分布商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司7数据库服务器历史数据服务器应用服务器客户机客户机SQL和存储过程的数据库提交应用数据请求提交生成的SQL命令历史数据请求历史数据请求图 2 各种服务器以及客户机在数据处理上的层次关系商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司8二历史数据服务包含的内容和相应的分类二历史数据服务包含的内容和相应的分类从前面给出的定义可以看出,所有和商用数据库直接进行数据交换以及支持数据库服务器的复制和同步的服务都属于历史数据服务。所以,历史数据服务实质上是一个服务包。这个包中拥有下列服务进程: 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 复制处理服务所有上述这些服务进程并不直接同步其它的数据库服务器,而是统一通过调商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司9用复制动态库来完成上述工作。该动态库的特点是并不直接和数据库打交道,仅仅将数据复制请求写入复制请求文件队列。然后再由 db_replicate 程序处理相应的文件队列,并对远程数据库服务器进行实际的数据复制和同步工作。因此针对系统中的每一个数据库服务器,都有一个 db_replicate 服务进程与之对应。从上面的分析可以看出,虽然同属于历史数据服务,但是各个不同的服务完成不同的功能,并且具有不同的特点。而这些特点决定了其在数据提交、复制以及后面要讨论的数据库服务器切换过程中的机制会有所不同。为了方便阐述,我们根据它们不同的特点将这些服务划分为以下五类: 查询类服务查询类服务包括 download_server,数据查询和数据统计服务。 需要知道执行结果的数据更新类服务,简称为更新类服务更新类服务包括 db_modify_server,sql_sp_server 两个服务,本质上是时序相关的。 时序相关的数据提交服务,简称相关提交类服务相关提交类服务包括和时序相关的数据提交服务。如发生遥信变位后,将开关状态写入开关表中,这种数据提交操作无论在复制还是切换过程中都有着严格的时间顺序要求,否则将可能产生错误的结果。 时序无关的数据提交服务,简称无关提交类服务无关提交类服务包括和时序无关的数据提交服务。如采样或者事件登录,由于形成的 SQL 命令中本身带有时标,所以在复制或者切换过程中无所谓执行的先后顺序。 复制类服务复制类服务包括 db_replicate 服务进程,负责数据复制和同步工作。在下面的篇幅中,我们将使用以上的分类方法和对应的术语。商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司10三历史数据服务和数据库服务器的联接方式三历史数据服务和数据库服务器的联接方式前面提到,所谓历史数据服务,都是需要直接和商用数据库交换数据的服务进程。那么,在明确了历史数据服务的定义以及其包括的内容以后,我们需要关注一下它们和数据库服务器的联接方式。根据系统的不同规模和用户的不同要求,系统中存在各种各样的数据库服务器。一般说来,我们可以将系统中的数据库服务器分为以下几种类型:主数据库服务器主数据库服务器、备数据库服务器备数据库服务器、灾难备份数据库服务器灾难备份数据库服务器、镜像数据库服务器镜像数据库服务器以及 WEBWEB 数据库服务器数据库服务器。其中,主备数据库服务器是系统运转的核心数据存储结点,其它的数据库服务器都通过系统的复制机制保持同步。其实,主备数据库服务器可以不止两台,可以是多台,而且并不是传统的主备之分,只有优先级之设定,个中理由将在后续篇幅中逐步阐明。之所以称为主备数据库服务器,主要是为了叙述上的方便。每个历史数据服务进程根据不同的性质都需要建立和上述的各种数据库服务器的联接,才能和数据库进行通讯和交换数据。基于系统的三层架构,这些服务和数据库的联接只能通过网络方式进行,即通过指定主机、端口号以及数据库实例和特定的数据库建立联接。由于我们在系统中采用双网的连接方式,所以我们首先要考虑和解决的就是如何克服单网卡故障带来的数据库联接的中断问题。幸运的是,在新系统的平台设计中,网络管理服务恰好提供了上述问题的解决方案。该服务(net_pathing)的一个重要功能就是能够完全屏蔽结点的多个网卡地址,提供给其它应用和服务进程的是一个该结点的虚拟地址。对于系统中所有的应用和服务进程来说,面对的只是一个地址,对于目标结点来说,只有网络正常和网络中断两种状态,而无须考虑双网(或者多网)的切换。这样,在和数据库服务器的联接中我们完全不需要考虑单网卡故障带来的中断和切换问题。接下来,我们需要关注每个具体的历史数据服务和前面提到的各种数据库服务器的联接方式。经过分析我们发现,由于系统的主备数据库服务器是数据复制的源头,所以除了 db_replicate 进程以外,其它所有的历史数据服务进程都只需要和主数据库服务器通讯。而 db_replicate 需要和所有的数据库服务器相连(WEB 的情况比较特殊,因为其在安全隔离区之外,在后面的数据复制与同步机制中有详细讨论) 。另外,需要商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司11指出的是,复制动态库不和任何数据库服务器联接。在系统正常运转的情况下,所有的历史数据服务进程(无论是在主历史数据服务器还是备历史数据服务器上)都和当前的主数据库服务器建立联接并交换数据,备数据库服务器的数据通过复制机制进行同步。当主数据库服务器的联接发生中断,这些进程重新建立和备数据库服务器的联接,同时备升为主,并保持主服务器状态。这样的处理方式使得历史数据服务进程的数据流程比较简明、清晰,并且可以有效地克服交叉故障的情况。在以后的章节里将详细阐述各种情况下数据库服务器的复制、异常和切换机制。图 3 表示了各历史数据服务进程和各个数据库服务器的联接方式。其中,虚线代表了在备数据库服务器值班的情况下的联接。历史数据服务器Download_serversql_sp_serverDb_modify_serverdb_commit(n).db_replicatedb_replicatedb_replicatedb_replictaedb_replicateLibdb_rep.so切换主数据库服务器WEB数据库服务器镜像数据库服务器灾备数据库服务器备数据库服务器磁盘阵列历史数据服务器Download_serversql_sp_serverDb_modify_serverdb_commit(n).db_replicatedb_replicatedb_replicatedb_replictaedb_replicateLibdb_rep.so图 3 历史数据服务进程和数据库服务器的联接方式商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司12四数据复制与同步服务的实现方式四数据复制与同步服务的实现方式数据的复制与同步,也就是各个数据库服务器中的数据保持一致,一直是困扰着国内各 EMS 和 DMS 厂商的一个大问题。这个问题如果不能真正解决好,系统的可靠性也就会相应地大打折扣。因此,在新系统的整体设计,特别是数据库系统的设计中,这个问题得到了我们特别的关注。我们一直在寻求一些比较成功和可靠的商业解决方案。不幸的是,由于电力调度系统具有连续运行、实时、数据量大、切换速度要求很高以及自身特殊的安全性规定等特点,使得目前我们还没有找到合适的产品。主要的原因有以下三点: 这些商业解决方案基本上都必须通过数据库日志来实现。而我们的系统由于数据量非常大,一般不能保存这些日志,否则数据库的日志会很快占满整个数据库空间。这也是我们为什么需要选择自动清除日志的数据库选项(SYBASE) ,或者必须运行在非归档模式(ORACLE)下的根本原因。 电力调度系统要求的切换速度很高,一般的商业解决方案无法达到这些时间指标。 对于和调度系统不在一个安全隔离区的 WEB 数据库来说,中间隔着一个电力系统专用物理隔离设备,该隔离装置只能允许 TCP/IP 的单向访问。这直接造成了所有的商业软件无法得到应用。因此,在新系统的设计中,我们只能自己来实现数据的复制和同步机制。首先,我们需要明确数据复制的概念和范围。我们所说的数据复制与同步,是指所有系统中涵盖的各种数据库服务器中商用数据库里的数据保持实时的同步。这些数据库服务器包括系统的主备数据库服务器、灾备数据库服务器、镜像数据库服务器以及 WEB 数据库服务器等,正如我们前面已经提到的那样;另外,这种复制和同步在系统的主备数据库服务器之间是双向的,而对于其它的数据库服务器而言是单向的,即只能由主备数据库服务器向其它的服务器同步和复制数据,这些服务器只是起到一个备份或者只读访问的功能;再有,我们需要保证在各种恶劣的情况下依然能够维持数据的一致。接下来,我们阐述在本设计方案中数据复制和同步的实现方式。前面我们已经介绍了在历史数据服务器(逻辑概念)上的复制类服务进程。其中,商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司13复制动态库 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功能的实现机制,我们将在下一节中阐述。商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司14历史数据服务器上的复制类进程或动态库无须判断自己是主还是备,复制动态库只要接收到请求就开始处理,而 db_replicate 则不断地处理相应的复制请求队列。另外,它们也无须判断数据库服务器的主和备,每个 db_replicate 进程都和特定的数据库服务器相连,如果联接中断,则一直等待, 联接恢复时继续进行复制工作。商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司15五新系统中五新系统中 1+N1+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-1n-1 个个)中,即主数据库也出现复制队列。除主备数据库服务器以外的其它数据库服务器都可以进行正常复制,而退出运行的主备数据库服务器对应的 db_replicate 进程会发现当前联接中断,于是一直等待。待系统恢复正常后,db_replicate 仍然会通过正常的数据处理流程将 SQL 请求从复制请求队列中读出,然后按照时间顺序复制到主备数据库服务器当中去。可以看到,我们只是多设了一个 db_replicate 进程,其处理流程并没有因为“1+N”的状态而发生任何改变,但是,的的确确,我们轻松而且巧妙地实现了“1+N”的功能!商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司16六数据库服务器的异常处理和切换机制六数据库服务器的异常处理和切换机制前面的章节主要讲述了历史数据服务包含的内容以及每个服务进程的基本实现方式,接下来两部分我们开始讨论在异常情况下系统的处理和切换机制,以及每个历史数据服务的相应对策。首先要考虑的是当系统的主备数据库服务器发生异常时我们的应对策略。其它的数据库服务器发生故障时其对应的 db_replicate 进程保持等待状态(详见第 6 和第 7部分) 。我们已经提到,系统中的主备数据库服务器其实并没有真正意义上的主和备之分,只是具有不同的优先级别。所谓主指的是当前历史数据服务所联接的那个数据库服务器,是一个相对和动态的概念。我们为每个系统的数据库服务器设定一个优先级,这样的优先级划分只是为了在系统刚启动或者当前主数据库服务器发生故障时历史数据服务进程能够知道应该重新建立和哪一个数据库服务器的联接。通过这样的定义,实际上,一个系统中的数据库服务器可以完全不止两个,可以是三个、四个或者更多(当然,多数据库服务器体系的配置需要很高的资金投入) 。另外需要明确的是,什么是数据库服务器的故障状态。我们认为,所谓数据库服所谓数据库服务器发生故障,是指该数据库服务器宕机、数据库退出或者网络中断务器发生故障,是指该数据库服务器宕机、数据库退出或者网络中断。这三种情况所表现出来的共同特征是历史数据服务进程和该数据库服务器的联接发生中断。所以,在所有的历史数据服务进程当中,都会周期性地判断当前数据库联接是否正常(由于历史数据服务进程都是被动地接收请求,所以也可以在处理请求时发现联接正常与否) ,这是我们对数据库服务器故障的唯一判据。现在我们可以研究一下在数据库服务器故障的情况下,系统的异常处理和切换机制了。我们以两台系统数据库服务器为例进行说明,两台以上的配置情况可以依次类推。1系统正常运转当系统正常运转时,所有历史数据服务均联接在当前主数据库服务器上,备数据库服务器通过复制机制完成数据的同步。2主数据库服务器故障商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司17当主数据库服务器发生故障,所有历史数据服务进程将能够立即发现,各进程开始根据系统设置的优先级寻找下一个可用的数据库服务器,并启用该联接。如果找不到一个可用的联接(即可用的数据库服务器全部中断) ,系统进入“1+N”状态,开始启动“1+N”流程(见第 7 部分) 。虽然我们已经启用了备数据库服务器的联接,但是我们还不能认为此时备已经升为了主,这主要是考虑到此时备数据库服务器的数据复制工作可能还没有完全结束,而需要复制的 SQL 请求中完全有可能存在时序相关的操作,如果立即切换,则在理论上就会存在数据不一致的漏洞。所以,在备升为主之前,先要处理未完成的复制工作。这段过程是非常必要的,我们将这种状态称为数据库服务器数据库服务器的切换状态的切换状态。这时由 db_monitor 判断该情况,直到所有的时序相关的操作完成,才退出 1+N 流程,通知各历史数据服务进程恢复工作。以上的处理方式主要是为了整个切换过程的完整,另外充分考虑了各种 SQL提交的时序特性,从理论上保证数据的一致,实践中也完全可行。3故障情况恢复当原先故障的数据库服务器(不能再称为主数据库服务器)重新恢复时,系统的历史数据服务进程依然采用当前的数据库联接,并不切换回来。该数据库服务器故障期间的数据由相应的复制服务(db_replicate)来恢复完成。一段时间以后,两台数据库服务器的数据将完全恢复一致。恢复时间的长短取决于故障时间的长短。我们也可以把这个过程称之为数据追赶数据追赶。 。系统同时提供人工进行数据库服务器切换的命令,其切换的机制和上面介绍的方案完全一致。 商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司18七七历史数据采样简介历史数据采样简介新系统的历史数据采样分为 3 类:主动周期采样(sample_history) ,YC/YX/RS被动周期采样(sample_data_server)YC/YX触发式采样(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/ 被动周期采样表号范围商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司195 分钟 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_historysample_history SCADASCADA。被动周期采样得有应用周期调用 sample_data_server 服务,提供相应数据再由sample_data_server 构造相应 SQL 语句直接存入商用库,注意如果系统处于 1+N 状态,则调用 db_commit 提交。sample_data_server 是被动服务,如果没有程序调用就没有数据保存,这就是主动与被动的区别。那么触发式采样又是什么概念呢?触发式采样与被动周期采样比较相像,但没有周期,需要的时候由应用触发即可。而且触发式采样使用的存储表结构也不一样触发采样的表号范围burst_sample_data_0001burst_sample_data_9999每一张表对应一个触发采样类型。一个触发采样类型最多包含 50 个 int 采样、商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司2050 个 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 files商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司21db_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 的详细使用可参见:模型更新接口说明书.doc商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司222.直接 SQL 服务sql_sp_server 服务负责完成针对商用库操作,结果不会影响实时数据。sql_sp_server 既可以接受商用库支持的任何 SQL 语句,也支持“通用 SQL 语法”(详见上节模型更新接口说明书.doc) 。同时支持 LOB 大字段的存取(例如图形、报文以及报表等) 。新系统中大量使用 LOB 存储,LOB 的存储只能通过该服务进行存储。LOB 分为两种形式:CLOB:ASCII/文本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 服务负责完成对商用库状态的告警。具体告警内容包含:磁盘缓存空间告警表空间告警商用库部分系统培训 国电南瑞科技股份有限公司电网控制分公司23表记录最大个数告警各数据库状态告警具体告警的参数可通过系统管理的参数管理 DB_SERVICE/db_warn_para 修改
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!