mssql数据库,数据库同步,分布式数据库,数据库集群,如何实现

diamondTears1987 2012-06-03 11:27:19
由于项目需要,产品的部署必须考虑到安全和灾难的解决办法.由于之前一直做的的小项目,基本都是单服务器,单数据库结构,但是由于一次灾难,把这个问题提上了日程.

本人资历浅薄,很多东西还不是很熟悉,最近在网上百度了一大堆相关的东西,基本有了大概的思路,

思路就是,
1..用多个服务器做集群,做压力负载均衡,这样第一可以分流,减轻每个服务器的压力,提高稳定性,再者就是,一个服务器崩溃了,其他服务器可以继续运行.提供服务.

2..做文件同步式,自动把多台服务器上的一些特殊文件夹做文件同步,比如一些图片资源文件,静态的html.这样一台服务器做更新,其他服务器可以同步更新,并且,用户上传的文件也同步在每个服务器上,即使部分服务器崩溃了,保证用户的使用不受影响.

3.就是难住我的了,也就是数据库集群,或叫数据库同步,不知道专业学名是什么,反正我要实现的功能就是,有多个数据库服务器,这些数据库上的内容是完全相同的,不同来源的访问可能会被分配到不同的数据库上.当我对A1数据库,添加,修改,删除的时候,其他所有的数据库同步更新,应用程序在运行的时候,会被自能解析到压力最小的数据库服务器上,当一个数据库服务器挂了的时候,它对应的程序就转移到别的数据库服务器上,但是关键是,数据不能丢失,即使那个服务器的硬盘烧掉了,之前的数据也不能丢失.

我查到mssql有数据库同步的功能,但是有一个大问题就是,当2个人同时对2个数据库进行添加操作的时候,会生产2个同样的自增长id,这样2个服务器就发生了并发的冲突.导致数据出现了不一致.这个问题很致命.

以上就是我的问题描述,我把帖子共享在这里,一共以后的小菜们学习,希望各位大神多多给予指导,想必这些技术已经在很多商业公司运用的很成熟了,但是还有很多像我这样的小菜没有掌握,大家多多交流一下吧,这几天我实在是太困了,我都睡了,88.
...全文
1671 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianshuyang_999 2013-07-24
  • 打赏
  • 举报
回复
楼主是菜鸟 1.分布式系统和分布式数据库 可以减轻压力 但是一般 要用代码写 首先1.ping服务器集群 连接ping值最小的 2. 验证该服务器的服务是否可用(http) 用户同样一次操作 就分给了 某1台服务器 这样其他的机器流量自然就小了 但是集群的ping多了 说你是菜鸟是因为你把主键搞成了自增的 自增的主键是不适用于分布式数据库的 把主键写成标识变量 也不要用GUID 网上好多人说GUID不会重复 错!Guid不是不会重复 是重复率小 他的重复几率是 46的32次方 既然有重复几率 就不要用
筱筱澄 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

镜像数据库,可以增删查改吗
[/Quote]
不可以。。。。。。。。。。。

sql server的cluster什么的HA只是容灾,没有load balance
筱筱澄 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

镜像数据库,可以增删查改吗
[/Quote]
不可以。。。。。。。。。。。
starseeker7 2012-06-28
  • 打赏
  • 举报
回复
阿对了,写压力的话
可以通过SSB实现,当然需要存储过程做独立处理,也可以自己写程序控制一致性
但实际存在写压力的情况很少,除非你的项目是大型电子商务性质
没有直接的技术可以解决写压力的分散
starseeker7 2012-06-28
  • 打赏
  • 举报
回复
用MSSQL的replication+load balance(这个买硬件吧)
实现你的压力分散需求 (关于你说的id重复问题,请注意实现读写分离,同步的目的端禁止写操作)
再用镜像实现你的防灾需求

当然上情况是你的压力非常大,并且要求数据一致性高,且安全性高情况
diamondTears1987 2012-06-28
  • 打赏
  • 举报
回复
来人啊,
diamondTears1987 2012-06-11
  • 打赏
  • 举报
回复
镜像数据库,可以增删查改吗
Q315054403 2012-06-04
  • 打赏
  • 举报
回复
简单的方案是做镜像,读写都基于主服务器。灾难时转向镜像服务器
Rotel-刘志东 2012-06-04
  • 打赏
  • 举报
回复
复制可以实现的。
mayuanf 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

sql server的cluster什么的只是HA,没有load balance。
当然你可以比如clustering或者mirroring以后在做log shipping到另一台server,然后primary server做日常操作(OLTP),standby server用来查询报表,分担主服务器压力。
[/Quote]
说错了..sql server的cluster什么的HA只是容灾,没有load balance
mayuanf 2012-06-04
  • 打赏
  • 举报
回复
sql server的cluster什么的只是HA,没有load balance。
当然你可以比如clustering或者mirroring以后在做log shipping到另一台server,然后primary server做日常操作(OLTP),standby server用来查询报表,分担主服务器压力。
diamondTears1987 2012-06-04
  • 打赏
  • 举报
回复
有没有类似的案例
昵称被占用了 2012-06-04
  • 打赏
  • 举报
回复
如果只考虑容灾,,可考虑自动切换的订阅复制,需要增加一个见证服务器,具体可查看联机帮助。
haitao 2012-06-04
  • 打赏
  • 举报
回复
【文件同步式】
如果是web服务,可以使用nginx做反向代理,可配置得很好
haitao 2012-06-04
  • 打赏
  • 举报
回复
【用多个服务器做集群,做压力负载均衡】
mssql这个比较难,最多是:
先加重 主服务器 的负担,把主服务器的记录同步到 只读服务器,
分流读的用户到此服务器来读,减轻主服务器的读压力
写压力基本是没办法简单分流,除非是应用自行规划
diamondTears1987 2012-06-04
  • 打赏
  • 举报
回复
顶一顶啊,别沉了,这是个好贴啊.

34,597

社区成员

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

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