7月28日,Back You Up 鼎甲線上公開課第13期開講,中華區(qū)技術(shù)支持經(jīng)理李浩介紹了數(shù)據(jù)庫(kù)同步技術(shù)的原理以及定時(shí)復(fù)制與實(shí)時(shí)復(fù)制的區(qū)別,并給我們演示了一遍實(shí)際的操作。
歡迎大家進(jìn)入到今天《數(shù)據(jù)庫(kù)同步技術(shù)解析》這個(gè)課程,我會(huì)把技術(shù)原理和操作都給大家做個(gè)介紹。
為什么會(huì)有數(shù)據(jù)庫(kù)復(fù)制技術(shù)呢?我相信大家會(huì)比較容易理解,因?yàn)?strong>在任何一個(gè)企業(yè)里面核心的數(shù)據(jù)都是存儲(chǔ)在數(shù)據(jù)庫(kù)里面的。
在容災(zāi)需求方面,在單機(jī)模式主要解決數(shù)據(jù)庫(kù)單點(diǎn)故障的問題。如果企業(yè)有做異地容災(zāi)的考慮,那我們會(huì)擴(kuò)展到在異地還會(huì)有一臺(tái)數(shù)據(jù)庫(kù)的備機(jī),即便是你本地生產(chǎn)機(jī)房完全不可用的話,在異地也能把你的數(shù)據(jù)庫(kù)監(jiān)管起來。
大數(shù)據(jù)平臺(tái)有一個(gè)很重要的需求——數(shù)據(jù)搜集。那核心的數(shù)據(jù)怎么樣能同步到大數(shù)據(jù)這個(gè)平臺(tái)上?這個(gè)可以使用我們的數(shù)據(jù)庫(kù)容災(zāi)技術(shù)來實(shí)現(xiàn)。
這就是我們做數(shù)據(jù)庫(kù)容災(zāi)主要的三個(gè)場(chǎng)景。
那么數(shù)據(jù)庫(kù)同步的原理是怎么樣的呢?
這邊給大家做一個(gè)簡(jiǎn)單的流程介紹。我們會(huì)把生產(chǎn)庫(kù)整庫(kù)的文件同步到備機(jī)上做一個(gè)覆蓋,初始的同步二者數(shù)據(jù)基本上是一致的。
如果用戶有一個(gè)更高的需求,比如想做實(shí)時(shí)的數(shù)據(jù)庫(kù)容災(zāi),那我們可以應(yīng)用實(shí)時(shí)日志同步技術(shù),在定時(shí)同步的基礎(chǔ)上追加實(shí)時(shí)同步。
那么什么時(shí)候應(yīng)用呢?我們這里會(huì)設(shè)置一個(gè)固定的頻率。
如果是我們負(fù)載比較高的機(jī)器,頻率要稍微設(shè)置低一些,好讓它及時(shí)地把在線日志應(yīng)用上去,減少在故障時(shí)激活備機(jī)所應(yīng)用日志的數(shù)據(jù)量,提高接管的效率。
這就是我們實(shí)現(xiàn)的原理。
這塊給大家講講我們鼎甲數(shù)據(jù)庫(kù)同步容災(zāi)的一些優(yōu)勢(shì):
第一個(gè):物理復(fù)制方式。什么是物理復(fù)制呢?其實(shí)就是把數(shù)據(jù)文件(包括數(shù)據(jù)庫(kù)的配置)全都同步到備機(jī)上去。還有一種市面上大家常接觸的是邏輯復(fù)制,這種模式是不能同步所有類型的數(shù)據(jù),只能同步表里面的一些數(shù)據(jù)。我們的優(yōu)勢(shì)是可以同步所有數(shù)據(jù)類型,而且效率和性能方面是非常高的。
第二個(gè):兼容性,我們的主庫(kù)是積蓄狀態(tài)也是可以兼容的。比如說你是Oracle RAC集群、SQL Server數(shù)據(jù)庫(kù)集群等,在這些基礎(chǔ)上會(huì)再進(jìn)行一個(gè)同步背景,實(shí)現(xiàn)像異地容災(zāi)這種場(chǎng)景。
第三個(gè)是目前我們產(chǎn)品上所支持的數(shù)據(jù)庫(kù)類型有兩種(Oracle、SQLServer),還有一種是MySQL。我們產(chǎn)品8.0做了一個(gè)架構(gòu)把MySQL同步功能遷移過來,近期也會(huì)上線。
在RPO方面,我們能做定時(shí)的復(fù)制,也能做實(shí)時(shí)的復(fù)制。而實(shí)時(shí)復(fù)制的同步頻率是在秒級(jí)的,也就意味著我們是以幾乎零丟失的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)的同步。
在細(xì)粒度方面,我們只同步了日志,所同步的數(shù)據(jù)量很小。而且我們不要求主庫(kù)和磁盤空間是完全一樣的。
下面是我們數(shù)據(jù)庫(kù)同步的應(yīng)用場(chǎng)景,我這邊是用行業(yè)給大家做一個(gè)舉例。我們常跟客戶提的一個(gè)點(diǎn)就是用戶需要重視數(shù)據(jù)庫(kù)的保障。因?yàn)閿?shù)據(jù)災(zāi)難而導(dǎo)致數(shù)據(jù)丟失這種現(xiàn)象是屢見不鮮的。
在政務(wù)上第一個(gè)我們可以通過搭建一個(gè)數(shù)據(jù)庫(kù)備機(jī)的方式接管它的主庫(kù)。第二個(gè)你也可以把備庫(kù)作查詢?nèi)ナ褂?/strong>。
像高校最重要的OA、一卡通等,目前國(guó)產(chǎn)化進(jìn)展比較慢,所以核心庫(kù)還是Oracle、SQL Sever,比較適用于我們這種方式。
在醫(yī)院一般核心庫(kù)還是Oracle和SQL Sever,而且醫(yī)院比較特別,它HIS庫(kù)承載了所有的數(shù)據(jù),一旦出現(xiàn)了故障那么醫(yī)院基本所有的業(yè)務(wù)都運(yùn)行不了,所以對(duì)于核心庫(kù)的容災(zāi)復(fù)制是非常重要的。
還有一個(gè)跟大家提一下:我們的核心數(shù)據(jù)庫(kù)容災(zāi)是一個(gè)方面,另外有時(shí)用戶也會(huì)提應(yīng)用容災(zāi)的事情,我們的數(shù)據(jù)庫(kù)容災(zāi)是可以配合我們另外一款產(chǎn)品DBackup DRO做一個(gè)整機(jī)的數(shù)據(jù)庫(kù)容災(zāi)。那么數(shù)據(jù)庫(kù)容災(zāi)配合整機(jī)容災(zāi)就可以實(shí)現(xiàn)所有應(yīng)用場(chǎng)景的容災(zāi)接管。
下面來講講我們同步數(shù)據(jù)的一個(gè)準(zhǔn)備條件以及定時(shí)同步和實(shí)時(shí)同步的區(qū)別。
在準(zhǔn)備條件這方面比較簡(jiǎn)單,第一條是我們只要求主庫(kù)和備庫(kù)、操作系統(tǒng)的版本、數(shù)據(jù)庫(kù)的版本相同即可,第二條是主庫(kù)要處于歸檔模式,第三條是備庫(kù)的磁盤空間要大于或等于主庫(kù)的實(shí)際數(shù)據(jù)庫(kù)容量即可。
我們的定時(shí)同步主要同步的是主庫(kù)的歸檔日志,也就是你每一次的同步它都會(huì)要求做一次主庫(kù)的歸檔切換,所以第一次同步的頻率一般不能太高,我們的建議值是5—10分鐘一次。
在實(shí)時(shí)這塊上我們的實(shí)時(shí)復(fù)制技術(shù)主要同步的是在線日志,而且它的原理上是直接監(jiān)控在線日志有沒有變化。所以雖然實(shí)時(shí)復(fù)制是兩級(jí)的,但它對(duì)生產(chǎn)的影響并不高。
在創(chuàng)建備份作業(yè)這塊,定時(shí)復(fù)制和備份沒有關(guān)系,我們無需實(shí)現(xiàn)全備份的作業(yè)。然而我們要實(shí)時(shí)同步復(fù)制是需要備份的,先創(chuàng)建一個(gè)全庫(kù)的備份作業(yè),再創(chuàng)建一個(gè)實(shí)時(shí)的連續(xù)日志備份作業(yè)。
下面為大家做一個(gè)數(shù)據(jù)庫(kù)同步的演示,我這邊搭建了兩個(gè)數(shù)據(jù)庫(kù),待會(huì)兒我們來做一些刪除表、插入表等一系列操作,看看是否會(huì)進(jìn)行同步。
首先我們要?jiǎng)?chuàng)建同步作業(yè)的話,在界面上跟著向?qū)プ黾纯伞?/section>
這里會(huì)有一些參數(shù)的設(shè)置,我們可以看到參數(shù)文件有兩個(gè)選項(xiàng),一個(gè)是主庫(kù)的參數(shù)文件,一個(gè)是從庫(kù)的參數(shù)文件。如果是主庫(kù)和備庫(kù)的硬件、數(shù)據(jù)庫(kù)安裝路徑等基本相同,使用主庫(kù)的參數(shù)文件去覆蓋備庫(kù)是否沒問題的。如果差異很大,那我們要使用從庫(kù)的參數(shù)文件。
第二個(gè)參數(shù)是刪除歸檔日志,這個(gè)需要綜合用戶的使用場(chǎng)景,它可以刪除已經(jīng)復(fù)制的歸檔日志,也可以做兼容性的保留。
第三個(gè)是主機(jī)地址和從機(jī)地址。假如你的主庫(kù)和備庫(kù)有多個(gè)IP地址,可以用中選擇一個(gè)進(jìn)行復(fù)制,這個(gè)算是數(shù)據(jù)路徑的一個(gè)配置,也就是數(shù)據(jù)復(fù)制通道的配置。
第四個(gè)是復(fù)制日志的保存目錄,也就是我們的日志復(fù)制到備庫(kù)中在應(yīng)用之前,可以進(jìn)行一個(gè)緩存。
點(diǎn)擊下一步是我們所設(shè)置的一些同步復(fù)制的情況,提交之后就能創(chuàng)建整個(gè)的復(fù)制作業(yè)。創(chuàng)建好后我們可以看到備庫(kù)現(xiàn)在是mounted狀態(tài),只有這樣才能進(jìn)行數(shù)據(jù)庫(kù)日志的應(yīng)用。在主庫(kù)故障后,我們可以選擇激活備庫(kù),使其變成open狀態(tài)接收業(yè)務(wù)。
接下來我們直接做個(gè)測(cè)試,先查詢下主庫(kù)的狀態(tài),里面有兩條數(shù)據(jù),那我們可以insert一條數(shù)據(jù),在新建一個(gè)表后再插入一條數(shù)據(jù),待會(huì)兒看看是否也能同步到備機(jī)上去。
因?yàn)槲覀冊(cè)O(shè)置的是定時(shí)同步,復(fù)制完后選擇只讀打開備庫(kù),再來查看備庫(kù)是否已經(jīng)同步數(shù)據(jù)。我們可以看到它現(xiàn)在的狀態(tài)是READ ONLY,這表示備庫(kù)已經(jīng)打開。
接下來我們?cè)趥鋷?kù)里做一個(gè)查詢步驟,可以看到第一個(gè)表格和第二個(gè)表格的數(shù)據(jù)都存在,這就是已經(jīng)同步的表現(xiàn)。那我們還可以做刪除表格的一些操作,選擇繼續(xù)復(fù)制便可以實(shí)現(xiàn)數(shù)據(jù)的同步。
今天的分享到這里結(jié)束了,謝謝大家的觀看。