国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

iP9000一體化平臺跨安全分區(qū)數(shù)據(jù)庫鏡像功能設(shè)計與實現(xiàn)

2021-11-15 10:16方茹慧文正國陳小松王京紅
水電站機(jī)電技術(shù) 2021年10期
關(guān)鍵詞:服務(wù)端鏡像日志

方茹慧,文正國,陳小松,王京紅

(北京中水科水電科技開發(fā)有限公司,北京 100038)

0 引言

iP9000一體化平臺是北京中水科水電科技開發(fā)有限公司研發(fā)的水利水電自動化業(yè)務(wù)一體化平臺,主要為水電站監(jiān)控、水情水調(diào)、設(shè)備安全監(jiān)測、設(shè)備故障分析與診斷、水電廠培訓(xùn)仿真、監(jiān)控運(yùn)維大數(shù)據(jù)管理與分析等各種專業(yè)應(yīng)用提供運(yùn)行和管理環(huán)境[1]。

在電力系統(tǒng)二次安全防護(hù)“安全分區(qū)、網(wǎng)絡(luò)專用、橫向隔離、縱向認(rèn)證”的安全防護(hù)規(guī)定下[2],隨著一體化平臺接入的業(yè)務(wù)子系統(tǒng)越來越多、業(yè)務(wù)子系統(tǒng)間數(shù)據(jù)應(yīng)用越來越復(fù)雜,如何使數(shù)據(jù)在不同安全分區(qū)、不同應(yīng)用之間達(dá)到“互通、互聯(lián)、共享”、滿足不同專業(yè)應(yīng)用系統(tǒng)之間的跨安全分區(qū)的同步與交互,成為了水利水電工程自動化業(yè)務(wù)部署和實施中亟待解決的問題。

1 數(shù)據(jù)庫鏡像技術(shù)原理

數(shù)據(jù)庫鏡像技術(shù),即每當(dāng)主數(shù)據(jù)庫更新時,數(shù)據(jù)庫鏡像系統(tǒng)會自動把更新后的數(shù)據(jù)復(fù)制到對側(cè)數(shù)據(jù)庫,保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。由于實際電站多以MySQL數(shù)據(jù)庫作為第三方商業(yè)數(shù)據(jù)庫部署數(shù)據(jù)庫鏡像功能,因此本文以MySQL數(shù)據(jù)庫的數(shù)據(jù)庫鏡像作為研究對象,主要探討如何解決MySQL數(shù)據(jù)庫作為持久化工具時的跨區(qū)數(shù)據(jù)鏡像問題。

1.1 MySQL主從復(fù)制原理

MySQL主從復(fù)制是使用最為廣泛的一種集群架構(gòu),其原理為主數(shù)據(jù)庫(稱為master)將所有對數(shù)據(jù)庫的更新操作都記錄在二進(jìn)制日志(binlog)中,從數(shù)據(jù)庫(稱為slave)獲取到主數(shù)據(jù)庫的binlog并且順序的對所有的更新操作進(jìn)行重放,從而實現(xiàn)與主數(shù)據(jù)庫保持?jǐn)?shù)據(jù)同步。

MySQL數(shù)據(jù)庫主從復(fù)制的實現(xiàn)涉及到3個關(guān)鍵線程。主數(shù)據(jù)庫對每一個從數(shù)據(jù)庫維護(hù)一個發(fā)布線程,當(dāng)收到從數(shù)據(jù)庫的同步請求后,讀取指定位點信息之后的binlog日志信息返回給從數(shù)據(jù)庫,同時返回新的位點信息。從數(shù)據(jù)庫維護(hù)有2個線程:1個線程與主數(shù)據(jù)庫建立連接,向主數(shù)據(jù)庫發(fā)送同步請求并將獲取到的binlog寫入到中繼日志(relay log),同時更新位點信息;第2個線程用于從中繼日志中讀取內(nèi)容并進(jìn)行重放,完成數(shù)據(jù)的同步[3]。由于binlog采用多文件存儲方式,因此位點信息需要包括binlog filename(binlog文件名)以及binlog position(binlog偏移量定位)。

