前言node
HA即High Availability,意爲高可用性。DB2高可用雙機互備,使用兩臺主機互爲主備,目的在於當主機發生斷電或者外部故障時,可以自動切換到備機正常運行,從而體現DB2高可用的特色。sql
一 需求說明數據庫
在DB03,DB04兩臺主機上各建立一個實例,每一個實例下建立一個數據庫。兩臺主機互爲主備,即當DB03發生斷電等故障時,數據庫資源能夠自動切換到DB04上正常運行。服務器
二 實施前提ide
1兩臺主機之間安裝共享VG(由主機維護廠商進行操做)spa
2兩臺主機上安裝DB2 ESE版操作系統
三 環境說明日誌
操做系統版本:AIX7.1three
DB2版本:V10.5.FP5資源
主機1(DB03):XX.XXX.XXX.139
主機2(DB04):XX.XXX.XXX.140
四 相關規劃
1用戶組規劃
組 |
GID |
db2iadm1 |
601 |
db2iadm2 |
602 |
db2fadm1 |
603 |
db2fadm2 |
604 |
db2grp1 |
605 |
db2grp2 |
606 |
2用戶規劃
用戶 |
UID |
用戶組 |
dausr1 |
501 |
db2iadm1 |
dausr2 |
502 |
db2iadm2 |
db2fenc1 |
503 |
db2fadm1 |
db2fenc2 |
504 |
db2iadm2 |
db2inst1 |
505 |
db2grp1 |
db2inst2 |
506 |
db2grp2 |
3文件系統規劃
主機名 |
數據庫名 |
文件系統 |
容量大小 |
備註 |
DB03 |
PUB |
/db2node01 |
40G |
數據庫目錄 |
/db2home01 |
30G |
實例用戶目錄(用戶家目錄) |
||
/db2log01 |
100G |
活動日誌目錄 |
||
/archlog01 |
100G |
歸檔日誌目錄 |
||
表空間 |
3T |
共享 |
||
DB04 |
MRK |
/db2node02 |
40G |
數據庫目錄 |
/db2home02 |
30G |
實例用戶目錄(用戶家目錄) |
||
/db2log02 |
100G |
活動日誌目錄 |
||
/archlog02 |
100G |
歸檔日誌目錄 |
||
表空間 |
2T |
共享 |
五 建立步驟
1建立用戶組
使用root用戶,在DB03以及DB04兩臺主機上建立相同的用戶組,以db2iadm1爲例,建立語句爲:
mkgroup -A id=601 db2iadm1 |
其餘用戶組的建立方法相同,此處不贅述。
2建立用戶
使用root用戶,在DB03以及DB04兩臺主機上建立相同的用戶,以dausr1,db2inst1爲例,建立語句爲:
mkuser id=501 pgrp='db2iadm1' dausr1 mkuser id=505 home=/db2home01 pgrp='db2grp1' db2inst1 |
其餘用戶的建立方法相同,此處不贅述。
3修改目錄權限
主機維護廠商建立所需的文件系統並掛載完成後,對其權限進行相應的修改
以DB03爲例,使用root用戶,執行如下指令以修改用戶權限:
chown -R db2inst1:db2grp1 /db2node01 chown -R db2inst1:db2grp1 /db2home01 chown -R db2inst1:db2grp1 /db2log01 chown -R db2inst1:db2grp1 /archlog01 |
在DB04上的操做同理:
chown -R db2inst2:db2grp2 /db2node02 chown -R db2inst2:db2grp2 /db2home02 chown -R db2inst2:db2grp2 /db2log02 chown -R db2inst2:db2grp2 /archlog02 |
操做完成後,使用df -g 來檢查文件系統是否掛載完成。
4建邏輯卷
主機維護廠商建立完成所需的VG並掛載完成後,建立邏輯卷,做爲表空間容器。
(說明:容器是DB2的一個概念。在物理存儲上,每一個表空間由一個或多個容器構成,容器映射到物理存儲,能夠是目錄,也能夠是文件或者裸設備。每一個容器只能屬於一個表空間。)
以pub1vg上的邏輯卷建立爲例:
mklv -y ts_pub_01_1 pub1vg 400 mklv -y ts_pub_01_2 pub1vg 400 mklv -y ts_pub_01_3 pub1vg 400 |
六 數據庫層面操做
說明:DB2的邏輯層次爲:實例→數據庫→表空間→表。
1安裝DB2軟件(此處省略DB2安裝步驟)
2建立實例
須要在DB03上建立實例db2inst1,在DB04上建立實例db2inst2。
以DB03爲例:
cd /opt/IBM/db2/V10.5/instance ./db2icrt -p 50000 -u db2fenc1 db2inst1 |
實例創建完成。
3爲實例用戶配置相應的環境變量
以DB03上的db2inst1用戶爲例:
su - db2inst1 vi .profile |
將如下幾行
# The following three lines have been added by UDB DB2. if [ -f /db2home01/sqllib/db2profile ]; then . /db2home01/sqllib/db2profile fi set -o vi |
添加到.profile最後的位置
修改完成後執行.profile文件
./.profile
說明:其它實例用戶,包括DB03的db2inst2用戶,以及DB04的db2inst1,db2inst2用戶也是採用相同方法配置其環境變量。
4建數據庫(以DB03上的操做爲例,DB04同理)
(1)在DB03上建立PUB庫,具體操做以下:
su – db2inst1 db2start db2set DB2COMM=TCPIP db2 CREATE DATABASE PUB ON /db2node01 USING CODESET UTF-8 |
(2)修改數據庫參數(設置活動日誌以及歸檔日誌路徑)
db2 update db cfg for PUB using NEWLOGPATH /db2log01 db2 update db cfg for PUB using LOGARCHMETH1 DISK:/archlog01 |
(3)建緩衝池(以PUB_BP8K爲例,其他緩衝池同理)
db2 connect to PUB db2 "CREATE BUFFERPOOL PUB_BP8K IMMEDIATE SIZE 80000 PAGESIZE 8K" |
(4)建立表空間,以建立ts_pub_dat01表空間 爲例:
db2 "create tablespace ts_pub_dat01 pagesize 8k managed by database using (device '/dev/rts_pub_01_1' 100g,device '/dev/rts_pub_01_2' 100g,device '/dev/rts_pub_01_3' 100g) bufferpool PUB_BP8K " |
七 修改配置
1端口號
使用root用戶,修改/etc/services文件,確保各個用戶的端口號沒有重複。
2實例用戶目錄下的db2nodes.cfg
(說明:db2nodes.cfg爲節點配置文件,位於實例全部者的主目錄中,它包含一些配置信息,告訴 DB2有哪些服務器參與分區數據庫環境的實例。本例爲單分區數據庫環境,db2nodes.cfg 只包含一臺主機的信息。db2nodes.cfg的內容與本機名一致時,才能夠啓動數據庫。)
(1)DB03
cp db2nodes.cfg db2nodes.cfg.DB03 cp db2nodes.cfg db2nodes.cfg.DB04 |
vi db2nodes.cfg.DB04(修改成如下內容,保存)
0 DB04 0 |
(2)DB04
cp db2nodes.cfg db2nodes.cfg.DB03 cp db2nodes.cfg db2nodes.cfg.DB04 |
vi db2nodes.cfg.DB03(修改成如下內容,保存)
0 DB03 0 |
八 HA腳本調整
在DB0三、DB04均部署如下4個腳本。
以DB03爲例說明,DB04同理:
db1_start.sh用於修改db2node.cfg、修改相應文件系統的權限,使之知足PUB庫啓動的條件,啓動PUB數據庫。
db1_stop.sh用於中止PUB數據庫。
db2_start.sh用於修改db2node.cfg、修改相應文件系統的權限,使之知足MRK庫啓動的條件,啓動MRK數據庫。
db2_stop.sh用於中止MRK數據庫。