日期:2014-05-16  浏览次数:20630 次

[求指点]多线程程序操作数据库,系统突然reboot,怎样优雅结束?
各位好:
        目前写了个多线程程序操作sql数据库,程序正常调用stop命令是ok的,但是系统突然reboot之后,不知道该采用什么机制处理:
        1.系统reboot,我的主线程可以接受到SIGTERM,然后进到处理函数,但是不知道里面改如何做
        2.如果直接调用stop,假设之前的写操作需要持续10秒以上,那么可能根本执行不到stop,系统就重启了
        3.更让我担心的是,假使写操作需要10秒以上,系统在3秒就重启,数据库文件会不会遭到损坏

------解决方案--------------------
楼主用的mysql还是其它数据库?如果是mysql,系统在关机的时候会停用mysql服务,是相对安全的,如果是直接断电重启则很容易出现数据信息损坏,建议在开机后对数据库进行检查修复,myisam数据库修复相对简单,innodb本身有较好的容错,但出问题修复比较麻烦。