要實現(xiàn)MySQL的主從復(fù)制,必須打開主數(shù)據(jù)庫的binlog記錄功能,這樣主數(shù)據(jù)庫才會將之后的所有更新操作記錄到binlog文件中。同時,從數(shù)據(jù)庫只能同步啟用binlog日志功能以后的數(shù)據(jù)。為了防止主從數(shù)據(jù)庫數(shù)據(jù)不一致進(jìn)而導(dǎo)致的從數(shù)據(jù)庫同步失敗,從數(shù)據(jù)庫需要在啟用binlog日志功能前把主數(shù)據(jù)庫上已經(jīng)存在的數(shù)據(jù)全部拷貝到從數(shù)據(jù)庫上,保證主從數(shù)據(jù)庫在同一數(shù)據(jù)基礎(chǔ)上再進(jìn)行同步。

1.2 Canal工作原理

Canal是阿里開源的數(shù)據(jù)庫同步中間件,利用MySQL數(shù)據(jù)庫主從復(fù)制的實現(xiàn)原理,基于主數(shù)據(jù)庫的日志解析以獲取數(shù)據(jù)的變更,提供變化數(shù)據(jù)的訂閱與消費,主要用作跨機(jī)房數(shù)據(jù)庫同步。

Canal的工作原理如下:

(1)Canal模擬MySQL從數(shù)據(jù)庫的交互協(xié)議,偽裝自己成為MySQL從數(shù)據(jù)庫,向MySQL主數(shù)據(jù)庫發(fā)送dump協(xié)議;

(2)MySQL主數(shù)據(jù)庫收到dump請求,開始推送binlog流給從數(shù)據(jù)庫,即Canal;

(3)Canal解析binlog對象、進(jìn)行序列化、并存儲;

(4)Canal客戶端(Canal C/S框架客戶端)通過增量訂閱Canal服務(wù)端(Canal C/S框架服務(wù)端)已經(jīng)序列化的數(shù)據(jù),以獲取MySQL主數(shù)據(jù)庫的增量變更,并可根據(jù)需要對數(shù)據(jù)進(jìn)行處理。

EventParser在向MySQL發(fā)送dump命令之前會先獲取上次解析成功的位置(如果是第1次啟動,則獲取初始指定位置或者當(dāng)前數(shù)據(jù)段binlog位點)。MySQL接受到dump命令后,由EventParser從MySQL上拉取binlog數(shù)據(jù)進(jìn)行解析并傳遞給EventSink(傳遞給EventSink模塊進(jìn)行數(shù)據(jù)存儲,是一個阻塞操作,直到存儲成功 ),傳送成功之后更新binlog位點信息。

Canal客戶端與Canal服務(wù)端之間是C/S模式的通信,采用增量訂閱/消費設(shè)計,當(dāng)Canal 客戶端主動發(fā)起拉取請求,Canal服務(wù)端就會模擬MySQL從數(shù)據(jù)庫去MySQL 主數(shù)據(jù)庫拉取binlog。所以通常Canal客戶端通常是一個守護(hù)進(jìn)程,通過不斷調(diào)用get方法,實現(xiàn)對MySQL主數(shù)據(jù)庫的變更的抓取。

2 跨安全分區(qū)數(shù)據(jù)庫鏡像

為解決iP9000一體化平臺面臨的數(shù)據(jù)“互聯(lián)、互通、共享”問題,設(shè)計并實現(xiàn)了跨安全分區(qū)數(shù)據(jù)庫鏡像功能,提供了部署在不同安全分區(qū)的專業(yè)應(yīng)用訪問其他安全分區(qū)專業(yè)應(yīng)用采集數(shù)據(jù)的可能性。

2.1 總體設(shè)計

本文研究的跨安全分區(qū)數(shù)據(jù)庫鏡像功能的主要設(shè)計目標(biāo)如下:

(1)專業(yè)應(yīng)用子系統(tǒng)將采集到的數(shù)據(jù)持久化存儲到MySQL數(shù)據(jù)庫中;

(2)在其他安全分區(qū)部署鏡像數(shù)據(jù)庫;

(3)自動完成數(shù)據(jù)庫數(shù)據(jù)的跨安全分區(qū)的同步功能;

(4)鏡像數(shù)據(jù)庫可以是不同類型的數(shù)據(jù)庫。

2.2 實現(xiàn)方案

iP9000一體化平臺跨安全分區(qū)數(shù)據(jù)庫鏡像功能按照數(shù)據(jù)流向,需要依次實現(xiàn)以下功能。

(1)使用開源組件Canal模擬從數(shù)據(jù)庫來實現(xiàn)MySQL主數(shù)據(jù)庫binlog的增量訂閱及消費,對數(shù)據(jù)變更進(jìn)行抓??;

(2)對抓取的binlog數(shù)據(jù)進(jìn)行解析和格式轉(zhuǎn)換;

