APP下载

iP9000一体化平台跨安全分区数据库镜像功能设计与实现

2021-11-15方茹慧文正国陈小松王京红

水电站机电技术 2021年10期
关键词:服务端镜像日志

方茹慧,文正国,陈小松,王京红

(北京中水科水电科技开发有限公司,北京 100038)

0 引言

iP9000一体化平台是北京中水科水电科技开发有限公司研发的水利水电自动化业务一体化平台,主要为水电站监控、水情水调、设备安全监测、设备故障分析与诊断、水电厂培训仿真、监控运维大数据管理与分析等各种专业应用提供运行和管理环境[1]。

在电力系统二次安全防护“安全分区、网络专用、横向隔离、纵向认证”的安全防护规定下[2],随着一体化平台接入的业务子系统越来越多、业务子系统间数据应用越来越复杂,如何使数据在不同安全分区、不同应用之间达到“互通、互联、共享”、满足不同专业应用系统之间的跨安全分区的同步与交互,成为了水利水电工程自动化业务部署和实施中亟待解决的问题。

1 数据库镜像技术原理

数据库镜像技术,即每当主数据库更新时,数据库镜像系统会自动把更新后的数据复制到对侧数据库,保证镜像数据与主数据的一致性。由于实际电站多以MySQL数据库作为第三方商业数据库部署数据库镜像功能,因此本文以MySQL数据库的数据库镜像作为研究对象,主要探讨如何解决MySQL数据库作为持久化工具时的跨区数据镜像问题。

1.1 MySQL主从复制原理

MySQL主从复制是使用最为广泛的一种集群架构,其原理为主数据库(称为master)将所有对数据库的更新操作都记录在二进制日志(binlog)中,从数据库(称为slave)获取到主数据库的binlog并且顺序的对所有的更新操作进行重放,从而实现与主数据库保持数据同步。

MySQL数据库主从复制的实现涉及到3个关键线程。主数据库对每一个从数据库维护一个发布线程,当收到从数据库的同步请求后,读取指定位点信息之后的binlog日志信息返回给从数据库,同时返回新的位点信息。从数据库维护有2个线程:1个线程与主数据库建立连接,向主数据库发送同步请求并将获取到的binlog写入到中继日志(relay log),同时更新位点信息;第2个线程用于从中继日志中读取内容并进行重放,完成数据的同步[3]。由于binlog采用多文件存储方式,因此位点信息需要包括binlog filename(binlog文件名)以及binlog position(binlog偏移量定位)。

要实现MySQL的主从复制,必须打开主数据库的binlog记录功能,这样主数据库才会将之后的所有更新操作记录到binlog文件中。同时,从数据库只能同步启用binlog日志功能以后的数据。为了防止主从数据库数据不一致进而导致的从数据库同步失败,从数据库需要在启用binlog日志功能前把主数据库上已经存在的数据全部拷贝到从数据库上,保证主从数据库在同一数据基础上再进行同步。

1.2 Canal工作原理

Canal是阿里开源的数据库同步中间件,利用MySQL数据库主从复制的实现原理,基于主数据库的日志解析以获取数据的变更,提供变化数据的订阅与消费,主要用作跨机房数据库同步。

Canal的工作原理如下:

(1)Canal模拟MySQL从数据库的交互协议,伪装自己成为MySQL从数据库,向MySQL主数据库发送dump协议;

(2)MySQL主数据库收到dump请求,开始推送binlog流给从数据库,即Canal;

(3)Canal解析binlog对象、进行序列化、并存储;

(4)Canal客户端(Canal C/S框架客户端)通过增量订阅Canal服务端(Canal C/S框架服务端)已经序列化的数据,以获取MySQL主数据库的增量变更,并可根据需要对数据进行处理。

EventParser在向MySQL发送dump命令之前会先获取上次解析成功的位置(如果是第1次启动,则获取初始指定位置或者当前数据段binlog位点)。MySQL接受到dump命令后,由EventParser从MySQL上拉取binlog数据进行解析并传递给EventSink(传递给EventSink模块进行数据存储,是一个阻塞操作,直到存储成功 ),传送成功之后更新binlog位点信息。

Canal客户端与Canal服务端之间是C/S模式的通信,采用增量订阅/消费设计,当Canal 客户端主动发起拉取请求,Canal服务端就会模拟MySQL从数据库去MySQL 主数据库拉取binlog。所以通常Canal客户端通常是一个守护进程,通过不断调用get方法,实现对MySQL主数据库的变更的抓取。

2 跨安全分区数据库镜像

为解决iP9000一体化平台面临的数据“互联、互通、共享”问题,设计并实现了跨安全分区数据库镜像功能,提供了部署在不同安全分区的专业应用访问其他安全分区专业应用采集数据的可能性。

2.1 总体设计

本文研究的跨安全分区数据库镜像功能的主要设计目标如下:

(1)专业应用子系统将采集到的数据持久化存储到MySQL数据库中;

(2)在其他安全分区部署镜像数据库;

(3)自动完成数据库数据的跨安全分区的同步功能;

(4)镜像数据库可以是不同类型的数据库。

