高分寻求两台SQL服务器的数据同步(在网上没有找到合适的资料)~~~~~ 解决可另给分

chb5210 2006-09-14 02:50:57
我现在有一台服务器,由于数据访问量比较大,数据库里的数据也越来越多了,已经达到7G多了(由于有一些原因,里面的数据不能删出的),现在访问起来很慢了,客户端感觉就像死机一样,所以现在想增加一台服务器来缓解主服务器的压力,以提高访问速度

想实现两台服务器的数据库同步,需要数据库里的所有东西,包括所有表,存储过程等等都要同步

我在网上找了一些资料,用复制技术,快照等等,看了,试了之后感觉不是很好,你有没有这方面或者其他方面的详细的解决方法呢?

请帮忙看看哈,先谢谢了
...全文
339 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿三 2006-09-20
  • 打赏
  • 举报
回复
可以用双向复制实现同步
chb5210 2006-09-18
  • 打赏
  • 举报
回复
周末没有来
先谢谢各位了哈

我在测试用复制,还没有实现,再试试

ThankSZ 2006-09-17
  • 打赏
  • 举报
回复
在表的數據變動的情況下用觸發器進行同步更新
ThankSZ 2006-09-17
  • 打赏
  • 举报
回复
本人 也想過這個問題 樓主可以 用兩臺服務器 在表的數據變動的情況下用出發進行同步更新 客戶端動態選擇連接服務器 這樣就能做到網絡訪問的負載平衡 然后在結合樓上各位哥哥的一些想法 比如用文件組,重新設計數據庫結構 ,把不同的數據庫關聯的表分別存在不同的磁盤驅動器上,盡量減少對數據庫的訪問連接次數 我相信你會解決好這個問題的
ron_xin 2006-09-17
  • 打赏
  • 举报
回复
用 CA BrightStor 存储备份软件
todouwang 2006-09-17
  • 打赏
  • 举报
回复
事物复制,可以实现你的要求,我们这边数据量相当,我就是采用事物复制的。
天涯倦客 2006-09-15
  • 打赏
  • 举报
回复
楼上是 卖 ibm硬件的 ^_^
78hgdong 2006-09-15
  • 打赏
  • 举报
回复
从硬件上下手了,购买一台性能高的IBM专用服务器来实现...
chb5210 2006-09-15
  • 打赏
  • 举报
回复
谢谢
我再研究研究哈
wudi_1982 2006-09-15
  • 打赏
  • 举报
回复
我认为如果只是针对两个sql server服务器的同步,那么完全可以使用复制。
设置复制有若干优点,数据可以被分送到不同的位置以减少网络流量和单个服务器上不必要的负载。例如,你可以将所有或者一部分信息从在线事务处理数据库移动到另外一个服务器上来生成报表。另一个优点是可以将一台服务器中的数据移动到其他几台服务器上,以增加数据的可见性并且可以分散数据。你可以为主要的数据库在其他服务器上创建镜像,一旦该服务器失效,用户可以转向另外一个服务器继续工作。这样失效时间就可以很短,丢失的数据也会很少。又如,可以通过复制,将总公司的信息(如:库存)复制到其他分公司,以便各分公司能够及时获得汇总信息。在SQL Server中,以上情况都可以使用复制来移动数据。

在SQL Server的复制中,涉及到三个不同的服务器角色:出版服务器、分送服务器和订阅服务器。这些角色互相并不排斥,任何服务器可以充当其中一个或者多个角色。理解这3个不同的逻辑服务器,可以从我们平常生活中的订阅报纸来类比。


