新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 數(shù)據(jù)庫復制的設計和管理簡介

數(shù)據(jù)庫復制的設計和管理簡介

作者: 時間:2012-09-02 來源:網(wǎng)絡 收藏

【摘 要】 介紹在分布式系統(tǒng)中的應用、,給出了步驟和時考慮的因素。對設計和應用中出現(xiàn)的沖突問題進行了分析并給出了解決辦法。對于環(huán)境的維護和也作了陳述。
關鍵詞:數(shù)據(jù)庫,分布式系統(tǒng),,

本文引用地址:http://butianyuan.cn/article/170939.htm


1 數(shù)據(jù)庫復制的原理

  數(shù)據(jù)庫復制是在分布式數(shù)據(jù)庫系統(tǒng)中使用非常廣泛的技術。分布式數(shù)據(jù)庫系統(tǒng)由多個相同或不同的數(shù)據(jù)庫組成,它們通過局域網(wǎng)或廣域網(wǎng)相連,不同數(shù)據(jù)庫的數(shù)據(jù)之間有非常緊密的關系。在分布式數(shù)據(jù)庫系統(tǒng)中應用可訪問本地和遠程的數(shù)據(jù)庫,使用客戶服務器體系結構處理信息請求。不同物理數(shù)據(jù)庫之間使用數(shù)據(jù)庫鏈路連接,使得客戶端對它們的訪問就象訪問一個邏輯數(shù)據(jù)庫一樣。分布式數(shù)據(jù)庫系統(tǒng)中各個數(shù)據(jù)庫協(xié)同工作,但每個數(shù)據(jù)庫節(jié)點是個獨立的數(shù)據(jù)庫,可由不同部門分別進行管理和數(shù)據(jù)庫的升級,一個數(shù)據(jù)庫出現(xiàn)故障不會影響其它數(shù)據(jù)庫的使用。在分布式數(shù)據(jù)庫系統(tǒng)中的每個獨立的數(shù)據(jù)庫一般被稱為站點或數(shù)據(jù)庫站點。
  在應用中,采用數(shù)據(jù)庫復制的原因是需定期地將信息傳播出去,或定期地從某地獲得信息。
  可以Oracle數(shù)據(jù)庫為例來說明數(shù)據(jù)庫工作的基本原理。Oracle數(shù)據(jù)庫的復制是采用數(shù)據(jù)庫的后臺進程自動實現(xiàn)的。負責復制工作的后臺進程個數(shù)和它們被激活的時間是由數(shù)據(jù)庫參數(shù)確定的。數(shù)據(jù)庫的后臺進程是由系統(tǒng)進程進行管理,經(jīng)過設定的時間間隔執(zhí)行它們預定的工作,以實現(xiàn)數(shù)據(jù)定期地從源站點到目標站點的傳播。Oracle數(shù)據(jù)庫具有基本復制和高級復制方法。所謂基本復制是指從主表到復制點生成的數(shù)據(jù)是只讀的,用戶不能對復制生成的數(shù)據(jù)實施修改操作,這種實體被稱為快照。快照的信息將不斷地按照設計時定義的時間間隔從主表進行更新,間隔的設定可根據(jù)應用對信息要求的實時性而定。高級復制相對基本復制而言各復制點都可對數(shù)據(jù)進行修改,每個數(shù)據(jù)庫站點進行的修改都可傳播到其它站點,每個站點都可看到其它站點輸入或修改的數(shù)據(jù)。數(shù)據(jù)的一致性是采用高級復制時須全面考慮的問題。
  數(shù)據(jù)庫的復制用途很大,但不同的應用有不同的要求,Oracle提供的復制方法能滿足大多數(shù)的需要,但有的實際問題,如帶有統(tǒng)計匯總計算功能的復制,只有利用Oracle提供的思想方法自行開發(fā)復制軟件,將復制和匯總合二為一。理解了復制工作的基本原理后,自行開發(fā)復制軟件也就是輕而易舉的事了。

