Informix不能提供SCAN IP的功能,而是使用了两个CM的方式来完成数据库的主备切换和客户端请求的转发工作。
通常的做法是配置和启动两个或多个CM,放到一个cm_group中,通过在URL中使用SQLH_TYPE、SQLH_FILE来使用两个CM。
但是我在CM的使用中遇到了几个问题:
1、如果cm_group成员中,前面的一个CM实例不可用,应用建立连接的时间就会特别长,有一个反复确认第一个CM不可用的的时间;
2、虽然可以在不安装数据库实例的情况下,安装和启动CM是没有问题的,但是无法执行 onstat -g cmsm
3、如果数据库宕机了,CM进程可能还在,且出现了一次数据库端口被占用的情况,导致数据库无法bind端口和启动
综合考量这个稀里糊涂的CM,我的想法或许比较激进,但是仍然建议如下:
1、配置和启动两个CM;
2、PRIORITY的值一定要大于100;
3、应用程序我建议只连接一个CM实例,就类似于连接单机数据库实例一样;
4、建议考虑PROXY=redirect的方式
类似的好处是,两个CM会保证数据库的切换;
PRIORITY的值较大是为了保证和控制两个CM的优先级不变;
应用程序只连接一个CM,连接速度可以保证,如果真的CM宕机了,重启即可(基本上不存在起不来的情况)