Informix 11.5在同一台服务器上搭建HDR实例

来源:互联网 发布:java获取当前系统时间 编辑:程序博客网 时间:2024/05/16 07:19

(其中红色字体为手工输入,蓝色字体为主要变化关注点。)

一、本实例实验环境

$ 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