论文部分内容阅读
摘 要:矿用系统对可靠性要求比较高,国家标准里面明文要求有双机热备功能,为此开发了该套软件。该软件的开发工具VC++6.0、SQL Server2005,使用Socket建立通讯,及时了解对方电脑上的数据采集软件运行的状态,并决定是否进行切换操作,使用触发器,同步数据库的记录。实验表明,该软件运行状况良好,基本达到预期目的。
关键词:双机热备;Socket;触发器
1 引言
图1是双机热备软件主界面,具有通讯功能、代理启动第三方程序、数据库同步功能。为实现自动切换,采用Socket通讯,每隔10s交换一次数据,以了解数据采集软件在对方电脑上的运行状态,并据此决定启动或者关闭数据采集程序。数据库的同步可以采用订阅发布方式,这里不适合,主要是因为订阅发布方式会添加其他键到数据库,应用程序跑不起来,加上该系统插入记录、修改数据比较频繁,采用触发器方式合适。
2 基本通讯的建立与自动切换
这里只讨论代理启动一个第三方软件,多个代理启动软件处理方法类似,编程思想:
(1)通讯正常情况下,第一次连接成功后,主机启动数据采集软件,同时启动定时器1,定时器1将定时检查数据采集软件在主机上的运行状况,并把运行状况发给备机。如果该软件正在主机运行,则不操作;否则备机启动数据采集软件。备机切换后,也启动一个定时器,定时检查数据采集软件在备机上的运行状况,并把运行状况发给主机。如果备机的数据采集软件不运行,主机启动数据采集软件。
(2)不正常情况下,主备机不能交换数据,网线连接断开、其中一台电脑死机、人为关掉一方软件都属于这种情况。这种情况下,主机检查数据采集软件,没有则启动,同时启动定时器2,定时检查数据采集软件在主机上的运行状态,如果关掉,自动打开;备机检查数据采集软件,没有则启动,同时启动定时器1,定时时间到,发一条信息给主机,如果没有回音,检查数据采集软件,关闭的话启动,如果有回音,转为通讯正常情况,做相应处理。
3 触发器同步数据库
编程思想:
(1)通讯正常情况下,如果主机运行数据采集软件,把触发器加到主机的数据库,同时删掉备机的触发器;如果备机运行数据采集软件,把触发器加到备机的数据库,同时删除主机的触发器;
(2)如果通信不正常或者软件退出运行,删除触发器。
使用触发器同步数据库,需要相应设置MSDTC;MSDTC依赖于RPC,RPC使用的端口是135,要打开135端口;启动DTC服务;启动1433端口;关闭防火墙;链接服务器。
数据采集软件对数据库操作包括插入新记录、修改原记录,假设对方计算机名PC-201004191511,数据库pubs,表employee,列名job_lvl,则
(1)针对插入新纪录操作,相应触发器
Create trigger [dbo].[tr_insert_employee] on [dbo].[employee]
for insert
as
set xact_abort on
insert [PC-201004191511].pubs.dbo. employee (emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)
select emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date from inserted
go
(2)针对修改列job_lvl,相应触发器
Create trigger [dbo].[tr_update_employee_job_lvl] on [dbo].[employee]
for update
as
set xact_abort on
if update(job_lvl)
update [PC-201004191511].pubs.dbo.employee
set [job_lvl] =i.[job_lvl] from [PC-201004191511].pubs.dbo.employee b, inserted i
where b.emp_id=i.emp_id
go
参考文献
[1] 毛应爽,赵慧玲,孟宪颖,SQL Server 2005 程序设计与管理基础同步实训教程[M],北京:清华大学出版社,2009. 12.
[2] BL DataMirror双机热备软件,南京北路科技.
[3] KJ90瓦斯安全监控双机热备软件,煤炭研究总院重庆研究院(田兵).
[4] 包建军,霍振龙,樊菁,可靠实现煤矿双机热备系统的方法[J],工矿自动化,2010.10.
[5] SOCKET API通讯程序源代码.WWW.VCKBASE.COM.
作者简介
汤其三,男,1986年生,江苏科技大学09级硕士研究生,主要研究方向:单片机、DSP、FPGA软硬件设计开发,波形数据采集与大屏幕液晶显示,VC++可视化编程,SQL Server数据库操作,串口通信等。
关键词:双机热备;Socket;触发器
1 引言
图1是双机热备软件主界面,具有通讯功能、代理启动第三方程序、数据库同步功能。为实现自动切换,采用Socket通讯,每隔10s交换一次数据,以了解数据采集软件在对方电脑上的运行状态,并据此决定启动或者关闭数据采集程序。数据库的同步可以采用订阅发布方式,这里不适合,主要是因为订阅发布方式会添加其他键到数据库,应用程序跑不起来,加上该系统插入记录、修改数据比较频繁,采用触发器方式合适。
2 基本通讯的建立与自动切换
这里只讨论代理启动一个第三方软件,多个代理启动软件处理方法类似,编程思想:
(1)通讯正常情况下,第一次连接成功后,主机启动数据采集软件,同时启动定时器1,定时器1将定时检查数据采集软件在主机上的运行状况,并把运行状况发给备机。如果该软件正在主机运行,则不操作;否则备机启动数据采集软件。备机切换后,也启动一个定时器,定时检查数据采集软件在备机上的运行状况,并把运行状况发给主机。如果备机的数据采集软件不运行,主机启动数据采集软件。
(2)不正常情况下,主备机不能交换数据,网线连接断开、其中一台电脑死机、人为关掉一方软件都属于这种情况。这种情况下,主机检查数据采集软件,没有则启动,同时启动定时器2,定时检查数据采集软件在主机上的运行状态,如果关掉,自动打开;备机检查数据采集软件,没有则启动,同时启动定时器1,定时时间到,发一条信息给主机,如果没有回音,检查数据采集软件,关闭的话启动,如果有回音,转为通讯正常情况,做相应处理。
3 触发器同步数据库
编程思想:
(1)通讯正常情况下,如果主机运行数据采集软件,把触发器加到主机的数据库,同时删掉备机的触发器;如果备机运行数据采集软件,把触发器加到备机的数据库,同时删除主机的触发器;
(2)如果通信不正常或者软件退出运行,删除触发器。
使用触发器同步数据库,需要相应设置MSDTC;MSDTC依赖于RPC,RPC使用的端口是135,要打开135端口;启动DTC服务;启动1433端口;关闭防火墙;链接服务器。
数据采集软件对数据库操作包括插入新记录、修改原记录,假设对方计算机名PC-201004191511,数据库pubs,表employee,列名job_lvl,则
(1)针对插入新纪录操作,相应触发器
Create trigger [dbo].[tr_insert_employee] on [dbo].[employee]
for insert
as
set xact_abort on
insert [PC-201004191511].pubs.dbo. employee (emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)
select emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date from inserted
go
(2)针对修改列job_lvl,相应触发器
Create trigger [dbo].[tr_update_employee_job_lvl] on [dbo].[employee]
for update
as
set xact_abort on
if update(job_lvl)
update [PC-201004191511].pubs.dbo.employee
set [job_lvl] =i.[job_lvl] from [PC-201004191511].pubs.dbo.employee b, inserted i
where b.emp_id=i.emp_id
go
参考文献
[1] 毛应爽,赵慧玲,孟宪颖,SQL Server 2005 程序设计与管理基础同步实训教程[M],北京:清华大学出版社,2009. 12.
[2] BL DataMirror双机热备软件,南京北路科技.
[3] KJ90瓦斯安全监控双机热备软件,煤炭研究总院重庆研究院(田兵).
[4] 包建军,霍振龙,樊菁,可靠实现煤矿双机热备系统的方法[J],工矿自动化,2010.10.
[5] SOCKET API通讯程序源代码.WWW.VCKBASE.COM.
作者简介
汤其三,男,1986年生,江苏科技大学09级硕士研究生,主要研究方向:单片机、DSP、FPGA软硬件设计开发,波形数据采集与大屏幕液晶显示,VC++可视化编程,SQL Server数据库操作,串口通信等。