准备至少2台CentOS服务器(推荐3台及以上用于高可用),确保节点间网络延迟≤1ms,磁盘IO性能满足数据库需求(如SSD存储)。所有节点需具备相同的硬件配置(CPU型号、内存大小、存储容量),避免因硬件差异导致集群不稳定。
yum update -yyum install -y ssh passwd groupadd vim wget lvm2 nfs-utils chrony/etc/chrony.conf添加NTP服务器(如server ntp.aliyun.com iburst),重启服务:systemctl restart chronyd && systemctl enable chronydsystemctl stop firewalld && systemctl disable firewalldoninit默认端口9088、sqlhosts端口8888):firewall-cmd --add-port=9088/tcp --permanent && firewall-cmd --reloadsetenforce 0 或修改/etc/selinux/config中SELINUX=permissive。以root用户执行,创建专用用户组和用户(避免使用root运行数据库):
groupadd -g 3000 informix
useradd -u 3000 -g 3000 -d /home/informix -m -s /bin/bash informix
passwd informix # 设置强密码
chmod 755 /home/informix # 确保用户目录可访问
以informix用户登录,编辑~/.bash_profile文件,添加以下变量(根据实际路径调整):
export INFORMIXDIR=/opt/IBM/informix # Informix安装根目录
export INFORMIXSERVER=infcluster1 # 集群服务器实例名(需唯一)
export ONCONFIG=onconfig.infcluster1 # onconfig配置文件名
export INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts.infcluster1 # sqlhosts配置文件路径
export PATH=$INFORMIXDIR/bin:$PATH # 添加Informix命令到PATH
export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH # 添加库路径
source ~/.bash_profile # 立即生效
从IBM官方网站下载适用于Linux的Informix安装包(如iif.14.10.FC5.Linux-RHEL8-x86_64.tar),上传至所有节点并解压:
tar -xvf iif.14.10.FC5.Linux-RHEL8-x86_64.tar -C /opt/
mv /opt/IBM/informix /opt/IBM/informix # 规范目录名
chown -R informix:informix /opt/IBM/informix # 设置目录所有权
以root用户进入安装目录,运行安装脚本:
cd /opt/IBM/informix/SERVER
./ids_install
按照向导选择“典型安装”(Typical Install),默认安装路径为/opt/IBM/informix,等待安装完成。
复制默认配置文件并修改关键参数(以onconfig.infcluster1为例):
cp $INFORMIXDIR/etc/onconfig.std $INFORMIXDIR/etc/onconfig.infcluster1
vi $INFORMIXDIR/etc/onconfig.infcluster1
修改以下核心参数:
ROOTNAME rootdbs # 根数据库空间名
ROOTPATH /dbs/rootdbs # 根数据库空间路径(需提前创建)
ROOTSIZE 30000 # 根数据库空间大小(页数,1页=4KB)
LOGFILES 3 # 逻辑日志文件数量
LOGSIZE 1000 # 每个逻辑日志文件大小(页数)
PHYSFILE 2000 # 物理日志文件大小(页数)
LOGMODE buffered # 日志模式(生产环境建议用buffered)
NETTYPE soctcp,1,50,CPU # 网络类型(TCP/IP)、并发线程数
DBSERVERNAME infcluster1 # 数据库服务器名(需与ONCONFIG中的INFORMIXSERVER一致)
创建数据库空间目录并设置正确权限(关键:rootdbs权限必须为660):
mkdir -p /dbs
chown -R informix:informix /dbs
chmod 660 /dbs/rootdbs # 必须设置为660,否则无法启动
编辑sqlhosts文件,定义数据库服务器的网络连接方式(支持IPC、TCP等):
cp $INFORMIXDIR/etc/sqlhosts.std $INFORMIXDIR/etc/sqlhosts.infcluster1
vi $INFORMIXDIR/etc/sqlhosts.infcluster1
添加以下内容(根据实际IP调整):
infcluster1 onipcshm rouse informix_services # 共享内存连接(本地)
infcluster1 onsoctcp rouse 192.168.1.100 # TCP/IP连接(远程)
其中:
infcluster1:服务器名(与DBSERVERNAME一致);onsoctcp:TCP/IP协议;rouse:服务名(需与/etc/services中的端口映射一致);192.168.1.100:节点IP地址。编辑/etc/services文件,添加Informix服务端口映射:
echo "informix_services 8888/tcp # Informix Server Port" >> /etc/services
重启服务使配置生效:
systemctl restart network
在所有节点执行:
yum install -y pacemaker corosync pcs
编辑Corosync配置文件(/etc/corosync/corosync.conf),添加集群节点信息:
totem {
version: 2
cluster_name: infcluster
transport: udpu
interface {
ringnumber: 0
bindnetaddr: 192.168.1.0 # 集群网络段
mcastport: 5405
ttl: 1
}
}
nodelist {
node {
ring0_addr: 192.168.1.100 # 节点1 IP
nodeid: 1
}
node {
ring0_addr: 192.168.1.101 # 节点2 IP
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1 # 2节点集群启用2节点仲裁
}
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
}
在所有节点启动服务:
systemctl start corosync && systemctl enable corosync
systemctl start pacemaker && systemctl enable pacemaker
验证集群状态:
crm_mon -1 # 查看集群节点状态
pcs status # 查看Pacemaker资源状态
创建Informix资源(虚拟IP、数据库服务等):
# 创建虚拟IP资源(浮动IP,用于客户端访问)
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=30s
# 创建Informix服务资源(需编写自定义脚本)
pcs resource create infsvc ocf:heartbeat:informix \
op monitor interval=60s \
op start timeout=300s \
op stop timeout=300s
# 将资源绑定到同一节点(避免脑裂)
pcs constraint colocation add vip with infsvc INFINITY
pcs constraint order vip then infsvc
手动停止主节点的Informix服务,观察虚拟IP是否自动切换至备用节点:
ssh 192.168.1.100 "systemctl stop informix"
sleep 10
crm_mon -1 # 检查VIP是否迁移至节点2
在主节点启动Informix服务:
oninit -ivy # 初始化并启动数据库(首次启动需用-ivy)
验证数据库状态:
onstat - # 查看数据库概要信息
onstat -d # 查看数据库空间状态
使用dbaccess工具连接数据库(本地/远程均可):
dbaccess infcluster1 -e "SELECT 1;" # 本地连接
dbaccess -h 192.168.1.200 infcluster1 -e "SELECT 1;" # 远程连接(通过VIP)
ontape或onbar备份(全量+增量),存储至异地;/opt/IBM/informix/log目录下的旧日志文件;onconfig参数(如缓冲池大小、并行查询线程数);