在 CentOS 上构建 Informix 高可用
一、方案总览与选型
- 原生复制类
- HDR(High Availability Data Replication):基于逻辑日志的实例级复制,同城/近距双机,支持同步/异步模式,备机可读,主机故障可快速接管。
- SDS(Shared Disk Secondary):共享磁盘的备用实例,双机共享同一磁盘阵列,具备快速切换与本地负载分担能力,但不具备存储级容灾。
- RSS(Remote Standalone Secondary):面向广域网的异步备机,适合异地容灾,网络要求低,备机可读。
- CLR(Continuous Log Restore):基于逻辑日志的连续恢复,适合网络不佳或离线灾备场景。
- ER(Enterprise Replication):表/行级复制,可灵活选择复制方向(主从、汇总、双向),用于业务解耦与多活数据分发。
- 管理与接入层
- Connection Manager(CM):提供SLA与FOC(Fail Over Connection),对应用透明,实现连接级负载均衡与故障接管。
- 通用高可用与负载
- Pacemaker + Corosync:资源代理管理实例启停与虚拟 IP,实现节点级故障切换。
- Keepalived(VRRP):轻量级 VIP 漂移与主机存活监测。
- HAProxy/Nginx:在应用侧做连接转发与健康检查(注意 Informix 为原生协议,通常不直接做 SQL 层负载均衡)。
二、推荐架构与适用场景
- 同城双活/快速切换:主库 + HDR 备机,启用同步或低延迟异步;配合 Connection Manager 做连接路由与 FOC,必要时用 Pacemaker/Corosync 管理实例与 VIP。
- 同机房高吞吐:主库 + SDS 备机(共享磁盘),获得本地快速切换与读扩展;需确保存储高可用与多路径配置。
- 异地容灾:主库 + RSS 备机(广域网异步),网络延迟容忍度高,保障灾难恢复能力。
- 多活/部分表跨域:主库 + ER,按需复制关键表/维度,支持双向/汇总拓扑,解耦业务系统。
- 无共享存储且需轻量 HA:主备两节点 + Pacemaker/Corosync 或 Keepalived 管理 VIP 与实例,结合应用重试与连接路由实现切换。
三、落地步骤与关键配置
- 准备与基线
- 两台或三台 CentOS 节点,时间同步(如 chrony),主机名解析稳定,网络低时延高可用;规划 实例名、端口、服务名 与 VIP。
- 存储与权限:HDR/SDS/RSS 按拓扑准备磁盘/阵列与权限;确保目录与权限一致,便于切换。
- 启用复制(以 HDR 为例)
- 主库:配置 onconfig 的 HDR 相关参数(如 HDR 主/备角色、DRINTERVAL、DRTIMEOUT),启动实例后执行
onmode -d primary <备机别名> 建立备机关系。
- 备机:配置为 HDR 备机,启动后执行
onmode -d secondary <主机别名> 加入复制;按需设置只读或读写工作模式(版本差异)。
- 验证:
onstat -g dri、onstat -g hdr 查看复制与状态,确认日志同步与角色正常。
- 管理与接入
- 部署 Connection Manager:配置 SLA 规则与 FOC,将应用连接指向 CM,获得透明故障接管与读负载分担。
- 若采用无共享存储的通用 HA:用 Pacemaker/Corosync 或 Keepalived 管理 VIP 与实例生命周期(启动/停止脚本、监控探针、STONITH/隔离策略)。
四、备份恢复与数据一致性保障
- 定期备份与异地存放:使用 ontape 执行全量/增量备份,定期将备份转存至远程/异地介质,并进行备份校验与可恢复性演练。
- 事务一致性与约束:依赖 ACID 与逻辑日志实现回滚/重做;通过主键/外键/唯一性/检查约束保障数据一致性;合理设置隔离级别与锁等待超时。
- 复制一致性:对 HDR/ER 链路进行延迟与错误监控,定期校验复制位点与数据差异,确保灾备与多活场景的一致性。
五、监控、演练与性能稳定性
- 监控与告警
- 数据库层:使用 onstat、onmode 观察会话、锁、I/O、复制状态;结合 Nagios/Zabbix 做阈值告警与可视化。
- 系统层:监控 CPU、内存、磁盘 I/O、网络;关注慢查询与长事务,及时优化或终止。
- 稳定性优化
- 硬件与存储:充足内存、启用 Huge Pages、使用 SSD、合理 RAID;保障网络稳定与冗余。
- 系统与文件系统:调优 内核参数 与 文件描述符,选择 ext4/XFS 并优化挂载选项(如 noatime/nodiratime)。
- 演练与验证
- 定期执行故障切换演练(主备切换、网络隔离、磁盘故障模拟),验证 RTO/RPO;对备份进行周期性恢复演练,确保可用性与完整性。