CentOS上Informix应用部署最佳实践
系统要求确认
用户与目录配置
groupadd informix
useradd -g informix -d /opt/informix -m -s /bin/bash informix
passwd informix
mkdir -p /opt/informix/{data,logs,temp}
chown -R informix:informix /opt/informix
chmod -R 750 /opt/informix
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
环境变量设置
编辑/etc/profile,添加以下变量(全局生效):
export INFORMIXDIR=/opt/informix
export PATH=$INFORMIXDIR/bin:$PATH
export INFORMIXSERVER=ol_informix1210 # 数据库服务器名称(自定义)
export ONCONFIG=onconfig.ol_informix1210 # onconfig配置文件名
export INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts.ol_informix1210 # SQLhosts文件名
source /etc/profile # 立即生效
下载与安装Informix
iif.12.10.FC12DE.linux-x86_64.tar);tar -xvf iif.12.10.FC12DE.linux-x86_64.tar -C /opt/informix
cd /opt/informix
./ids_install # 按提示选择“非GUI模式”安装,选项保持默认
核心配置文件修改
onconfig.std(基础配置模板):cp $INFORMIXDIR/etc/onconfig.std $INFORMIXDIR/etc/onconfig.ol_informix1210
vi $INFORMIXDIR/etc/onconfig.ol_informix1210
关键参数调整:
ROOTPATH:root数据库物理路径(如/opt/informix/data/rootdbs);DBSERVERNAME:与INFORMIXSERVER一致(ol_informix1210);NETTYPE:网络类型(onsoctcp用于TCP/IP连接);SHMVIRTSIZE:共享内存初始大小(如80000,单位KB,根据内存调整);BUFFERS:缓冲池大小(如20000,单位KB,建议为物理内存的1/4~1/2)。数据库初始化与启动
su - informix
oninit -ivy # -i初始化,-v显示详细日志,-y自动应答(谨慎使用)
onmode -sy # 正常启动
onstat -g ses # 查看会话状态(正常应显示至少一个会话)
网络配置
sqlhosts文件(定义网络连接):vi $INFORMIXDIR/etc/sqlhosts.ol_informix1210
添加以下内容(本地连接示例):ol_informix1210 onsoctcp localhost 1526
echo "sqlexec 1526/tcp" >> /etc/services
firewall-cmd --zone=public --add-port=1526/tcp --permanent
firewall-cmd --reload
设置开机自启动
编辑/etc/rc.local(需赋予执行权限chmod +x /etc/rc.local),添加:
su - informix -c "$INFORMIXDIR/bin/oninit -v"
系统级优化
/etc/sysctl.conf,添加以下内容(优化内存与磁盘I/O):kernel.shmmax = 4294967296 # 最大共享内存段(4GB)
kernel.shmall = 1048576 # 共享内存总页数
vm.swappiness = 10 # 减少交换分区使用(10%)
生效:sysctl -p。mount -o noatime,nodiratime,data=writeback /dev/sdX /opt/informix/data
Informix配置优化
BUFFERPOOL参数(示例:2GB内存分配2GB缓冲池):BUFFERPOOL size=2G,buffers=16000,lrus=8,lru_min_dirty=50,lru_max_dirty=60
MULTIPROCESSOR=1),并根据CPU核心数调整NUMCPUVPS(如4核设置为4):MULTIPROCESSOR 1
NUMCPUVPS 4
LOGBUFF)和物理日志大小(PHYSBUFF),减少日志刷盘频率:LOGBUFF 256 # 256KB
PHYSBUFF 512 # 512KB
数据库设计优化
CREATE TABLE sales (
sale_id SERIAL,
sale_date DATE,
amount DECIMAL(10,2)
) FRAGMENT BY RANGE(sale_date) INTERVAL(1 MONTH) STORE IN (dbs1, dbs2, dbs3);
last_name+first_name),避免在索引列上使用函数(如WHERE UPPER(last_name) = 'SMITH'会导致索引失效)。SQL语句优化
SET EXPLAIN ON分析查询计划,识别全表扫描、索引未使用等问题:SET EXPLAIN ON;
SELECT * FROM customer WHERE last_name = 'Smith';
SET EXPLAIN OFF;
SELECT *,仅选择所需列;使用JOIN替代子查询;用LIMIT限制返回数据量(如分页查询)。备份与恢复
ontape工具):ontape -s -L0 /opt/informix/backup # -s全量,-L0级别0
dbexport):dbexport mydatabase # 导出到当前目录的exp目录
ontape -r /opt/informix/backup;dbimport mydatabase -i /opt/informix/exp。监控与诊断
onstat命令监控状态:
onstat -g ses:查看当前会话;onstat -p:查看性能统计(缓冲池命中率、磁盘I/O等);onstat -m:查看日志消息(错误信息)。top(CPU/内存)、vmstat 1(磁盘I/O)、df -h(磁盘空间)。定期维护
UPDATE STATISTICS HIGH FOR TABLE customer;
REBUILD INDEX idx_customer_name ON customer;
oncheck工具):oncheck -cD mydatabase # 检查表结构与数据一致性
连接池管理
权限控制
informix:informix拥有所有权,其他用户无写权限);SELECT、INSERT权限,避免DBA权限)。网络安全
sqlhosts文件,将onsoctcp改为onssl,并配置证书)。数据安全
ENCRYPT函数)。