在數十、數百或者數千台基於 UNIX 和 Linux 平台的客戶機和伺服器上部署 IBM_ DB2 產品,包括 IBM DB2 Universal Database (DB2 UDB) 和 DB2 Connect,這看起來似乎是一件令人望而生畏的任務。
本文講述了如何跨多台機器在 UNIX 和 Linux 平台上快速、輕鬆和一致地部署 DB2 產品。本說明書可用於安裝客戶機、伺服器、並行伺服器和 FixPak。
本文主要討論 UNIX 和 Linux 平台上的 DB2 Version 8 產品家族。本說明書與前一版本類似,並且在未來版中也會繼續保持類似特點。
為了簡單起見,文中的例子使用 Bourne shell 文法。其他 shell 使用者將需要作適當的調整。
DB2 產品
支援 UNIX 和 Linux 的 DB2 家族有 15 種以上的 Version 8 產品,需要根據平台來選擇產品,因此,如果對 DB2 產品線不熟悉,選擇正確的產品將會是一項頗具挑戰性的任務。為了協助您確定在電腦作業環境中安裝哪一種 DB2 產品,我們提供了以下產品概覽。
本概覽不是為了詳細描述每一種產品的授權條款,而是旨在綜述每一種產品的特性和使用情境。此外,本概覽並未涉及所有的 DB2 產品,而只是根據 PMR、新聞群組文章以及與 IBM 客戶的溝通,討論那些在功能上最容易產生混淆的產品。
注意,並非所有產品都適用於所有平台。
DB2 客戶機
有四種 DB2 客戶機產品,分別具有不同層級的功能性。
DB2 Run-time Client 是適用於那些只需要 DB2 客戶機支援應用程式與遠程 DB2 伺服器通訊,而不需要管理任何伺服器的電腦。因此沒有提供任何圖形工具。但是,任何使用 DB2 UDB 或者 DB2 Connect 的應用程式都應當可以通過該產品運行。總的來說,該產品對於大多數應用程式來說是必需的,無論應用程式是第三方提供的還是內部開發的。
DB2 Administration Client 是專為 DB2 管理員設計的。它具有 DB2 Run-time Client 的全部功能,並增加了所有的圖形化工具。注意,DB2 Administration Client 的精簡安裝在功能上等同於 DB2 Run-time Client 的精簡安裝。
DB2 Application Development Client 是專為編寫軟體來使用 DB2 產品,或者編譯針對 DB2 API 軟體的開發人員設計的。它具有 DB2 Administration Client 的所有功能,並增加了可用於應用程式開發的附加圖新工具。
DB2 Connect Personal Edition 是一個經過許可的客戶機,它具有 DB2 Application Development Client 的所有功能,並增加了串連主機資料庫(例如 DB2 for MVSTM)的功能。
因為每一個客戶機都包含在其之前的客戶機的全部功能,所以您幾乎不需要在一台機器上安裝多個客戶機。多客戶機通常僅在更改電腦角色時才安裝。例如,發生在使用者提出訪問主機資料庫的新需求,從而需要遷移到 DB2 Connect Personal Edition 中時。在這些情況下,您可以通過在舊客戶機之上簡單地安裝新客戶機,並重新運行所有 FixPak 來執行升級。
DB2 伺服器
DB2 伺服器的擴充方式與客戶機一樣。所有的 DB2 伺服器都是經過許可的。
DB2 UDB Personal Edition 是一款嚴格的台式機產品,因為它不允許遠程客戶機的串連。它在某種程度上類似於 DB2 Application Development Client,同時添加了僅允許本地客戶機訪問本機資料庫的功能。
DB2 UDB Express Editions 是專為具有少數客戶機的中小企業設計的。它們具有 DB2 UDB Personal Edition 的全部功能,而且允許遠程連通性。
DB2 UDB Workgroup Server Editions 是專為大規模伺服器設計的。它們具有 DB2 UDB Express 的全部功能,而且具有更加廣泛的許可。
DB2 Connect Enterprise Editions 是專為客戶機串連主機資料庫(例如 DB2 for MVS)的三層選通(three-tier gating)而設計的。它們具有 DB2 Connect Personal Edition 的全部功能,並增加了網關功能。
DB2 UDB Enterprise Server Edition 是專為大型和超大型資料庫而設計的。如果不考慮資料庫分區特性(DPF),則它在功能上等同於 DB2 UDB Workgroup Edition 和 DB2 Connect Enterprise Edition 的組合。利用 DPF,Enterprise Server Edition 還允許多台機器作為單個無共用叢集(single shared-nothing cluster)共同運行,利用多台機器類比單一資料庫伺服器。
因為每一台伺服器具有所有客戶機的全部功能,包括圖形工具和應用程式開發工具,所以沒有理由再在一台已經安裝伺服器的電腦上安裝客戶機。這顯著地簡化了 DB2 產品的部署。
開發人員版本
DB2 開發人員版本僅在許可方面與上述產品不同。但是,有跡象表明,確保在開發環境中的大規模部署中包含該產品引起不少混亂。
DB2 UDB Personal Developer" s Edtion 是 DB2 UDB Personal Edition 面向小型Team Dev的有限許可版本。它包含有限許可的 DB2 UDB Personal Edition 和 DB2 Application Development Client,允許單個開發人員針對本機伺服器編寫、編譯和測試代碼。雖然它還允許開發使用遠端資料庫,但是遠端資料庫產品不包含在該軟體包中。由於 DB2 API 隱藏了一些細節(如資料庫的實際位置),在 DB2 UDB Personal Edition 中的開發與在任何 DB2 UDB 伺服器(如 DB2 UDB Enterprise Server Edition)中的開發一樣。
DB2 UDB Universal Developer"s Edition 是一種全功能的、一站式的開發產品,面向大型Team Dev。它包含幾乎全部的 DB2 for Linux、UNIX 和 Windows 產品,包括一些本文中沒有涉及到的產品。因為它包含所有平台的全部伺服器產品,所以它可以用於開發多平台,或者開發不受 DB2 UDB Personal Developer"s Edition 支援的平台。
因為除了其授權條款之外,Developer"s Edition 產品與先前產品一樣,所以不必在現有產品之上安裝這些產品,反之亦然。
部署概覽
在 UNIX 和 Linux上執行 DB2 產品部署的步驟如下:
1. 建立代碼伺服器
2. 計劃部署
2.1 可選,建立一份回應檔,以自動化配置。
3. 建立一份部署指令碼
4. 在所有機器上運行部署指令碼
建立代碼伺服器
建立代碼伺服器的目的是加速部署進程。事實上,把 CD 從一個系統轉移到另一個系統並不是在合理利用管理員的時間,甚至將 CD 安裝在一台機器中,然後通過網路檔案系統(例如 NFS、DFS、AFS 等等)安裝,將減緩所有的部署,因為後者需要不斷的跳躍,以響應網路請求。
相反,通過將 CD 複製到硬碟中,我們可以充分利用大多數物理檔案系統驅動程式提供的縮短的尋找時間和增大的緩衝區。
此外,在 DB2 Version 8 中,一些產品在其 CD 中是以壓縮形式針對某些平台提供的。對於這些產品來說,我們必須複製到本地磁碟,然後解壓縮和釋放檔案,因為我們無法簡單地從 CD 直接共用鏡像檔案。
根據您所擁有的產品和平台,您可能可以直接複製檔案,否則您必須解壓縮鏡像檔案。如果您可以複製鏡像檔案,我們建議以 root 許可權使用以下命令:
# (cd /cdrom; tar cf - *) | (cd /bigshareddisk; tar xf -)
使用磁帶封存檔案的基本意圖在於並不是所有的平台都具有可以保持符號連結(symbolic link 或 symlink)的 cp 命令。相反,任何可以保持符號連結、所有權和許可權的等同命令也同樣適用。
如果您有一份預壓縮的鏡像檔案,則需要使用的命令是:
#(cd/cdrom;zcat*.tar.Z)|(cd/bigshareddisk;tar xf-)
相反,在 Linux 上,磁帶封存檔案可以使用 Z 選項來實現上述命令:
#cd /bigshareddisk; tar xzf/cdrom/*.tar.Z
注意,在這一點上建議不要使用 Microsoft Windows 檔案伺服器。Windows 檔案伺服器將丟失檔案許可權,而且將不能處理名稱與自身不同的檔案,這種情況在 DB2 for Solaris 和 DB2 for Linux 產品中都存在。
下一步驟是通過網路檔案系統匯出 /bigshareddisk。具體操作步驟超出了本文所討論的範圍。注意,儘管無法將 DB2 本身安裝到 NFS 分區中,但是可以通過 NFS 安裝 DB2。
計劃部署
DB2 for UNIX and Linux 可以使用多種方式進行非互動安裝。選擇哪一種方法取決於您的偏好。所有的方式都可以交替使用。即,您可以使用一種方式執行安裝,以後在同一台機器上執行的另一安裝則可以使用另一種方式。選擇一種方法並不代表您需要永遠使用該方法。
對於 FixPaks 來說,僅有一種方式可用。
極力推薦,在任何部署之前,您應該在一台測試機器上測試安裝,以檢驗部署在每一台機器上會產生什麼。此外,甚至在測試部署之前,極力推薦在設計非互動式 DB2 部署之前至少使用一次圖形安裝程式。圖形安裝程式可以協助您理解非互動式安裝模式中的條款和關鍵詞。FixPaks 沒有任何圖形安裝程式。
回應檔安裝
推薦的方法是回應檔安裝。該方式涉及到建立一份回應檔(將在本文後面講述),然後針對回應檔運行 db2setup。推薦使用該方法是因為它可以提供很多優勢:
預先的回應檔語法檢查意味著,如果 db2setup 接受了回應檔,則它很可能可以運行。
它允許您選擇與圖形安裝程式一樣或者更好的粒度來安裝。
它允許您配置圖形安裝程式配置的所有內容,而不需要知道其中發生的情況。
它允許您與安裝同步設定資料庫管理程式配置 (dbm cfg) 和 DB2 設定檔註冊表參數。
可以完全解釋所有的輸出和記錄檔。
db2_install
您可以使用的另一種方法是 db2_install 指令碼。它是一種瘦型粗粒度的封裝程式,僅僅調用底層作業系統安裝程式(AIX、Solaris、HP-UX 和 Linux 作業系統上的 installp、pkgadd、swinstall 或 rpm)安裝整個產品。與回應檔的安裝相比,這種方法有以下局限性:
粗粒度安裝意味著在安裝時無法選擇所有備選組件。
其中不包括語言選擇。您必須使用另一種方法來安裝英語之外的語言。
其中不包括 DB2 Administration Server (DAS) 的配置或者執行個體。
但是,它不需要設定任何回應檔。
作業系統安裝程式
這種方法涉及到調用可以直���應用於平台的作業系統安裝程式。有關執行此方法的更多資訊,請參見作業系統文檔和相關首頁。與回應檔安裝相比,該方法具有以下局限性:
您必須按照正確的順序手動安裝組件。
組件名稱通常不像回應檔標識符那樣可讀取或者直觀。
其中不包含任何 DAS 配置或者執行個體。
與使用 db2_install 相比,該方式具有以下不同點:
更加靈活,因為您僅安裝了所需的組件。
您可以安裝英語之外的語言。
需要更多設定時間,因為您必須選擇需要安裝的組件。
FixPak 安裝
FixPak 安裝通常是非互動,因此常常用於大規模部署。
建立回應檔
建立回應檔是一個可選但推薦採用的步驟。回應檔可以顯著地簡化安裝指令碼。回應檔不可以用於 FixPak 安裝。
回應檔可能會因為目標環境不同而顯著不同。本文主要針對三種環境:客戶機、單機伺服器(例如,除了 Enterprise Server Edition with DPF 以外的任何伺服器)和並行伺服器(例如,Enterprise Server Edition with DPF)。
對於按照上述三種環境的組合部署的機器來說(例如安裝了 Relational Connect for DB2 Data Sources 的資料庫伺服器,同時還必須作為另一個資料庫的客戶機),可以將這些環境組合在一起。但是,為了簡單起見,本文不討論這些組合。
回應檔
建立回應檔的最簡單方式是使用 db2setup 圖形介面。通過啟動 db2setup,然後儲存回應檔,您可以以圖形方式選擇需要安裝的組件。然後,您可以通過從 CD 中提供的樣本回應檔中複製附加條目來調整回應檔。
建立回應檔的另一種方式是從 CD 中複製樣本回應檔,然後修改該樣本回應檔。樣本存放在 db2/pto/samples 目錄中,plat 是平台標識符。例如,db2/linux/samples/db2rtcl.rsp 是 DB2 for Linux CD 中面向 Linux 的 Run-time Client 樣本回應檔。
儘管極力推薦在部署之前首先在一台機器上進行測試,但是回應檔非常便於使用。
關於回應檔需要知道的第一件事是任何以 * 或者 # 字元開始的行都將作為注釋忽略。
*Thisisa comment.
任何行的末端包含 ** 或者 ## 序列的行也都將作為注釋被忽略。
PROD = ENTERPRISE_SERVER_EDITION ** This is a comment.
所有的資料均以 KEYWORD=VALUE 格式顯示。在以上樣本中,關鍵詞是 PROD,而 PROD 關鍵詞的給定值是ENTERPRISE_SERVER_EDITION。
每一個關鍵詞被看作是一個標記。即,該關鍵詞保留不翻譯。大多數值也都是標記。例如,在以下的行中
INSTALLJTYPE=TYPICAL
關鍵詞和值都是標記,因此不應當被看作英文單詞。回應檔安裝程式可以識別這些標記,它所識別的標記都是一樣的,不考慮其語言。
未注釋的樣本回應檔中的條目被看作是強制性的,必須填寫才能進行安裝。
最後,很多關鍵詞直接映射到您在圖形安裝期間可能會遇到的問題中,因此掌握圖形安裝可以協助理解回應檔。
PROD
PROD 關鍵詞指定需要安裝的產品。每一份樣本回應檔都已經預填入該關鍵詞。不需要對其進行任何改動。
INSTALL_TYPE
該關鍵詞指定所需安裝的類型:精簡、典型、自訂。如果選擇典型,則還可以選擇所有典型選項。如果選擇自訂,則可以選擇需要安裝的所有組件。如果選擇精簡,則所有這些可選環節都將被忽略。
TYPICAL_OPTION
如果已經選擇安裝類型為 TYPICAL(典型),則您可以選擇其他的典型選項集。例如,如果您需要典型安裝具有 Data Warehouse 選項的 Enterprise Server Edition,您可以在此作出選擇。只需去掉不需要在部署中安裝的每一個選項前的星號即可。如果安裝類型不是 TYPICAL,則忽略該關鍵詞。
COMP
如果已經選擇安裝類型為 CUSTOM(自訂),則可以通過從所需組件中去掉注釋字元來選擇其他組件。對比來說,Linux 和 UNIX 回應檔通過說明使用典型安裝和每一個典型選項會選擇哪一些組件來區分組件。如果安裝類型不是 CUSTOM,則忽略該關鍵詞。
LANG
如果您需要使用英語以外的語言,請選擇該關鍵詞。不同於圖形安裝程式的是,如果當前語言不是英語,則回應檔安裝程式不會自動選擇當前語言。此處的語言標記和具有 -i 選項的安裝程式使用的那些標記一樣。
SELECT_INSTALLED_LANGS
如果設定為 YES(是),將自動選擇 DB2 已經安裝的所有語言。這非常適用於在同一個系統中安裝第二種產品,同時想使所有新功能保持原有的語言設定。
ENCODING
如果沒有選擇任何編碼方法,則自動安裝全部編碼方法。對每種語言來說,不同的編碼方法都適用。如果不需要全部的編碼方法,您可以選擇所需的子集。注意,ISO 或者 EUC 編碼方法需要作為某些語言的反編編碼方法(fall-back encoding)。
LIC_AGREEMENT
該參數向回應檔安裝程式表明您已經讀取並同意在 DB2 介質上所包含的許可。您可以在 db2/iceme/locale.encoding 目錄中找到該許可。預設值是 DECLINE(拒絕)。您必須將其更改為 ACCEPT(接受)才能繼續安裝。
執行個體建立設定
這些設定可用於建立作為安裝一部分的執行個體。您可以通過使用多個 INSTANCE 名稱,在一次安裝中建立多個執行個體。例如,您可以建立 INSTANCE=instancel 和 INSTANCE=instance2。對每一個執行個體來說,您需要利用 instance1和 instance2首碼建立所需設定的剩餘部分。
大多數這些設定要麼是資料庫管理程式配置設定,要麼是 DB2 設定檔註冊表設定(所有這些可配置的設定都應當包含在回應檔中)。
其他設定允許您建立新使用者,包括密碼。如果選擇利用回應檔建立新使用者,則建議使用正確的檔案系統安全性,確保在執行安裝的每一台機器上僅 root 可以讀取回應檔,因為密碼存放在純文字中。相反,您可能希望在使用回應檔之前,首先建立使用者帳戶,並設定密碼。
執行個體用於儲存 DB2 配置。這包括伺服器的本機資料庫和客戶機及伺服器的遠端資料庫。
如果是從前一版本中遷移執行個體,則不需要建立新執行個體。DB2 需要一個執行個體來執行所有操作,無論是託管本機資料庫還是串連到遠端資料庫。
不同於將所有的設定存放在回應檔中,一種替代方案是使用 db2cf exp 命令將配置從現有執行個體中匯出。在這種情況下,您可以按需在測試機器上精確配置主執行個體(包括效能調優和編目遠程節點與資料庫,但是不包括本機資料庫),然後使用命令
“db2cfexp template”匯出配置。在部署期間,您需要使用 db2cfimp 匯入指定檔案中儲存的模板。例如,“db2cf exp db2inst.exp template”可以建立一份描述當前執行個體的名為 db2inst.exp 的檔案。
管理伺服器設定
這些設定可以用於建立 DAS。如果在樣本回應檔的某一節中已經說明,某些產品允許使用管理伺服器,則這些產品必須具有管理伺服器。如果在目標機器上一台管理伺服器也沒有,則必須使用該節來建立管理伺服器。與 DAS 關聯的使用者必須不同於任何執行個體使用的使用者。
如果是該版本的首次安裝,您僅需要建立新的 DAS。例如,如果您已經安裝 Workgroup Server Edition,並且需要升級到 Enterprise Server Edition,則前次安裝中的現有 DAS 足以勝任。在這種情況下,您可以注釋 Administration Server 設定。
客戶機部署事項
由於客戶機安裝的主要目的是與遠程伺服器通訊,從正在運行中的客戶機匯出客戶機設定檔可以簡化部署,因為這樣可以使編輯節點和資料庫目錄的工作更加輕鬆。
單伺服器部署事項
回應檔安裝無法建立本機資料庫。這些資料庫需要作為部署指令碼的一部分建立。
並行伺服器部署事項
並行環境中的伺服器執行個體僅需要在一台電腦上建立執行個體。通常是安裝的第一台電腦進行,並且在該電腦的本地磁碟上建立。該電腦被稱作“instance owning computer”。叢集中其他的電腦不必有任何建立的執行個體。這些電腦被稱作“node(節點)”。
正如您所見,此處部署了兩種不同類型的安裝。第一種,建立了執行個體的電腦,需要安裝 DB2 Enterprise Server Edition 和建立本地執行個體的回應檔。第二種,對每一個節點來說,需要安裝 DB2 Enterprise Server Edition,同時沒有建立任何執行個體的回應檔。第二份回應檔可以簡單的從頭建立:刪除回應檔中有關執行個體的所有部分,或者,換句話說,僅保留涉及產品、安裝類型、組件、語言或者許可的關鍵詞。
建立這些回應檔的另一種方式是使用圖形安裝程式來安裝具有執行個體的節點。在圖形安裝期間,有一個選項可以儲存回應檔,以供所有的節點使用。如果您正在部署單個叢集,這通常可以使操作更加簡單。
並行環境中的回應檔安裝無法為節點之間的 rsh 訪問設定 .rhosts 檔案,也不可以設定 db2nodes.cfg 檔案。
建立部署指令碼
該 指令碼通常在 shell 指令碼中編寫,但是任何語言都可以使用,包括 Perl、JavaTM 或者 C。這可以被簡單的看作是封裝程式處理 DB2 安裝過程中不處理的安裝和配置 DB2 的那些方面。指令碼就是在目標機器上運行並作為部署過程一部分調用的檔案。
第一步是決定需要執行什麼。如果已經建立了完整的回應檔,該步驟就非常簡單,否則,該步驟就會相當複雜,尤其是在您沒有使用回應檔來執行安裝時候。
在所有的樣本中,我們假設 / share 是遠程檔案系統,在需要部署的所有機器上都安裝為 / share。如果沒有任何共用檔案系統可用,則在遠程安裝檔案系統,或者編寫指令碼來自動安裝和卸載檔案系統都是可能的。(如何固定一個檔案系統已經超出了本文討論的範圍。)
檔案系統可以是 NFS、AFS、DFS 或任何一種非本地檔案系統。建議唯獨不要使用 Samba 檔案系統,原因在上面的“建立代碼伺服器”一節中已經給出。
DB2 Run-time Client 將用作樣本產品,但是其步驟與所有產品的步驟相同。
部署回應檔安裝
這是最簡單的情況。由於產品定義、組件選擇和執行個體設定幾乎已經由回應檔完全封裝,很多工作可以通過簡單的調用回應檔來完成:
/share/rtcl/db2setup-r/share/rtcl/db2rtcl.rsp
在此,我們已經將自訂的回應檔存放在產品的 /share/rtcl 目錄中。
安裝後工作
由於 Run-time Client 的正常使用還包含遠程伺服器和資料庫的目錄編輯,我們還可以自動化執行目錄編輯。我們可以使用 db2cfimp(如果我們使用 db2cfexp 按照上述操作來匯出它們)來自動完成操作,也可以手動編輯目錄。例如,利用已經建立的執行個體 db2instl 來使用 db2cfimp:
su - db2instl -c ". sqllib/db2profile;
db2cfimp /share/rtcl/db2inst.exp"
利用同一個已經建立的執行個體手動編輯目錄:
su - db2instl -c ". sqllib/db2profile;
db2 catalog tcpip node ..."
在第二種情況下,最好將目錄編輯命令存放在另一份檔案中,然後允許 DB2 命令列處理常式讀取該檔案:
su - db2instl -c ".sqllib/db2profile;
db2 –tvf /share/rtcl/catalog.db2"
另外一份檔案可以執行設定 DB2 所需的其他動作。例如,
catalog tcpip node server remoteserverhostname;
catalog databasesampleatnodeserver;
updatedbm cfg usingjdk_path/opt/lBMJava2-141;
伺服器事項
在伺服器部署中,通常需要附加命令來建立和設定資料庫、資料表空間、表,等等。至於客戶機,建立單個 /share/ddi/createdb. db2 指令碼即可簡化部署指令碼。
並行伺服器事項
除了上述的伺服器事項以外,在並行環境中,部署指令碼必須可以按需更新 .rhosts 和 db2nodes.cfg 檔案。
使用 db2_install 部署安裝
雖然該方法繞開了回應檔建立步驟,但是它也錯過了回應檔安裝帶來的所有方便之處。
安裝階段相當簡單:
/share/rtcl/db2_install -p DB2.RTCL -n
產品標識符對每一種產品來說都是唯一的:請參考產品文檔,以擷取