2 數(shù)據(jù)庫復制的用途

  復制是在分布式數(shù)據(jù)庫系統(tǒng)中獲得多個數(shù)據(jù)庫信息的方法,如在部隊的數(shù)據(jù)庫系統(tǒng)中用于上級機關了解和獲得下屬各部隊的武器、彈藥、物資等的狀態(tài)情況的數(shù)據(jù)。還可用于沒條件一直處于連接的環(huán)境、信息的分布使用、信息匯總、提高性能、備份、平衡應用的負載、大批數(shù)據(jù)傳輸?shù)?,如連鎖店的總店為了統(tǒng)一零售價格、及時將商品的價格發(fā)布給各零售店是非常重要的,為達到此目的,每個零售店的數(shù)據(jù)庫擁有價格列表的復制品,每天晚上從總店的主表更新,這是信息的分布使用的典型例子。大批數(shù)據(jù)傳輸主要用于從別的數(shù)據(jù)庫系統(tǒng)中導入數(shù)據(jù),如從聯(lián)機事務處理系統(tǒng)中將信息復制到?jīng)Q策支持系統(tǒng)中等。
  一般說來,應用只存取本地數(shù)據(jù)庫的數(shù)據(jù),而限制對遠程數(shù)據(jù)庫數(shù)據(jù)的存取,以減少網(wǎng)絡的負擔,提高性能;另一方面,如果重要的數(shù)據(jù)已被復制到其它服務器,那么在本地服務器出現(xiàn)故障時,系統(tǒng)仍然可用。使用復制技術還能提高數(shù)據(jù)庫存取的性能、數(shù)據(jù)的安全性和加強應用的限制。
  利用數(shù)據(jù)庫復制的方法有利于及時獲得最新信息,有利于減少用戶的重復勞動,有利于及時維護數(shù)據(jù)庫的一致性。

3 數(shù)據(jù)庫復制設計的基本步驟

  數(shù)據(jù)庫復制的基本工作方式是,定義一個查詢,使用數(shù)據(jù)庫的作業(yè)管理機制,自動地、定期地從主表更新數(shù)據(jù)。
3.1 基本復制
基本復制的設計主要包括以下步驟:
 ?。?)建立復制環(huán)境,確定哪些主表將被復制,復制到哪些站點的數(shù)據(jù)庫;
 ?。?)在復制的各站點,建立復制用戶和復制的數(shù)據(jù)庫鏈路;
 ?。?)在被復制的數(shù)據(jù)庫中建立所有主表的更新日志,更新日志是支持快速更新的關鍵;
  (4)在復制的各站點,使用數(shù)據(jù)庫鏈路建立快照;
  (5)在復制的各站點,建立快照的更新組,定義更新時間和更新間隔,將需同時更新的快照加入一個更新組中;
  (6)授予需使用快照的用戶對快照的查詢權限。
3.1.1 復制環(huán)境
  在設計一個分布式數(shù)據(jù)庫系統(tǒng)時,確定哪些主表將被復制,檢查每個參加復制的表,確認每個表都有主鍵。確定每個表中哪些信息以什么形式復制到哪些站點的數(shù)據(jù)庫。將需復制的主表根據(jù)其數(shù)據(jù)關系、應用關系、應用對數(shù)據(jù)的實時性要求等進行分組。
  建議不同服務器中需復制的表在不同的數(shù)據(jù)庫位于相同的用戶名下,對應的用戶采用相同的口令,以便于操作。而采用高級復制的具有數(shù)據(jù)復制關系的表的結構在各站點應一致。
3.1.2 建立用戶和數(shù)據(jù)庫鏈路
  在參加復制的主站點和復制點建立對應的用戶以包含復制對象。建立主表所在的數(shù)據(jù)庫到各復制站點的數(shù)據(jù)庫鏈路。雖然復制一般是在不同數(shù)據(jù)庫的相同用戶之間進行,但建立數(shù)據(jù)庫鏈路時還是需顯式地指定連接的用戶名和口令。不要建立公共的數(shù)據(jù)庫鏈路,一般建立屬于直接連接的復制用戶的私有鏈路。
3.1.3 建立日志
  日志是為了記錄對主表數(shù)據(jù)的輸入、更新、刪除操作,有了日志,系統(tǒng)可識別哪些數(shù)據(jù)是新產(chǎn)生的需要復制的數(shù)據(jù),哪些數(shù)據(jù)是已經(jīng)被復制過了的,因此每次更新只需復制那些最新的信息,以減少數(shù)據(jù)的復制量,降低網(wǎng)絡流量,縮短復制的時間。
  在被復制的數(shù)據(jù)庫中建立所有主表的更新日志,更新日志只需建立一次即可支持一個站點到多個站點的復制。
3.1.4 建立快照
  在每個復制站點,建立所需的快照。復制端的快照的邏輯結構是從一個或多個主表中進行查詢的SQL語句定義的,同時該SQL語句也定義快照所含的來自主表的那部分信息,它不能包含合計、分組、連接、集合功能。