当设置复制时,知道什么可以被复制,什么不可以被复制是非常重要的。SQL Server可以复制具有文本/图像数据类型的列。以下是可以被复制的内容:
• 通过在设置出版物时选择所有表来出版整个数据库。
• 出版数据库中的一部分表。
• 出版数据库中单独的一个表。
• 出版表中记录(行)的一个水平子集,订阅服务器只接收记录的子集中的内容。
• 出版表中字段(列)的一个垂直子集,订阅服务器只接收字段的子集中的内容。
• 出版水平和垂直分割的文章,订阅服务器只接收记录和字段的子集中的内容。
以下是不可以被复制的内容:
• 没有主键的用户表不能被复制(用snapshot 方式例外)。
• model、m s d b、t e m p d b数据库和m a s t e r数据库中的系统表。
• 具有Ti m e s t a m p数据类型的列不能被复制。当选择具有Ti m e s t a m p数据类型的列进行复制时,数据会在发送之前被转换成b i n a r y ( 8 )类型的数据。

你还可以做一个复制监视器,复制监视器是SQL Server企业管理器中的一个组件。只出现在分送服务器上。通过复制
监视器,你可以查看各个复制代理的状态信息,并解决一些复制问题。具体来说,你通过复
制监视器能够:
• 查看出版者、出版物和订阅物的信息。
• 查看被调度的复制代理,包括执行的结果,如:处理事务的数目、处理的语句等。
• 设置复制代理的属性。
• 设置和监视同复制相关的警报。

至于具体操作,到网上你可以下资料看,我这里就不写了,太多。至于性能,对于你的需求而言,没有问题,除非你的计算机配置太低。
chb5210 2006-09-15
  • 打赏
  • 举报
回复
好的
我再试试哈
谢谢

继续等待
tengwei99 2006-09-15
  • 打赏
  • 举报
回复
其他高深的不懂,只
感觉问题关键不是客户端i/o,而是执行的效率
就像执行语句查询一样,7个g的数据,一个*,like %什么的,就够你忙活的了。
如果线程多且忙,又要同步数据库,2个数据库也一样。
应该先合理优化索引,及存储过程和查询语句
chb5210 2006-09-15
  • 打赏
  • 举报
回复
Cassava

你说的这种方法在其他地方用,可能很好
但是在我这里就不行了,实际情况不允许的哈


78hgdong(赤脚)

买服务器是一种方案,但是要花很大一笔RMB的哦,先暂时补考虑


我在网上也找了一些资料,也在测试,没有找到合适的解决办法,也许是自己的方法不对
AOCOC 2006-09-15
  • 打赏
  • 举报
回复
Cassava(车超)的方法不错..学习..
Cassava 2006-09-14
  • 打赏
  • 举报
回复
补充一句,当前表只放当天的数据,或最近几天的数据,然后建立一个作业,到了晚上没有人操作的时候,把当前表的数据转到历史表中,使用这种方法是比较有效的方法,对你的程序的改动也不会太大
Cassava 2006-09-14
  • 打赏
  • 举报
回复
对于发布与订阅的操作方法,在网上搜索一下就有不少详细的操作说明了,还是图文并貌的呢
jblcj 2006-09-14
  • 打赏
  • 举报
回复
Cassava(车超)

说得很好
triangle812 2006-09-14
  • 打赏
  • 举报
回复
两个数据库同步,还没有试过,对于Cassava说的发布与订阅方法,怎么实际操作,希望Cassava能讲简介一下.
Cassava 2006-09-14
  • 打赏
  • 举报
回复
要实现两台服务器的数据库同步,使用发布和订阅的方法已是最好的方法,SQL Server实现这个功能已是很优化了的,在效率上几乎没有什么影响,可以考虑使用这种方法,除此之外就是要优化你的数据库和你的程序了,建议把一些比较大的表分为当前表和历史表,这样可以大大提高检索速度和效率
chb5210 2006-09-14
  • 打赏
  • 举报
回复
SmallMaker(小人物)

我想同步之后,就把所有客户端分成两部分,分别访问两台服务器,这样减少I/O访问,两台服务器的数据库当然也一样了,只是这样是乎还是有一些问题存在的

清除历史数据不太现实吧,因为实际情况不允许

cncharles(旺仔)

收缩数据库并不是目的,是要提高客户端的运行速度


beijingbeerman(啤酒肚)

备份数据库后再还原到新服务器也不太现实,数据的实时性要求相对来说比较高


先谢谢

还有没有其他的办法?
加载更多回复(8)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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