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