如何解决多数据库之间同步问题

evan2005 2013-10-16 02:41:40
随着数据量和访问量的增加,我把原来的数据库分成了多个数据库 ,但是分开后数据之间同步就有点困难
1:用数据库复制功能好像对服务器的性能影响较大
2:如果做计划进行数据同步的话,数据还是有时间差的。
虚心请教,谁有更好的方法
...全文
393 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
guguda2008 2013-10-16
  • 打赏
  • 举报
回复
加服务器,做高可用性,SQL SERVER实现不了高性能集群
haitao 2013-10-16
  • 打赏
  • 举报
回复
把原来的数据库分成了多个数据库 ——如果还是在同一个服务器,则无需同步,直接跨库访问好了
houyajin 2013-10-16
  • 打赏
  • 举报
回复
用复制吧。……
  • 打赏
  • 举报
回复
因为数据量太大,进行分库。 我觉得,应该按照业务进行拆分,这样在拆分后,可以减轻数据库服务器的压力。 比如,应用服务器有多台,分别对应业务1,业务2,业务3, 那么可以考虑对数据库进行分库,把数据库按照业务横向拆分为分别适应于3中业务的3个数据库, 比如数据库1,数据库2,数据库3, 数据库之间只需要进行少量数据的同步,主要是一些数据库之间公用的数据。 这个主要是从高性能方面的考虑,但还有一个问题是数据安全,也就是需要备份,如果数据量太大,比如像你说的一个数据库大概600g,甚至1TB,那么就可以通过数据库复制,或者数据库镜像,日志传送,实现数据的安全,同时还可以实现,数据的读写分离, 这是myspace架构的变化,采用的就是sql server支持海量数据访问,曾经达到每月动态pv 40亿次 http://blog.csdn.net/jibcy/article/details/7641683
evan2005 2013-10-16
  • 打赏
  • 举报
回复
看了还没有好的办法,我的数据库服务器本身压力就大,因为大多是存储过程或者函数,所以对数据库服务器性能要求已经比较高了。目前是采用的第二种方法,数据库复制功能不能接受
book_wjqtiger 2013-10-16
  • 打赏
  • 举报
回复
赞同楼上的说法
Mr_Nice 2013-10-16
  • 打赏
  • 举报
回复
引用 楼主 evan2005 的回复:
随着数据量和访问量的增加,我把原来的数据库分成了多个数据库 ,但是分开后数据之间同步就有点困难 1:用数据库复制功能好像对服务器的性能影响较大 2:如果做计划进行数据同步的话,数据还是有时间差的。 虚心请教,谁有更好的方法
高可用和高性能本身就是矛盾体。 鱼与熊掌兼得的成本是很高的。 如果lz的使用在实时性要求上很高,牺牲一定的服务器性能,做复制应该是首选。(如果硬件还不错,其实复制真没慢多少) 如果是性能要求很高,那就妥协一下性能,实时性上,稍微做个间隔,比如10分钟同步一次。(如果10分钟的收益不会大于10分钟的成本支出,相信这个选择是可执行的)
evan2005 2013-10-16
  • 打赏
  • 举报
回复
我说的只是数据文件,不包括日志文件
evan2005 2013-10-16
  • 打赏
  • 举报
回复
也不小了,现在主数据库是600多个G,平均每天增加2个G
發糞塗牆 2013-10-16
  • 打赏
  • 举报
回复
复制技术同步完成之后,不应该有大量数据需要频繁同步吧?不过你的库到了什么级别?需要拆库?
唐诗三百首 2013-10-16
  • 打赏
  • 举报
回复
引用 3 楼 evan2005 的回复:
现在需要同步的数据量已经非常大了,又想达到实时的效果。
初始化时,一般是整库备份后还原到目标服务器上,然后再部署同步程序.. 以后的同步都是增量数据同步了,即只同步差异部分,数据量应该不大.
book_wjqtiger 2013-10-16
  • 打赏
  • 举报
回复
实时的具体要求是什么?难道是A中一旦有数据,B中也要有?还是允许一定的延时?这和你的整个系统的要求有关。
evan2005 2013-10-16
  • 打赏
  • 举报
回复
现在需要同步的数据量已经非常大了,又想达到实时的效果。
唐诗三百首 2013-10-16
  • 打赏
  • 举报
回复
我们公司也有数据库分离,数据同步是通过自行编程的, 原理是table trigger / change_tracking + service broker, LZ可以参考一下.
Landa_Jimmy 2013-10-16
  • 打赏
  • 举报
回复

如果是同一种数据库的话,你同步的数据表结构是否相同,如果也相同的话,完全可以利用数据库的同步复制机制来解决;(做主从)

如果表结构不相同的话,如果不在应用层处理的话,有两种方式参考:

1,A推数据给B;A有数据的时候,实时或非实时(采用event或trigger)将数据推到B中,B再做处理;

2,B从A拉数据,用一个event(mysql中的job)定时从A中拉数据然后进行处理;

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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