2.2 实现方案

iP9000一体化平台跨安全分区数据库镜像功能按照数据流向,需要依次实现以下功能。

(1)使用开源组件Canal模拟从数据库来实现MySQL主数据库binlog的增量订阅及消费,对数据变更进行抓取;

(2)对抓取的binlog数据进行解析和格式转换;

(3)通过一体化平台的跨安全分区数据同步机制传送到其他安全分区;

(4)其他安全分区一体化平台接收数据并写入镜像数据库;

总体实现方案如图1所示。

2.3 关键技术

(1)HA(Highly Available高可用性集群)机制

为了实现跨安全分区数据库镜像功能鲁棒运行,本文采用高可用性集群机制,通过多服务器的热备部署,使跨安全分区数据库镜像系统尽可能的对外提供可用的、完整的功能。

针对Canal服务端和客户端,数据库镜像系统使用开源的分布式应用程序协调服务zookeeper,实现集群中只有一个节点处于运行状态,其他节点处于备份状态。在实现高可用的同时,减少Canal服务端对MySQL主数据库同步请求,实现Canal客户端对数据的有序消费。

针对一体化平台的跨安全分区数据同步相关服务,数据库镜像系统使用一体化平台的调度机制,实现集群中节点的热备功能。一体化平台调度机制能够根据服务的心跳对集群中的服务进行热调度,保证在一个节点出现故障时能够及时快速的启用其他备用节点,有力的保证了跨安全分区传输功能以及同步写入镜像数据库功能的高可用性。

(2)binlog日志数据的解析

基于MySQL主数据库行的复制,Canal服务端抓取到MySQL主数据库的变更信息包含每条记录变更前及变更后的详细信息,从而可以准确地复制每一条记录。数据库镜像服务根据行数据变更前和变更后的对比,从而解析数据的增、删、改等操作,实现数据的解析功能。

(3)一体化平台跨安全分区同步

跨安全分区数据同步机制由一体化平台实现,对应用完全透明。应用可以根据需要将数据传输至任意安全分区同时写入一个或多个第三方商业数据库中,并支持Oracle、MySQL、MongoDB、达梦等多种数据库类型。数据库镜像服务在对binlog日志数据进行解析和格式转换之后,将格式化的数据交由一体化平台即可透明传输、写入部署在其他安全分区的镜像数据库,实现同构或异构的跨安全分区数据库镜像功能。

3 项目应用

以某电站为例。某电站配备了趋势分析系统以及现地采集系统(包括子系统:机组状态在线监测子系统、主变压器在线监测子系统、GIS在线监测子系统、GIL在线监测子系统等)。根据安全要求,现地采集系统和趋势分析系统不能运行在同一个安全分区。为解决数据分析系统能够及时准确访问到采集系统采集的数据,该电站部署投运了跨安全分区的数据库镜像功能,并可以较好地满足实际生产需要。

如图2所示,主变压器在线监测子系统和GIS/GIL在线监测子系统部署在安全II区,趋势分析系统部署在安全III区。由于采集子系统由不同厂家进行设计实现,分别将采集数据存储于部署在本安全分区的MySQL数据库和MariaDB数据库2个数据库。MariaDB数据库与MySQL数据库强的兼容性为MariaDB数据库跨安全分区同步提供了可能。为了将这2个数据库分别跨安全分区同步到部署在安全III区的镜像数据库,现场部署了如图2所示的MySQL、MariaDB 2套数据库镜像系统。

图2 某电站跨安全分区数据库镜像功能部署方式

安全II区 部 署2套Canal,由Canal服务端模拟从数据库,获取主数据库增量变更信息;之后,由HDBMIRROR(Canal 客户端)服务与Canal 服务端建立连接,将增量获取到的内容进行解析和格式转换,接着提交给本安全分区的iP9000隔离通信服务;最后,由部署在安全II区和安全III区的iP9000隔离通信服务实现跨隔离及写库功能。

为了保证系统的鲁棒性,Canal服务端和HDBMIRROR程序均由zookeeper集群统一调度,HDBMIRROR通过向zookeeper询问运行节点主机信息,实现与Canal服务端的连接,完成数据的增量订阅、解析、消费功能;iP9000隔离通信/写库服务由iP9000调度服务统一调度,由服务主节点完成数据的传输和写库功能。

4 结语

本文基于iP9000一体化平台面对多专业应用、多类数据跨安全分区形成统一数据平台的目的[4],设计并实现了跨安全分区的数据库镜像功能,为各专业应用之间数据的互通、互联与共享统一提供了支持。基于iP9000一体化平台的跨安全分区数据库镜像功能,在实际项目应用中成功地实现了不同专业应用系统之间通过数据库的镜像功能实现的跨安全分区的数据交互,满足了数据同步的及时性、准确性和完整性,完善了iP9000一体化平台的跨安全分区数据同步功能。

猜你喜欢

服务端镜像日志
一名老党员的工作日志
镜像
扶贫日志
雅皮的心情日志
雅皮的心情日志
镜像
新时期《移动Web服务端开发》课程教学改革的研究
镜像
摸清黑客套路防范木马侵入