免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: hzlf
打印 上一主题 下一主题

informix数据库如何实现双机热备方法 [复制链接]

论坛徽章:
5
荣誉会员
日期:2011-11-23 16:44:17CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-09-18 15:15:45未羊
日期:2014-02-25 14:37:19射手座
日期:2014-12-26 22:55:37
31 [报告]
发表于 2003-04-26 17:13 |只看该作者

informix数据库如何实现双机热备方法

原帖由 "hzxrh" 发表:

华为的东西还不错呀!!
如果要修改oconfig中的TAPEDEV /dev/****** 需要重新初始化数据库吗??随便问一个简单的问题,touch是做什么的??谢谢!!!!

不需要重新初始化,但是某些版本需要重新启动,不明白有的不行。touch是改变文件的最近一次访问时间,如果没有就创建一个空文件。

论坛徽章:
0
32 [报告]
发表于 2003-04-26 19:25 |只看该作者

informix数据库如何实现双机热备方法

我还想在问问!!可不可以使两台数据库服务器名一样(服务器名,IP地址不一样)??因为主服务器出错以后,客户端连接要重新更改到备用服务器上,很麻烦.如果可以,该怎样做???

论坛徽章:
0
33 [报告]
发表于 2003-04-26 22:16 |只看该作者

informix数据库如何实现双机热备方法

哈,这个就是HDR的复杂性了。
我这里情况是这样才用HDR的,我们自己的应用程序也有一主一备,主的连主机,备的连备机。主的应用程序做什么,备的应用程序也做什么,如果碰到数据库操作,备的应用程序就不会真正去操作数据库。如果发生切换,备的应用程序立即变为主的,继续完成以前主机的操作,这样可以保证应用逻辑不会给中断。
大概情况就是这样,实现起来比较复杂。
HDR数据库服务器的主备机的名字和IP肯定不能一样,但数据库服务器别名可以一样。因为你我的情况不一样,你可以这样试一下,是可以通过同一个IP来访问的,但是重新连接是肯定要的。我也没有这样用过,在主备机的配置文件SQLHOSTS中按如下样例加上:
share_sever onsoctcp * share_sevice
但浮动IP的设置,是用HA软件来实现。但我们平时方便测试,懒的装HA,就自己手工写个加浮动IP的SHELL来模拟HA的一些功能。SHELL的功能在发生切换时,删除主机的浮动IP,在备机加上浮动IP。大概意思就是这样的。
现在我清楚你的系统大概情况,你数据库能做到热备份,但你的应用程序却没有主备,存在单点故障,可靠性比不用HDR,用共享磁盘阵列+HA来实现的方式差不多的。不过你是说没有共享磁盘阵列。 但是HA软件总的搞一个吧,要不你的浮动IP都要自己来实现了啊。

论坛徽章:
0
34 [报告]
发表于 2003-04-26 23:02 |只看该作者

informix数据库如何实现双机热备方法

以前我们用的是HP9000它带磁盘阵列.现在盘柜中的硬盘坏了!所以找了两台PC服务器在使用.我只是想备份(最好可以做到时时备份)和主备切换容易一些(客户端不需要改动,我的客户端太多了,而且它们分布比较广.客户端重新运新既可).不知HA可否能实现你说的浮动IP的功能,因为我没有用过!!!HA在那可以找到??

论坛徽章:
0
35 [报告]
发表于 2003-04-27 09:15 |只看该作者

informix数据库如何实现双机热备方法

还有一种简单又好的方法,你的应用程序同时建立两个数据库连接,一个连主机
一个连备机。但是看你说的情况,更改客户端程序不大可能。
还有你可以自己来实现浮动IP,写一个SHELL放在CRONTAB里监控,如果备机的变为主机,必须将以前主机的浮动IP删除,然后就将浮动IP加在现在的主机上。大概的策略是这样,还须具体的细化。

论坛徽章:
0
36 [报告]
发表于 2003-04-27 19:24 |只看该作者

informix数据库如何实现双机热备方法

这个办法不错!!可以具体一些吗???

论坛徽章:
0
37 [报告]
发表于 2003-04-28 21:31 |只看该作者

informix数据库如何实现双机热备方法

#!/bin/sh

#忽略SIGHUP等信号,这样用户关闭终端后,该脚本不会终止运行
trap "" 1 2 3

#定义日志记录文件
LOG="/tmp/monitor.log"

if [  ! -f $LOG ]; then
  touch $LOG
fi

echo "`date \"+[%Y-%m-%d %H:%M]\"`:Starting monitor!" >;>; \
$LOG

#设置数据库的一些参数
INFORMIXUSER=informix
INFORMIXDIR=/opt/informix
HDR_PRI=" On-Line (Prim) "

#用SERVER_STATUS参数来标识当前数据库服务器的状态
#SERVER_STATUS=1表示当前数据库服务器为主机状态,其余状态都为0
SERVER_STATUS=0

#浮动IP
FLOAT_IP="192.9.1.1"
FLOAT_IP_MASK="255.255.255.0"
LAN_DEV="en0"

#用来设置监视程序检查数据库状态的间隔时间
check_interval=2

#循环检查开始
while true
do
#检查INFORMIX数据库的状态
  status=`su - ${INFORMIXUSER} -c "${INFORMIXDIR}/bin/\
onstat - " | grep "Informix" | grep -v grep | awk -F "--" \
{ print $2 }'`
  if [ $status = ${HDR_PRI} ]; then
      ${SERVER_STATUS}=1
  else
      ${SERVER_STATUS}=0
  fi

#查看当前服务器是否有浮动IP
  netstat -in |grep ${FLOAT_IP}
  result=$?
  if [ $result -eq 1 -a ${SERVER_STATUS} -eq 1 ]; then
#如果当前数据库服务器没有浮动IP,但又为主机状态,就加上浮动IP
       /usr/sbin/ifconfig ${LAN_DEV} ${FLOAT_IP} netmask \
${FLOAT_IP_MASK} alias  >; /dev/null
       if [ $? -eq 0 ]; then

           echo "`date \"+[%Y-%m-%d %H:%M]\"`:Add Floating \
IP ok!" >;>; $LOG

       fi
  elif [ $result -eq 0 -a ${SERVER_STATUS} -eq 0 ]; then
#如果当前数据库服务器有浮动IP,但不是主机状态,就删除浮动IP
       /usr/sbin/ifconfig ${LAN_DEV} ${FLOAT_IP} netmask \
${FLOAT_IP_MASK} alias delete >; /dev/null
       if [ $? -eq 0 ]; then

           echo "`date \"+[%Y-%m-%d %H:%M]\"`elete Floating \
IP ok!" >;>; $LOG

       fi
  fi

#程序进入睡眠状态
  sleep ${check_interval}

done

把脚本放在主备机上执行。
SCO UNIX我没用过,上面是加IP的命令是基于AIX的。整个没有经过测试,还不知道能否运行。自己根据实际情况来修改吧。
刚才写这个,我GF生气了。

论坛徽章:
0
38 [报告]
发表于 2003-04-29 22:40 |只看该作者

informix数据库如何实现双机热备方法

我试试!!有没有现在的呀!!??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP