Informix 11.5在同一臺服務器上搭建HDR實例

(其中紅色字體爲手工輸入,藍色字體爲主要變化關注點。)

一、本實例實驗環境

$ uname -a

Linux fedora 2.6.22.18-co-0.7.5 #1 PREEMPT Mon Sep 14 22:21:15 UTC 2009 i686 i686 i386 GNU/Linux

$ onstat -V

IBM Informix Dynamic Server Version 11.50.UC1DE Software Serial Number AAA#B000000

二、預備知識

1、什麼是 HDR?

High Availability Data Replication(HDR)是一種將數據從主服務器複製到從服務器的方法。HDR 將所有啓用日誌記錄功能的數據庫從主服務器複製到從服務器。儘管可以把從服務器看作主服務器的複製品,但是它不包含未啓用日誌記錄功能的數據庫的數據。在從服務器上存在這些數據庫和模式,因爲 DML(Data Manipulation Language)語句總是記錄在日誌中的;但是除非數據庫啓用了日誌記錄功能,否則插入、更新或刪除的數據不會被複制。HDR 確保從服務器總是與主服務器保持同步。如果主服務器發生故障,那麼從服務器可以作爲備用服務器,直到主服務器恢復運行爲止。

2、硬件需求

主服務器和從服務器在平臺、操作系統版本、內存、CPU 和存儲空間方面必須相同。服務器必須支持網絡連接。在主服務器和從服務器上,分配給 dbspace 的磁盤空間量必須相同。一些用戶喜歡給主服務器配置更多的內存或 CPU。不建議這樣做,而且在這種情況下,HDR 的速度取決於最慢的服務器的速度。

3、數據庫需求

主服務器和從服務器上的 onconfig 文件應該非常相似,而且以下參數必須完全相同:

ROOTNAME

ROOTOFFSET

ROOTPATH

ROOTSIZE

MIRROROFFSET —— 如果使用鏡像特性

MIRRORPATH —— 如果使用鏡像特性

PHYSDBS

PHYSFILE

LOGFILES

LOGSIZE

DYNAMIC_LOGS

DRAUTO

DRINTERVAL

DRTIMEOUT

4、連接需求

爲了在不同機器上的 IDS 服務器之間建立連接,需要執行以下步驟:

確保服務器是完全可信的

添加適當的 NETTYPE 配置參數(soctcp 或 tlitcp),或者確保 sqlhosts 文件包含 DBSERVERNAME 或 DBSERVERALIAS 的 TCP 連接

確保兩個 sqlhosts 文件包含對方服務器的設置項

測試兩個服務器之間的連接。一種測試方法是使用 dbaccess > connection > connect。爲了確認服務器是完全 可信的,不要使用用戶名和密碼進行連接。如果連接失敗,就檢查錯誤代碼並進行調試

三、HDR實例配置過程

(一)建立相關用戶

