亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于SQL Server的數(shù)據(jù)同步方案的研究及應(yīng)用

        2019-12-24 01:13:28陳瀟
        軟件工程 2019年12期

        陳瀟

        摘? 要:隨著企業(yè)對(duì)信息系統(tǒng)的依賴(lài)性日益增加,數(shù)據(jù)庫(kù)作為信息系統(tǒng)的核心承擔(dān)著重要作用。為了緩解服務(wù)器訪問(wèn)壓力,提升讀寫(xiě)效率,很多數(shù)據(jù)庫(kù)管理員選擇搭建服務(wù)器集群。通過(guò)數(shù)據(jù)主從復(fù)制技術(shù)可以實(shí)現(xiàn)集群內(nèi)部服務(wù)器之間數(shù)據(jù)的同步,實(shí)現(xiàn)負(fù)載均衡。本文對(duì)SQL Server數(shù)據(jù)庫(kù)發(fā)布/訂閱模式下的三種同步方案進(jìn)行研究,并通過(guò)事務(wù)發(fā)布方式實(shí)現(xiàn)數(shù)據(jù)的同步。

        關(guān)鍵詞:SQL Server;數(shù)據(jù)同步;主從復(fù)制

        中圖分類(lèi)號(hào):TP392? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

        Research and Application of Data Synchronization Scheme Based on SQL Server

        CHEN Xiao

        (Xuzhou Finance and Economics Branch,Jiangsu Union Technical Institute,Xuzhou 221008,China)

        Abstract:With the increasing reliance on information systems in the enterprises,database,as the core of information systems,is undertaking the extremely vital role.To alleviate the pressure of read and write access and enhance the effect of application responses,many database administrators tend to build server clusters to accomplish data synchronization between the servers and load balancing by using the technology of data master-slave replication.This paper studies three replication schemes of SQL Server database publish/subscribe model,and accomplishes data synchronization through publish/subscribe model.

        Keywords:SQL Server;data synchronization;master-slave replication

        1? ?引言(Introduction)

        隨著企業(yè)對(duì)信息系統(tǒng)的依賴(lài)性日益增加,數(shù)據(jù)庫(kù)作為信息系統(tǒng)的核心承擔(dān)著重要作用。為了保證系統(tǒng)的高可用性和穩(wěn)定性,很多企業(yè)擴(kuò)展單臺(tái)SQL Server服務(wù)器,構(gòu)建服務(wù)器集群。服務(wù)器之間數(shù)據(jù)同步是保證集群數(shù)據(jù)一致性的基礎(chǔ),各服務(wù)器間通過(guò)相應(yīng)的策略同步數(shù)據(jù)[1]。在業(yè)務(wù)復(fù)雜的系統(tǒng)中,主數(shù)據(jù)庫(kù)主要負(fù)責(zé)寫(xiě)數(shù)據(jù),從數(shù)據(jù)庫(kù)主要負(fù)責(zé)讀數(shù)據(jù),這樣能有效地減輕單臺(tái)服務(wù)器讀寫(xiě)壓力。數(shù)據(jù)同步還應(yīng)用于以下場(chǎng)合:

        (1)數(shù)據(jù)匯總。如某個(gè)公司在不同地區(qū)設(shè)置銷(xiāo)售分公司,利用數(shù)據(jù)同步可以將各地區(qū)銷(xiāo)售分表進(jìn)行匯總,形成公司銷(xiāo)售總表。另一種情況是對(duì)水平切分(如按順序切分、Hash散列切分)的表進(jìn)行數(shù)據(jù)統(tǒng)一,切分后可以利用數(shù)據(jù)同步進(jìn)行匯總。

        (2)業(yè)務(wù)拆分。根據(jù)不同的業(yè)務(wù)進(jìn)行劃分。如企業(yè)可以劃分為供內(nèi)網(wǎng)辦公用服務(wù)器,外網(wǎng)客戶(hù)訪問(wèn)服務(wù)器,備份服務(wù)器等。利用同步方案可以保證各服務(wù)器的數(shù)據(jù)一致性。

        (3)故障轉(zhuǎn)移。建立數(shù)據(jù)同步機(jī)制后,如果主服務(wù)器出現(xiàn)故障則可以隨時(shí)切換其他服務(wù)器保證業(yè)務(wù)正常運(yùn)行。

        2? ?發(fā)布/訂閱模式(Publish/subscribe model)

        SQL Server提供的多種數(shù)據(jù)同步的模式包括:鏡像方式、log shipping、發(fā)布/訂閱和故障集群轉(zhuǎn)移等。本文主要介紹通過(guò)發(fā)布/訂閱方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)主從同步。

        發(fā)布/訂閱方式是常見(jiàn)的一種主從同步模式,主服務(wù)器進(jìn)行消息發(fā)布,從服務(wù)器進(jìn)行訂閱,當(dāng)主服務(wù)器中數(shù)據(jù)發(fā)生變化時(shí),就將消息發(fā)送至訂閱服務(wù)器,訂閱服務(wù)器接收消息后就開(kāi)始從發(fā)布服務(wù)器向訂閱服務(wù)器進(jìn)行數(shù)據(jù)傳遞,進(jìn)而在兩者之間實(shí)現(xiàn)數(shù)據(jù)同步。SQL Server中的發(fā)布模式有:快照發(fā)布、事務(wù)發(fā)布、合并發(fā)布。

        2.1? ?快照發(fā)布

        快照發(fā)布是完全按照數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象出現(xiàn)時(shí)的狀態(tài)來(lái)復(fù)制和分發(fā)它們的過(guò)程[2]。首先在某一時(shí)刻將發(fā)布數(shù)據(jù)庫(kù)進(jìn)行快照后產(chǎn)生鏡像文件,然后在約定的時(shí)刻或時(shí)間間隔內(nèi)由分發(fā)代理程序?qū)⑽募?fù)制到訂閱數(shù)據(jù)庫(kù),如圖1所示。訂閱服務(wù)器復(fù)制的內(nèi)容是發(fā)布數(shù)據(jù)庫(kù)某一時(shí)刻的狀態(tài)。

        快照方式不實(shí)時(shí)進(jìn)行數(shù)據(jù)同步,而是每隔一個(gè)時(shí)段或在某一個(gè)時(shí)間點(diǎn)進(jìn)行數(shù)據(jù)庫(kù)復(fù)制,同步方式為單向同步。優(yōu)點(diǎn)是數(shù)據(jù)復(fù)制方式穩(wěn)定,不必監(jiān)視對(duì)數(shù)據(jù)的更新。由于是將數(shù)據(jù)庫(kù)復(fù)制到訂閱服務(wù)器,所以在大數(shù)據(jù)量的同步場(chǎng)景下存在以下缺點(diǎn):占用網(wǎng)絡(luò)帶寬較大、數(shù)據(jù)同步周期較長(zhǎng)[3]??煺辗绞竭m用于以下場(chǎng)景:

        (1)主庫(kù)數(shù)據(jù)量小、更新不頻繁。例如,學(xué)生管理系統(tǒng)中的學(xué)生表在每學(xué)期開(kāi)學(xué)后都要進(jìn)行一次更新,因?yàn)楦轮芷谙鄬?duì)固定,所以可以在主庫(kù)學(xué)生表更新數(shù)據(jù)后從庫(kù)進(jìn)行快照復(fù)制。

        (2)主從庫(kù)接受同步延遲。快照方式由于復(fù)制數(shù)據(jù)量大導(dǎo)致延遲較高,可以利用讀寫(xiě)較少的時(shí)間(如深夜)進(jìn)行快照復(fù)制,將影響范圍縮減至最低。

        2.2? ?事務(wù)發(fā)布

        事務(wù)發(fā)布是將發(fā)布服務(wù)器的初始快照將復(fù)制到訂閱服務(wù)器。訂閱服務(wù)器接收到初始數(shù)據(jù)后,代理服務(wù)會(huì)連續(xù)監(jiān)測(cè)數(shù)據(jù)變化,當(dāng)發(fā)布服務(wù)器上發(fā)生數(shù)據(jù)修改時(shí),會(huì)將這些新增的事務(wù)傳遞給日志代理,然后日志代理通知訂閱服務(wù)器,訂閱服務(wù)器進(jìn)行新增事務(wù)的執(zhí)行,如圖2所示。

        主從服務(wù)器之間通過(guò)新增事務(wù)復(fù)制的方式進(jìn)行主從同步,發(fā)布數(shù)據(jù)庫(kù)上增刪改等操作的事務(wù)日志會(huì)在短時(shí)間內(nèi)復(fù)制到訂閱數(shù)據(jù)庫(kù)。相對(duì)快照復(fù)制,事務(wù)復(fù)制優(yōu)點(diǎn)是復(fù)制內(nèi)容小、數(shù)據(jù)傳遞快,所以從庫(kù)更新延遲小,對(duì)大數(shù)據(jù)量的同步有可靠保證。缺點(diǎn)是如果主庫(kù)進(jìn)行讀寫(xiě)操作頻繁,則同步過(guò)程中會(huì)對(duì)服務(wù)器性能造成影響。由于發(fā)布和訂閱服務(wù)之間是實(shí)時(shí)進(jìn)行事務(wù)傳遞,所以要保證兩者之間相互連接的網(wǎng)絡(luò)穩(wěn)定可靠[4]。這種同步方式適用于以下應(yīng)用場(chǎng)景:

        (1)要求主從庫(kù)同步延遲小。因?yàn)閺?fù)制的內(nèi)容是數(shù)據(jù)庫(kù)更改的增量,且事務(wù)日志內(nèi)容較小,所以可以在較短的時(shí)間實(shí)現(xiàn)同步。

        (2)主庫(kù)頻繁進(jìn)行DML操作(增加、刪除、修改)。如果采用快照方式同步,則同步時(shí)延過(guò)高,不能做出及時(shí)響應(yīng)。如鐵路票務(wù)系統(tǒng)數(shù)據(jù)庫(kù)中的訂票信息表頻繁進(jìn)行訂票和改簽操作(增加、修改),如同步不及時(shí)則會(huì)造成主從庫(kù)查詢(xún)余票結(jié)果不一致的情況。

        (3)數(shù)據(jù)同步方式為單向。同步的方向是由發(fā)布同步至訂閱服務(wù)器,訂閱服務(wù)器上的數(shù)據(jù)庫(kù)為只讀狀態(tài)。但如果訂閱數(shù)據(jù)庫(kù)上產(chǎn)生更改,則不會(huì)將事務(wù)回傳至發(fā)布服務(wù)器。

        2.3? ?合并發(fā)布

        快照發(fā)布和事務(wù)發(fā)布數(shù)據(jù)同步的方式都是單向,即從庫(kù)復(fù)制主庫(kù)數(shù)據(jù)。合并發(fā)布數(shù)據(jù)同步是雙向的,訂閱數(shù)據(jù)庫(kù)復(fù)制到發(fā)布數(shù)據(jù)庫(kù)的快照后,可以各自進(jìn)行讀寫(xiě)操作[5]。在各服務(wù)器上產(chǎn)生的數(shù)據(jù)更改操作會(huì)被SQL Server監(jiān)視,訂閱服務(wù)器和發(fā)布服務(wù)器連接時(shí),交換自上次發(fā)布快照以來(lái)各自發(fā)生的更改。這種復(fù)制方式的優(yōu)點(diǎn)是允許在主從服務(wù)器上分別進(jìn)行讀寫(xiě)操作,從庫(kù)獨(dú)立性較高。缺點(diǎn)是在讀寫(xiě)量極大的情況下數(shù)據(jù)合并更新可能會(huì)產(chǎn)生沖突。合并發(fā)布方式適用于以下場(chǎng)景:

        (1)接受一定的同步延遲。集群訂閱服務(wù)之間的同步不是實(shí)時(shí)進(jìn)行,某個(gè)訂閱服務(wù)器發(fā)生更改后,會(huì)脫機(jī)進(jìn)行數(shù)據(jù)更改,并將更改同步到發(fā)布服務(wù)器和其他訂閱服務(wù)器,所以會(huì)造成一定的時(shí)間延遲。

        (2)應(yīng)用程序訪問(wèn)最終更改結(jié)果。例如訂單管理系統(tǒng)數(shù)據(jù)庫(kù),如果同步前訂閱數(shù)據(jù)庫(kù)中的訂單表中數(shù)據(jù)進(jìn)行了多次更改,則與發(fā)布數(shù)據(jù)庫(kù)同步時(shí)只同步最后一次的更改結(jié)果,而不會(huì)反映中間的修改過(guò)程[6]。

        (3)可在主從服務(wù)器上分別進(jìn)行讀寫(xiě)操作。不同于前兩種同步方式的單向性,合并發(fā)布方式中發(fā)布訂閱數(shù)據(jù)庫(kù)都可以進(jìn)行讀寫(xiě)操作。例如電子商務(wù)系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)可以分布在不同服務(wù)器上,各服務(wù)器都可接受前臺(tái)應(yīng)用程序的I/O操作。

        3 使用事務(wù)發(fā)布方式實(shí)現(xiàn)數(shù)據(jù)同步(Data synchronization through transaction publishing)

        SQL Server中要進(jìn)行數(shù)據(jù)同步需要滿(mǎn)足以下條件:被同步的數(shù)據(jù)表需要有主鍵,如果沒(méi)有主鍵則會(huì)增加一個(gè)int類(lèi)型的自增列id(增量為1);SQL Server代理服務(wù)必須啟動(dòng);在進(jìn)行SQL Server注冊(cè)時(shí),發(fā)布服務(wù)器和訂閱服務(wù)器必須使用計(jì)算機(jī)名稱(chēng),不能使用IP地址或別名注冊(cè)。

        本文將采用事務(wù)發(fā)布模式實(shí)現(xiàn)主從服務(wù)器上對(duì)應(yīng)的數(shù)據(jù)庫(kù)E_business_DB(電子商務(wù)數(shù)據(jù)庫(kù))數(shù)據(jù)同步。

        3.1? ?主庫(kù)建立發(fā)布

        (1)E_business_DB是主數(shù)據(jù)庫(kù),E_business_DB_R是被同步的數(shù)據(jù)庫(kù)既從庫(kù),初始化狀態(tài)下主庫(kù)和從庫(kù)中的userInfo表(用戶(hù)信息表)數(shù)據(jù)一致。

        (2)將主庫(kù)E_business_DB進(jìn)行發(fā)布,并設(shè)置發(fā)布數(shù)據(jù)庫(kù)并選擇發(fā)布類(lèi)型為“事務(wù)發(fā)布”,這樣發(fā)布服務(wù)器將事務(wù)流式地傳送到訂閱服務(wù)器。

        (3)根據(jù)需要選擇要發(fā)布數(shù)據(jù)庫(kù)對(duì)象,如圖3所示。

        (4)在快照代理設(shè)置內(nèi)容中選擇“立即創(chuàng)建快照”,也可以在“計(jì)劃在下時(shí)間運(yùn)行快照代理”中設(shè)置運(yùn)行時(shí)間。

        (5)指定運(yùn)行時(shí)的數(shù)據(jù)庫(kù)賬戶(hù)并進(jìn)行代理安全性設(shè)置后,數(shù)據(jù)庫(kù)即可發(fā)布成功。

        快照發(fā)布的流程和事務(wù)發(fā)布類(lèi)似,區(qū)別主要在主從數(shù)據(jù)庫(kù)同步的及時(shí)性,快照發(fā)布在規(guī)定時(shí)間或重啟代理服務(wù)時(shí)會(huì)進(jìn)行數(shù)據(jù)同步[7]。

        3.2? ?從庫(kù)進(jìn)行訂閱

        (1)在從庫(kù)E_business_DB_R上建立訂閱,選擇主數(shù)據(jù)庫(kù)創(chuàng)建的發(fā)布,設(shè)置在分發(fā)服務(wù)器上運(yùn)行所有代理。

        (2)選擇訂閱數(shù)據(jù)庫(kù)E_business_DB后,設(shè)置運(yùn)行分發(fā)代理的計(jì)算機(jī)賬戶(hù)和連接的訂閱服務(wù)器賬戶(hù),如圖4所示。

        (3)同步計(jì)劃中選擇代理計(jì)劃選項(xiàng)為“連續(xù)運(yùn)行”;在初始化訂閱頁(yè)面中設(shè)置初始化時(shí)間,確認(rèn)訂閱信息后即可創(chuàng)建訂閱。訂閱成功后會(huì)在主庫(kù)中顯示數(shù)據(jù)庫(kù)訂閱信息。

        3.3? ?主從庫(kù)數(shù)據(jù)同步

        在主庫(kù)的userInfo(用戶(hù)信息)表中增加2條記錄,使記錄數(shù)為12,如圖5所示。查詢(xún)從庫(kù)中的userInfo表,發(fā)現(xiàn)表中數(shù)據(jù)行數(shù)已經(jīng)和主庫(kù)表一致,如圖6所示。說(shuō)明主庫(kù)與從庫(kù)已經(jīng)完成數(shù)據(jù)同步。

        4? ?結(jié)論(Conclusion)

        通過(guò)主從復(fù)制技術(shù)可以實(shí)現(xiàn)集群內(nèi)服務(wù)器間的數(shù)據(jù)同步。數(shù)據(jù)庫(kù)管理員在選擇同步方案時(shí),需要綜合考慮數(shù)據(jù)量、同步延遲、網(wǎng)絡(luò)可靠性等影響因素[8]。結(jié)合具體業(yè)務(wù)的應(yīng)用場(chǎng)景選擇合適方案,從而緩解單臺(tái)服務(wù)器讀寫(xiě)壓力,實(shí)現(xiàn)集群間負(fù)載均衡。

        參考文獻(xiàn)(References)

        [1] 夏明慧.分布式數(shù)據(jù)庫(kù)數(shù)據(jù)同步的應(yīng)用分析[J].智能城市,2016(03):82.

        [2] 季剛.基于存儲(chǔ)過(guò)程的主從服務(wù)器數(shù)據(jù)庫(kù)同步的實(shí)現(xiàn)[J].計(jì)算技術(shù)與自動(dòng)化,2012,31(3):114-116.

        [3] 景慎艷.分布式數(shù)據(jù)庫(kù)同步技術(shù)及其應(yīng)用[J].計(jì)算機(jī)與自動(dòng)化技術(shù),2008,34(12):48-50.

        [4] 劉娟娟,劉帥.數(shù)據(jù)庫(kù)同步技術(shù)的研究與實(shí)現(xiàn)[J].軟件工程,2017,20(1):1-4.

        [5] 肖剛.異構(gòu)數(shù)據(jù)庫(kù)更新同步研究與實(shí)現(xiàn)[J].數(shù)字通信世界,2017(07):47.

        [6] 李偉洪.服務(wù)器負(fù)載均衡的實(shí)現(xiàn)與分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2019(07):12-14.

        [7] 李寧.一種異構(gòu)關(guān)系型數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方案[J].福建電腦,2018(10):114-117.

        [8] 劉維志.數(shù)據(jù)庫(kù)應(yīng)用的高可用性及實(shí)現(xiàn)技術(shù)研究[J].信息系統(tǒng)工程,2013(4):97;119.

        作者簡(jiǎn)介:

        陳? 瀟(1983-),男,碩士,講師.研究領(lǐng)域:數(shù)據(jù)庫(kù)管理與應(yīng)用,管理信息系統(tǒng)開(kāi)發(fā).

        久久天堂av综合合色| 国产亚洲青春草在线视频| 天堂麻豆精品在线观看| 午夜dv内射一区二区| 亚洲日韩av无码中文字幕美国| 国产日产精品久久久久久| 国产偷拍盗摄一区二区| 国产人妻熟女呻吟在线观看| 日本久久高清一区二区三区毛片| 成人国产午夜在线视频| 精品国产亚洲av成人一区| 户外精品一区二区三区| 国产女人水真多18毛片18精品| 久久99欧美| 国产成人高清精品亚洲一区| 一个少妇的淫片免费看| 欧美极品少妇无套实战| 亚洲一区二区婷婷久久| 国产目拍亚洲精品一区二区| 2022精品久久久久久中文字幕| 国产天堂av在线播放资源| 色偷偷亚洲第一成人综合网址| 亚洲人成无码网站久久99热国产| 蜜桃av夺取一区二区三区| 亚洲一区二区国产激情| 狠狠做深爱婷婷久久综合一区| 91视频爱爱| 91国产熟女自拍视频| 日本大乳高潮视频在线观看| 久久亚洲国产精品成人av秋霞| 亚洲双色视频在线观看| 日本高清乱码中文字幕| 国产精品毛片久久久久久久| 久久久久久无中无码| 色婷婷精品午夜在线播放| 国产又色又爽又黄刺激在线视频| 亚洲成年网站在线777| 日本老熟女一区二区三区| 亚洲午夜久久久久久久久电影网 | 国产无套内射久久久国产| 无码av免费永久免费永久专区|