插件窝 干货文章 Linux Informix如何实现多实例部署

Linux Informix如何实现多实例部署

实例 inst Informix onconfig 334    来源:    2025-05-07

Linux下Informix多实例部署指南

Informix数据库支持在同一台Linux服务器上运行多个独立的实例(实例),每个实例可以有自己的配置、数据和日志。以下是实现Informix多实例部署的详细步骤:

1. 准备工作

系统要求

  • 已安装Informix服务器软件
  • 足够的磁盘空间用于多个实例
  • 足够的内存资源(每个实例需要独立的内存分配)

规划

  • 确定每个实例的名称(如ids_inst1, ids_inst2等)
  • 为每个实例规划独立的端口号
  • 规划每个实例的数据存储位置

2. 创建多实例环境

创建实例目录结构

# 为每个实例创建独立的目录
mkdir -p /informix/inst1
mkdir -p /informix/inst2

# 设置目录权限
chown informix:informix /informix/inst1
chown informix:informix /informix/inst2
chmod 755 /informix/inst1
chmod 755 /informix/inst2

创建实例配置文件

每个实例需要自己的onconfig文件,可以复制默认配置文件并修改:

cp $INFORMIXDIR/etc/onconfig.std /informix/inst1/onconfig.inst1
cp $INFORMIXDIR/etc/onconfig.std /informix/inst2/onconfig.inst2

3. 配置每个实例

编辑实例1的配置文件(/informix/inst1/onconfig.inst1)

# 基本配置
SERVERNUM 1
DBSERVERNAME inst1_server
ROOTPATH /informix/inst1/rootdbs
ROOTSIZE 200000

# 网络配置
NETTYPE ipcshm,1,50,CPU
NETTYPE soc,1,50,NET
LISTEN_ADDR 127.0.0.1
SQLI_HOST 127.0.0.1
SQLEXEC 1
PORT 9088

# 内存配置
SHMBASE 0x44000000L
SHMVIRTSIZE 32000
SHMADD 32000

编辑实例2的配置文件(/informix/inst2/onconfig.inst2)

# 基本配置
SERVERNUM 2
DBSERVERNAME inst2_server
ROOTPATH /informix/inst2/rootdbs
ROOTSIZE 200000

# 网络配置
NETTYPE ipcshm,1,50,CPU
NETTYPE soc,1,50,NET
LISTEN_ADDR 127.0.0.1
SQLI_HOST 127.0.0.1
SQLEXEC 1
PORT 9089

# 内存配置
SHMBASE 0x46000000L
SHMVIRTSIZE 32000
SHMADD 32000

4. 初始化实例

初始化实例1

export INFORMIXSERVER=inst1_server
export INFORMIXDIR=/opt/IBM/informix
export ONCONFIG=onconfig.inst1
export INFORMIXSQLHOSTS=/informix/inst1/sqlhosts

# 创建sqlhosts文件
echo "inst1_server onsoctcp 127.0.0.1 9088" > $INFORMIXSQLHOSTS

# 初始化空间
oninit -i -v -y

初始化实例2

export INFORMIXSERVER=inst2_server
export INFORMIXDIR=/opt/IBM/informix
export ONCONFIG=onconfig.inst2
export INFORMIXSQLHOSTS=/informix/inst2/sqlhosts

# 创建sqlhosts文件
echo "inst2_server onsoctcp 127.0.0.1 9089" > $INFORMIXSQLHOSTS

# 初始化空间
oninit -i -v -y

5. 管理多实例

启动特定实例

# 启动实例1
export INFORMIXSERVER=inst1_server
export ONCONFIG=onconfig.inst1
oninit

# 启动实例2
export INFORMIXSERVER=inst2_server
export ONCONFIG=onconfig.inst2
oninit

关闭特定实例

# 关闭实例1
export INFORMIXSERVER=inst1_server
onmode -ky

# 关闭实例2
export INFORMIXSERVER=inst2_server
onmode -ky

6. 验证实例运行状态

# 检查实例1状态
export INFORMIXSERVER=inst1_server
onstat -

# 检查实例2状态
export INFORMIXSERVER=inst2_server
onstat -

7. 自动化管理(可选)

可以创建shell脚本简化实例切换和管理:

#!/bin/bash
# 实例管理脚本 inst_manager.sh

case "$1" in
  inst1)
    export INFORMIXSERVER=inst1_server
    export ONCONFIG=onconfig.inst1
    export INFORMIXSQLHOSTS=/informix/inst1/sqlhosts
    ;;
  inst2)
    export INFORMIXSERVER=inst2_server
    export ONCONFIG=onconfig.inst2
    export INFORMIXSQLHOSTS=/informix/inst2/sqlhosts
    ;;
  *)
    echo "Usage: $0 {inst1|inst2} [command]"
    exit 1
    ;;
esac

shift
$@

使用示例:

# 启动实例1
./inst_manager.sh inst1 oninit

# 检查实例2状态
./inst_manager.sh inst2 onstat -

注意事项

  1. 确保每个实例使用不同的端口号
  2. 为每个实例分配足够且不重叠的共享内存区域
  3. 监控系统资源使用情况,确保有足够内存供所有实例使用
  4. 考虑使用不同的用户运行不同实例以增强安全性
  5. 备份策略需要针对每个实例单独制定

通过以上步骤,您可以在同一台Linux服务器上成功部署并管理多个Informix数据库实例。