(說明:本服務器上已有informix組,已裝有informix 11.5,具體安裝過程請見文章:安裝Colinux&Informix11.5&DBSonar過程詳解-step by step,地址http://blog.csdn.net/sunxp/archive/2010/08/16/5816042.aspx。)

[root@fedora ~]# useradd -g informix -u 201 -d /home/share/info1 -m info1

[root@fedora ~]# useradd -g informix -u 202 -d /home/share/info2 -m info2

(二)修改sqlhosts文件,將兩個server的信息都加入到這個文件中

[root@fedora ~]# su - informix

-bash-3.1$ vi /home/informix/ids11uc1/etc/sqlhosts

demo_on onipcshm       on_hostname  on_servername

demo_se  seipcpip   se_hostname   sqlexec

ids11       onsoctcp 10.10.10.40    10001

ids11_2   onsoctcp 10.10.10.40    10002

info1   onsoctcp        10.10.10.40     10003

info2   onsoctcp        10.10.10.40     10004

(三)修改兩個onconfig文件

-bash-3.1$ cp /home/informix/ids11uc1/etc/onconfig.ids11 /home/informix/ids11uc1/etc/onconfig.info1

-bash-3.1$ cp /home/informix/ids11uc1/etc/onconfig.ids11 /home/informix/ids11uc1/etc/onconfig.info2

-bash-3.1$ vi /home/informix/ids11uc1/etc/onconfig.info1

(僅列出幾個需要修改的值,其他略。)

ROOTNAME        rootdbs         # Root dbspace name

ROOTPATH        ./chunk0          # Path for device containing root dbspace

ROOTOFFSET      0               # Offset of root dbspace into device (Kbytes)

ROOTSIZE        900000          # Size of root dbspace (Kbytes)

# System Configuration

SERVERNUM       1              # Unique id corresponding to a OnLine instance

DBSERVERNAME    info1        # Name of default database server

DBSERVERALIASES  info1   # List of alternate dbservernames

NETTYPE         soctcp,1,50,NET # Configure poll thread(s) for nettype

DEADLOCK_TIMEOUT 60              # Max time to wait of lock in distributed env.

RESIDENT        0               # Forced residency flag (Yes = 1, No = 0)

 

-bash-3.1$ vi /home/informix/ids11uc1/etc/onconfig.info2

(僅列出幾個需要修改的值,其他略。)

ROOTNAME        rootdbs         # Root dbspace name

ROOTPATH        ./chunk0         # Path for device containing root dbspace

ROOTOFFSET      0               # Offset of root dbspace into device (Kbytes)

ROOTSIZE        900000          # Size of root dbspace (Kbytes)

# System Configuration

SERVERNUM       2              # Unique id corresponding to a OnLine instance

DBSERVERNAME    info2        # Name of default database server

DBSERVERALIASES  info2   # List of alternate dbservernames

NETTYPE         soctcp,1,50,NET # Configure poll thread(s) for nettype

DEADLOCK_TIMEOUT 60              # Max time to wait of lock in distributed env.

RESIDENT        0               # Forced residency flag (Yes = 1, No = 0)

(四)選擇一個可以存放兩個數據庫服務器的文件系統,建立兩個目錄,並建立每一個數據庫服務器的環境變量文件。

[root@fedora ~]# su - info1

[info1@fedora ~]$ pwd

/home/share/info1

[info1@fedora ~]$ mkdir server1

[info1@fedora ~]$ ls

server1

[info1@fedora ~]$ cd server1

[info1@fedora ~]$ touch chunk0

[info1@fedora ~]$ chmod 660 chunk0

[info1@fedora ~]$ vi setenv.server1

INFORMIXDIR=/home/informix/ids11uc1

export INFORMIXDIR

INFORMIXSERVER=info1

export INFORMIXSERVER

ONCONFIG=onconfig.info1

export ONCONFIG

PATH=/bin:/usr/bin:/usr/sbin:/usr/ucb:/etc:$INFORMIXDIR:$INFORMIXDIR/bin:$INFORMIXDIR/etc:$PATH

export PATH

再打開一個窗口執行info2

[root@fedora ~]# su – info2

[info2@fedora ~]$ pwd

/home/share/info2

[info2@fedora ~]$ mkdir server2

[info2@fedora ~]$ ls

Server2

[info2@fedora ~]$ cd server2

[info2@fedora ~]$ touch chunk0

[info2@fedora ~]$ chmod 660 chunk0

[info2@fedora ~]$ vi setenv.server2

INFORMIXDIR=/home/informix/ids11uc1

export INFORMIXDIR

INFORMIXSERVER=info2

export INFORMIXSERVER

ONCONFIG=onconfig.info2

export ONCONFIG

PATH=/bin:/usr/bin:/usr/sbin:/usr/ucb:/etc:$INFORMIXDIR:$INFORMIXDIR/bin:$INFORMIXDIR/etc:$PATH

export PATH

(五)啓動並配置HDR

在Info1窗口中執行

[info1@fedora ~]$ pwd

/home/share/info1

[info1@fedora ~]$ cd server1/

[info1@fedora server1]$ ls

chunk0    setenv.server1

[info1@fedora server1]$ source setenv.server1

[info1@fedora server1]$ oninit –ivy

(啓動過程,略)

在Info2窗口中執行

[info2@fedora ~]$ pwd

/home/share/info2

[info2@fedora ~]$ cd server2/

[info2@fedora server1]$ ls

chunk0    setenv.server2

[info2@fedora server1]$ source setenv.server2

[info2@fedora server1]$ oninit –ivy

(啓動過程,略)

在Info1窗口中執行0級備份(請參考以前寫的文章:Informix之ontape 0級備份和恢復實例詳解,地址http://blog.csdn.net/sunxp/archive/2010/08/17/5817910.aspx

[info1@fedora ~]$ ontape –s –L 0

(備份過程,略)

[info1@fedora ~]$ onmode –d primary info2                 --info2爲HDR對的另一臺

[info1@fedora server1]$ onstat -

IBM Informix Dynamic Server Version 11.50.UC1DE -- On-Line (Prim) -- Up 01:13:18 -- 347572 Kbytes

在Info2窗口中執行恢復

[info2@fedora server2]$ onstat -

IBM Informix Dynamic Server Version 11.50.UC1DE -- On-Line -- Up 00:00:12 -- 347572 Kbytes

[info2@fedora server2]$ onmode -ky

[info2@fedora server2]$ ontape -p

Restore file /home/share/fedora_2_L0 and press Return to continue ...

(恢復過程,略)

Continue restore? (y/n)y

Do you want to back up the logs? (y/n)n

Restore a level 1 archive (y/n) n

Program over.

[info2@fedora server2]$ onstat -

IBM Informix Dynamic Server Version 11.50.UC1DE -- Fast Recovery -- Up 00:00:18 -- 347572 Kbytes

[info2@fedora server2]$ onmode -d secondary info1           --info1爲HDR對的另一臺

[info2@fedora server2]$ onstat -

IBM Informix Dynamic Server Version 11.50.UC1DE -- Fast Recovery (Sec) -- Up 00:00:38 -- 347572 Kbytes

[info2@fedora server2]$ onmode -m

[info2@fedora server2]$ onstat -

IBM Informix Dynamic Server Version 11.50.UC1DE -- Read-Only (Sec) -- Up 00:01:14 -- 347572 Kbytes

這就代表HDR已經建立了,我們可以做操作了。

(六)測試操作

我們在Server1上建了一個數據庫,而同時Server2窗口上用Dbaccess可以看到Server2上數據庫也建好了。

注意加chunk做好不要使用絕對路經。

如果你的DRAUTO爲:

0 = OFF —— 不自動切換 HDR 環境中的服務器類型

1 = RETAIN_TYPE —— 在 HDR 發生故障時,將從服務器切換爲標準服務器。在重新啓動 HDR 時,切換回從服務器。

2 = REVERSE_TYPE —— 在 HDR 發生故障時,將從服務器切換爲標準服務器。在重新啓動 HDR 時,切換爲主服務器(將原來的主服務器切換爲從服務器)。

(七)常見錯誤及解決方法

1、提示:[info1@fedora ~]$ cd server1/

server1/: Permission denied.

解決:chmod 755 server1

chmod 755 server2

2、改用戶shell類型

使用root用戶執行 usermod -s /bin/bash info1

查看shell:

①輸入一個系統不認識的命令(如#ig)獲得系統提示 

②#echo $0 (適用:sh/ksh)

③#ps |grep $$|awk ‘{print $4}’

④#echo $SHELL(用戶默認的Shell,但不實時反映當前shell)

如果用戶登錄之後 UNIX顯示提示 符爲$,那麼所使用的是B Shell。若顯示爲%提示符,則爲 C Shell

3、提示:Physical restore failed - Error opening file ./chunk0.

 errno=2

解決:在info上的/home/share/info2/server2 這個目錄裏執行 ontape -p才行。

 

補充:在安裝數據庫的時候,若是平常的HDR雙機裏應該加入雙機信任關係。此處須在info1,info2家目錄下加入.rhosts文件,權限爲644。

參考文獻:http://blog.chinaunix.net/u/28641/showart_359952.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章