(3)通過一體化平臺的跨安全分區(qū)數(shù)據(jù)同步機(jī)制傳送到其他安全分區(qū);

(4)其他安全分區(qū)一體化平臺接收數(shù)據(jù)并寫入鏡像數(shù)據(jù)庫;

總體實現(xiàn)方案如圖1所示。

2.3 關(guān)鍵技術(shù)

(1)HA(Highly Available高可用性集群)機(jī)制

為了實現(xiàn)跨安全分區(qū)數(shù)據(jù)庫鏡像功能魯棒運(yùn)行,本文采用高可用性集群機(jī)制,通過多服務(wù)器的熱備部署,使跨安全分區(qū)數(shù)據(jù)庫鏡像系統(tǒng)盡可能的對外提供可用的、完整的功能。

針對Canal服務(wù)端和客戶端,數(shù)據(jù)庫鏡像系統(tǒng)使用開源的分布式應(yīng)用程序協(xié)調(diào)服務(wù)zookeeper,實現(xiàn)集群中只有一個節(jié)點處于運(yùn)行狀態(tài),其他節(jié)點處于備份狀態(tài)。在實現(xiàn)高可用的同時,減少Canal服務(wù)端對MySQL主數(shù)據(jù)庫同步請求,實現(xiàn)Canal客戶端對數(shù)據(jù)的有序消費。

針對一體化平臺的跨安全分區(qū)數(shù)據(jù)同步相關(guān)服務(wù),數(shù)據(jù)庫鏡像系統(tǒng)使用一體化平臺的調(diào)度機(jī)制,實現(xiàn)集群中節(jié)點的熱備功能。一體化平臺調(diào)度機(jī)制能夠根據(jù)服務(wù)的心跳對集群中的服務(wù)進(jìn)行熱調(diào)度,保證在一個節(jié)點出現(xiàn)故障時能夠及時快速的啟用其他備用節(jié)點,有力的保證了跨安全分區(qū)傳輸功能以及同步寫入鏡像數(shù)據(jù)庫功能的高可用性。

(2)binlog日志數(shù)據(jù)的解析

基于MySQL主數(shù)據(jù)庫行的復(fù)制,Canal服務(wù)端抓取到MySQL主數(shù)據(jù)庫的變更信息包含每條記錄變更前及變更后的詳細(xì)信息,從而可以準(zhǔn)確地復(fù)制每一條記錄。數(shù)據(jù)庫鏡像服務(wù)根據(jù)行數(shù)據(jù)變更前和變更后的對比,從而解析數(shù)據(jù)的增、刪、改等操作,實現(xiàn)數(shù)據(jù)的解析功能。

(3)一體化平臺跨安全分區(qū)同步

跨安全分區(qū)數(shù)據(jù)同步機(jī)制由一體化平臺實現(xiàn),對應(yīng)用完全透明。應(yīng)用可以根據(jù)需要將數(shù)據(jù)傳輸至任意安全分區(qū)同時寫入一個或多個第三方商業(yè)數(shù)據(jù)庫中,并支持Oracle、MySQL、MongoDB、達(dá)夢等多種數(shù)據(jù)庫類型。數(shù)據(jù)庫鏡像服務(wù)在對binlog日志數(shù)據(jù)進(jìn)行解析和格式轉(zhuǎn)換之后,將格式化的數(shù)據(jù)交由一體化平臺即可透明傳輸、寫入部署在其他安全分區(qū)的鏡像數(shù)據(jù)庫,實現(xiàn)同構(gòu)或異構(gòu)的跨安全分區(qū)數(shù)據(jù)庫鏡像功能。

3 項目應(yīng)用

以某電站為例。某電站配備了趨勢分析系統(tǒng)以及現(xiàn)地采集系統(tǒng)(包括子系統(tǒng):機(jī)組狀態(tài)在線監(jiān)測子系統(tǒng)、主變壓器在線監(jiān)測子系統(tǒng)、GIS在線監(jiān)測子系統(tǒng)、GIL在線監(jiān)測子系統(tǒng)等)。根據(jù)安全要求,現(xiàn)地采集系統(tǒng)和趨勢分析系統(tǒng)不能運(yùn)行在同一個安全分區(qū)。為解決數(shù)據(jù)分析系統(tǒng)能夠及時準(zhǔn)確訪問到采集系統(tǒng)采集的數(shù)據(jù),該電站部署投運(yùn)了跨安全分區(qū)的數(shù)據(jù)庫鏡像功能,并可以較好地滿足實際生產(chǎn)需要。

