异地服务器数据同步问题

tanweibiao2000 2008-11-21 04:52:41
各位大侠,请教一下数据库的同步问题:
问题:现在公司要开发一套软件。需要三个地方都装一套一样的ERP,数据库也是一样的,有什么比较好的方式,使得这三套软件的数据同步起来。

例子:公司总部A在深圳,有一工厂B在东莞,一工厂C在广州;总部A的操作数据不是很大,主要是高层用来查询,B和C是日常生产数据,比较大。现在总部的高层需要定时查看工厂A和工厂B的数据,工厂A或者工厂B也可以互相看对方的数据(根据订单的多少,可能会把一些订单转给对方)。

讨论解决方法:1、如果这三地都用同一套软件、一个数据库,那么软件和数据库只能放在一个地方,其它两地就要通过VPN或者其它方式远程登录服务器了。这种方法好像实现起来就简单,但是其它两地的客户端的数量就受到了限制(B和C加起来有200个客户端),一条VPN不知道能支持几个链接?2、如果三地都安装一套软件和数据库,那么就有数据库的数据同步问题。如果用数据库的复制功能,不知道能不能实现双向复制,即:同时发布服务器和订阅服务器。

大家讨论下,提下建议或者有什么成熟的解决方案。
...全文
316 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanweibiao2000 2008-12-09
  • 打赏
  • 举报
回复
3套ERP同一个数据库的方式,是最简单的实现方式,但是生产数据太大了,网络要求太高了,而且全部都连一个数据库,同时有100~200人进行操作(读取或者写),服务器的承受能力要求也要很高。

amstar 2008-11-25
  • 打赏
  • 举报
回复
同步有什么用?鸟用!
最好是领导查询时链接服务器,这样可以同时查到任何地方的数据就OK,平时各用各的数据库.少流量,灵活,方便,省事.我们公司有几十个项目,要都这样就惨了,现在是DDN连起来的,一种是WEB方式的ERP,一种是CS版的,共用,统计报表是全集团的.
dawugui 2008-11-25
  • 打赏
  • 举报
回复
SQL Server 2005数据库镜像简介
自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器、传输日志,以及备份和重新存储了——但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复。数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。

Edgewood Solutions 的Greg Robidoux 回答了我们一些SQL Server 2005中有关数据库镜像的常见问题,同时还解释了为什么你现在就应该开始测试这个内建的功能来看看它最终是否会给你的环境带来好处。

什么是数据库镜像?

Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问;它只用在错误恢复的情况下。

因为是在SQL Server 2005中新引入的特性,这个功能只能用在,这个版本的软件中。在某种程度上说,它是复制和日志传输的混合体:你所有的事物都在事物级别(复制)上移动(日志传输)到你的数据库的一个镜像拷贝上,同时减少了你在实现日志传输或者复制的时候可能会面临的问题。

复制包括大量的移动部分,并且如果你的数据库计划经常改变的话,要保证你的复制运行得流畅也是困难重重。对于日志传输,为了保证同步,同样需要实现很多的处理,例如创建备份、拷贝备份,以及备份重存。如果有一个进程崩溃了,整个处理过程就崩溃了。

数据库镜像的工作方式是什么?

Robidoux :要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“基本的”,第二个服务器被称作“镜像的”。基本数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。

除了基本和镜像之外,你还可以引入另一个可选的组件,名为“证人”。证人数据库是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。证人服务器只有在你想实现自动错误恢复的时候才需要用到。

实现的方式是什么?

Robidoux :数据库镜像提供了三种实现的方式。根据你想要用什么方式来进行错误恢复处理来进行选择。

高可用性:这个操作模式选项允许你在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个证人服务器。

高保护:这个选项可以让你在两台服务器上同步事物写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到证人服务器。

高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到证人服务器。

时刻记住将你的数据自动恢复到第二个拷贝才是数据库镜像的真正好处。因此,大多数的实现可能都是使用的高可达性方式。其他的选项仍然提供了内建的错误恢复过程,但是前提是你在发生错误的时候对进行自动的错误恢复怀有极大的兴趣。

数据库镜像可以工作在哪几个版本上?

Robidoux :数据库镜像只能在标准版、开发版和企业版的SQL Server 2005中找到。基本服务器和镜像服务器的SQL Server运行实例都需要是这几个版本。证人服务器可以运行在任何版本的SQL Server上。此外,还有其他的一些特性是SQL Server的开发版和企业版上特有的,但是标准版具有最基本的功能。

总结

现如今,SQL Server 2005的数据库镜像已经关掉了,但是所有的功能仍然存在。数据库镜像可以通过使用检索标志来打开——但是微软现在并不支持这个功能了,所以不要在你的产品环境中运行它。数据库镜像将会在本年年末完全实现并被支持。

要打开这个特性并开始你的测试,你可以看看以前的专家知识解答。微软正在寻找额外的反馈,所以你可以看看它是否可以作为你的SQL Server环境的候选。

Andy-W 2008-11-25
  • 打赏
  • 举报
回复
VPN方案
talayayaya 2008-11-25
  • 打赏
  • 举报
回复
做一个数据库同步程序,有两种方法
1.通过标志位来同步(加一个字段ifupdate),如新插入数据为10,同步中为11,插入成功为2
如数据修改则为1,同步中为11,修改成功后为2;
2.通过时间来同步,如这次同步的时间是‘2008-11-25 12:12:00’,那么下次就同步这个时间以后的数据
当然,根据表的结构不一样,可能两种方法要结合使用
另外,同步的时间时隔要根据你数据量的多少来设置,如果同步快就设短一点,慢的话就得间隔长些
orochi_gao 2008-11-25
  • 打赏
  • 举报
回复
A:是report,没有数据产生,B,C是生产数据库但听lz的意思也没产生数据交换,B与C之间也是report,不需要什么同步
1:BC发布,在A地找台服务器做订阅(异地VPN要稳定),大家都到A上去捞数据
2:楼上amstar 说的用链接服务器
zdgood 2008-11-24
  • 打赏
  • 举报
回复
楼上正解!A端做服务(有固定ip),b,c端通过固定ip 访问,对客户端的个数没有限制的。
我们现在的erp 就是通过ip 访问,国外的服务器也可以访问到的!
yxxue 2008-11-24
  • 打赏
  • 举报
回复
我的意思是,这套ERP设计的有问题,只能用自己的数据库,太奇怪了,为什么不三套ERP共用一套数据库呢?
那城 2008-11-24
  • 打赏
  • 举报
回复
把数据库固定下在一个固定得ip地址固定端口就ok了
tanweibiao2000 2008-11-24
  • 打赏
  • 举报
回复
“分布式数据的数据库”具体的原理是什么?
是怎样做到数据同步的?
tanweibiao2000 2008-11-24
  • 打赏
  • 举报
回复
自己顶下
tiyuzhongxin789 2008-11-22
  • 打赏
  • 举报
回复
用支持分布式数据的数据库...
filec75 2008-11-21
  • 打赏
  • 举报
回复
mark
spidershark 2008-11-21
  • 打赏
  • 举报
回复
用支持分布式数据的数据库
水族杰纶 2008-11-21
  • 打赏
  • 举报
回复
聽說2005的鏡象可以
沒實踐過,幫頂~~
hyde100 2008-11-21
  • 打赏
  • 举报
回复
关注

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