建议做法:
情况一:船上数据库做更改
1.对船上数据库直接作更改, 然后保存修改sql语句。
2.在船上的电脑写个window service 服务, 定时检查网络是否联通, 如是连接状态,则更新保存且未执行的sql。
情况二:陆上数据库做更改
1.对陆上数据库直接更改, 然后保存sql语句。
2.在船上的电脑的window service 服务,定时检查网络是否联通, 如是连接状态, 读取陆地上的数据库更改sql并执行,并记录是否成功。
ps: 这里的日志功能很重要,要记录好
http://kb.cnblogs.com/page/103975/ 可以通过发布与订阅来实现
现在这个有两个主要的难点:
1. 两台服务器之间通过网络同步很困难,因为船上的网络信号很弱或者无信号。
2. 客户那没有比较熟悉数据库的人员,最好能做一个操作界面来让他们自己进行操作。
再有没有好点的办法,请告诉下,谢谢!
@S-U-N: 既然是没有网络的情况下去操作,那你的情况是隔多少天在线下同步一次,就直接两个数据库用软件一同步就行了
1. 两台服务器之间通过网络同步很困难,因为船上的网络信号很弱或者无信号。 没信号,还要求远距离同步,谈同步就是扯淡。
2.数据同步还是自动化的好,尽量避免手工操作。
3.有信号,或者信号较弱的情况同步,可以允许慢,但不能没信号。
双机热备
我们现在做的离线客户端(WPF+Sqlite)与你现在的使用场景类似 (客户端也是在船上使用)。网络不通或信号不好时保存在本地的数据库, 网络正常后使用接口进行数据同步(通过WCF接口与服务器进行数据交互)。尽量避免让用户直接操作数据库进行备份,通过接口进行隔离这样更安全。定义成接口以后跨平台使用时很方便,扩展性更强。供参考
对于糟糕的网络环境的两个数据库同步,这个很简单做的,不管是添加,修改,还是删除,各自记录操作的sql语句,然后再根据时间排序,在两个数据库中分别执行,对于删除,我的建议是用软删除。
数据库同步软件DBSync,能满足你的需求。它支持异地同步,支持全自动同步,支持断点续传。因此,即使网络不好、甚至电脑断电,都没关系,一旦供电恢复、网络恢复,就会自动继续,而且不会遗漏数据。