如圖2所示,主變壓器在線監(jiān)測子系統(tǒng)和GIS/GIL在線監(jiān)測子系統(tǒng)部署在安全I(xiàn)I區(qū),趨勢分析系統(tǒng)部署在安全I(xiàn)II區(qū)。由于采集子系統(tǒng)由不同廠家進(jìn)行設(shè)計實現(xiàn),分別將采集數(shù)據(jù)存儲于部署在本安全分區(qū)的MySQL數(shù)據(jù)庫和MariaDB數(shù)據(jù)庫2個數(shù)據(jù)庫。MariaDB數(shù)據(jù)庫與MySQL數(shù)據(jù)庫強(qiáng)的兼容性為MariaDB數(shù)據(jù)庫跨安全分區(qū)同步提供了可能。為了將這2個數(shù)據(jù)庫分別跨安全分區(qū)同步到部署在安全I(xiàn)II區(qū)的鏡像數(shù)據(jù)庫,現(xiàn)場部署了如圖2所示的MySQL、MariaDB 2套數(shù)據(jù)庫鏡像系統(tǒng)。

圖2 某電站跨安全分區(qū)數(shù)據(jù)庫鏡像功能部署方式

安全I(xiàn)I區(qū) 部 署2套Canal,由Canal服務(wù)端模擬從數(shù)據(jù)庫,獲取主數(shù)據(jù)庫增量變更信息;之后,由HDBMIRROR(Canal 客戶端)服務(wù)與Canal 服務(wù)端建立連接,將增量獲取到的內(nèi)容進(jìn)行解析和格式轉(zhuǎn)換,接著提交給本安全分區(qū)的iP9000隔離通信服務(wù);最后,由部署在安全I(xiàn)I區(qū)和安全I(xiàn)II區(qū)的iP9000隔離通信服務(wù)實現(xiàn)跨隔離及寫庫功能。

為了保證系統(tǒng)的魯棒性,Canal服務(wù)端和HDBMIRROR程序均由zookeeper集群統(tǒng)一調(diào)度,HDBMIRROR通過向zookeeper詢問運(yùn)行節(jié)點主機(jī)信息,實現(xiàn)與Canal服務(wù)端的連接,完成數(shù)據(jù)的增量訂閱、解析、消費功能;iP9000隔離通信/寫庫服務(wù)由iP9000調(diào)度服務(wù)統(tǒng)一調(diào)度,由服務(wù)主節(jié)點完成數(shù)據(jù)的傳輸和寫庫功能。

4 結(jié)語

本文基于iP9000一體化平臺面對多專業(yè)應(yīng)用、多類數(shù)據(jù)跨安全分區(qū)形成統(tǒng)一數(shù)據(jù)平臺的目的[4],設(shè)計并實現(xiàn)了跨安全分區(qū)的數(shù)據(jù)庫鏡像功能,為各專業(yè)應(yīng)用之間數(shù)據(jù)的互通、互聯(lián)與共享統(tǒng)一提供了支持。基于iP9000一體化平臺的跨安全分區(qū)數(shù)據(jù)庫鏡像功能,在實際項目應(yīng)用中成功地實現(xiàn)了不同專業(yè)應(yīng)用系統(tǒng)之間通過數(shù)據(jù)庫的鏡像功能實現(xiàn)的跨安全分區(qū)的數(shù)據(jù)交互,滿足了數(shù)據(jù)同步的及時性、準(zhǔn)確性和完整性,完善了iP9000一體化平臺的跨安全分區(qū)數(shù)據(jù)同步功能。

猜你喜歡
服務(wù)端鏡像日志
一名老黨員的工作日志
鏡像
扶貧日志
雅皮的心情日志
雅皮的心情日志
鏡像
新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
鏡像
摸清黑客套路防范木馬侵入
大兴区| 定西市| 江都市| 无为县| 新平| 南澳县| 康平县| 峨眉山市| 哈尔滨市| 迭部县| 尚志市| 龙门县| 德江县| 阿荣旗| 石渠县| 昌宁县| 永宁县| 翼城县| 太和县| 五大连池市| 洛宁县| 建德市| 灵寿县| 新和县| 祁阳县| 高淳县| 洪雅县| 当涂县| 信阳市| 阿克苏市| 措勤县| 溧阳市| 江北区| 荃湾区| 翁牛特旗| 南江县| 博乐市| 定兴县| 阜平县| 新乐市| 台中市|