3.1.5 更新
  根據(jù)對主表的分組情況在復制的各站點建立快照的更新組,根據(jù)需要定義更新時間和更新間隔,將需同時更新的快照加入一個更新組中。
  必須設定怎樣和什么時候更新復制端的數(shù)據(jù)??蛇x用完全更新、快速更新、手工更新和自動更新方式。更新時間的設置需遵循以下原則:
·下次更新時間為未來時間;
·更新間隔大于完成一次更新所需時間;
·可指定一具體時間進行手工更新。
  出現(xiàn)網(wǎng)絡問題或系統(tǒng)錯誤時,更新將暫時被中斷,一旦問題解決,更新將恢復正常。
3.1.6 權限
  對于使用簡單復制方法生成的快照,只需授予用戶查詢權限,因為快照是只讀的;對于使用高級復制方法生成的復制品,可視需求設置不同權限,但由于權限越大,用戶可執(zhí)行的操作越多,產(chǎn)生復制沖突的可能性越大,因此權限還需有限制地授予。
3.2 高級復制
  高級復制又分為多站點復制和可更新快照復制。其設計原理和步驟與基本復制相似,簡述如下。多站點復制包括以下步驟:
 ?。?)設計并建立復制環(huán)境,確定哪些站點作為高級復制的站點,哪些主表將參與復制;
 ?。?)使用復制管理器,定義參加復制的站點,在復制的各站點,建立包含復制實體的用戶和復制的數(shù)據(jù)庫鏈路,建立復制的管理用戶,配置數(shù)據(jù)更新的計劃;
 ?。?)建立主復制組,不同的需參與復制的實體可加入不同的組中;
 ?。?)授予需使用復制信息的用戶以適當?shù)臋嘞蕖?br /> 可更新快照復制包括以下步驟:
 ?。?)設計并建立復制環(huán)境,確定哪些站點作為復制的主站點,哪些主表和實體將參與復制,確定哪些為可更新快照的設置站點;
 ?。?)在復制的各站點建立快照管理用戶,建立包含可更新快照實體的用戶和復制的數(shù)據(jù)庫鏈路,配置數(shù)據(jù)更新的時間和間隔;
(3)在主站點建立快照日志;
(4)在復制點建立必要的更新組;
 ?。?)建立快照組,快照組可包含表、存儲過程、包、函數(shù)、同義詞、視圖等實體;
 ?。?)授予需使用復制信息的用戶以適當?shù)臋嘞蕖?br />
4 數(shù)據(jù)庫復制的設計

4.1 數(shù)據(jù)庫的分布
  如何分布和設計數(shù)據(jù)庫需視具體工程應用的地理分布、組織關系、數(shù)據(jù)量、資金和對數(shù)據(jù)的安全性等情況而定。
  數(shù)據(jù)庫復制的設計要盡可能簡單,數(shù)據(jù)關系盡可能簡化,只要滿足需求即可。盡可能減少維護管理的工作量。
  應用存取頻繁的數(shù)據(jù)盡量位于本地數(shù)據(jù)庫,如果這些數(shù)據(jù)由遠程數(shù)據(jù)庫進行管理,則需考慮將其復制到本地,這樣既可簡化應用程序的設計,又可提高數(shù)據(jù)的安全性、降低網(wǎng)絡流量、提高性能。如果應用程序需要同時存取本地和遠程的數(shù)據(jù)庫,設計時一定要通過事務的同時提交或回滾以保證數(shù)據(jù)的一致性。
  如果采用高級復制,因為可能出現(xiàn)多個站點同時修改或輸入相同數(shù)據(jù)的可能,所以數(shù)據(jù)復制需考慮的首要問題是數(shù)據(jù)沖突問題。設計中要盡可能避免數(shù)據(jù)沖突的產(chǎn)生。而設計時不可避免的數(shù)據(jù)沖突要在設計時確定解決方法,在運行時將其配置于復制環(huán)境以利于在沖突產(chǎn)生時數(shù)據(jù)庫能及時解決問題,不致于影響整個復制的工作進程。
4.2 數(shù)據(jù)沖突的解決
  數(shù)據(jù)的沖突是設計人員設計分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫復制時主要解決的問題,數(shù)據(jù)沖突主要出現(xiàn)在高級復制環(huán)境。


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