求SQL 2005 数据同步思路

jixiaojie 2007-11-25 05:56:50
场景:

上海:数据库服务器A,数据库服务器B(数据库名Log,A,B使用SQL 2005 镜像同步数据,默认A为主服务器)
北京:备份数据库服务器C


需求:

将上海服务器A上的数据库Log 同步到北京服务器C

1:由于Log数据库中大部分表没有主键(领导要求不能更改原数据库表结构),所以不能使用复制
2:领导要求北京数据库服务器C能提供只读服务,数据延时最好小于15分钟
3:北京报表程序连接服务器C提供报表数据,跟数据库C的连接不能中断
4:上海A,B服务器进行镜像切换后,数据同步能自动从A->C切换成B->C



各位大虾,帮忙指点一下数据同步思路,不胜感激!
...全文
379 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
areswang 2008-07-01
  • 打赏
  • 举报
回复
马克
w2jc 2007-11-26
  • 打赏
  • 举报
回复
另外,我也很想知道“4:上海A,B服务器进行镜像切换后,数据同步能自动从A-> C切换成B-> C” 这个这么实现?
w2jc 2007-11-26
  • 打赏
  • 举报
回复
回12楼老大,
还是你博闻强记,你说得不错,镜像状态下的数据库是不可访问的。多谢更正!
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
日志传送配置镜像可以完全做到楼主的要求(这点联机帮助上有说明, 参考我帖出来的部分)

至于 w2jc 说的"应将日志传送建在B和C之间,这样可以减少A上面的负载"
这个是不支持的. 镜像数据库处于还原状态, 根本不支持日志备份(日志传送通过日志备份和还原来实现)
rouqu 2007-11-26
  • 打赏
  • 举报
回复
或者 能不能把上海的两台2005服务器做一个集群 Virtual Server再跟北京的C服务器做Log Shipping 记得2000 中最短间隔是15min 似乎还不能满足数据即时同步的要求
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
应该不能, 用户在用, 数据还原到那里去啊? 这个是有冲突的
rouqu 2007-11-26
  • 打赏
  • 举报
回复
有点同意楼上的意见 至于数据即时同步和服务冗余(集群) 其实也可以考虑第三方产品 如PlusWell 他的集群能突破Windows两台服务器物理间距的限制
w2jc 2007-11-26
  • 打赏
  • 举报
回复
在上海和北京之间用日志传送的方法,细节就不说了,上面诸多老大已经发言。

为了提高性能,我觉得你可以这样:
如你所说,A, B之间用镜像,A是主服务器
那么,应将日志传送建在B和C之间,这样可以减少A上面的负载,
而且就算A宕机,转到B上面,在B和C之间的日志转移也不用改动。

日志传送非常有效和稳定,但是要想很快地从A->C转换到B->C还是有点困难的,相当于要在B和C之间重新建立日志传送。

从技术上说,我觉得你们领导的第4个要求是不能实现的。不知其他高手是否有此解决方案。
jixiaojie 2007-11-26
  • 打赏
  • 举报
回复
十分感谢邹老大!

还有个问题,望老大指导一下,日志传送备份服务器提供只读的情况下,如果程序一直连接到数据库,有没有办法不中断用户连接,继续还原?
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
日志传送的配置方法并不复杂, 在 Management Studio 的对象资源管理器上右键数据库--属性--事务日志传送, 在这里可以通过向导直接配置好

你也可以在这个界面中生成脚本, 从而知道如何通过脚本完成配置
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
上面的摘自sql联机丛书, 可以满足楼主的需求
需要注意一个问题, 日志传送通过日志备份和还原来实现, 主体服务器会备份数据库日志并放在一个目录
面辅助服务器需要从这个目录复制备份文件到目标文件夹并还原

所以有一个共享目录的问题, 因为是异地, 所以除非使用VPN技术, 否则你和自己想另外的方法解决上述问题(例如写程序自动上传主服务器日志备份到FTP, 辅助服务器自动从FTP下载)
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
当日志传送备份共享保持不变时,镜像会话中的主体数据库也可以担当日志传送配置中的主数据库,反之亦然。数据库镜像会话可以在任何操作模式下运行,同步(将事务安全性设置为 FULL)或异步(将事务安全性设置为 OFF)模式均可。

注意:
若要在数据库中使用数据库镜像,始终需要完整恢复模式。



通常,组合使用日志传送和数据库镜像时,会先建立镜像会话,然后再建立日志传送(尽管这并不是必需的)。然后,当前主体数据库将被配置为日志传送主数据库(主体/主数据库),并与一个或多个远程辅助数据库一起使用。而且,镜像数据库也必须被配置为日志传送主数据库(镜像/主数据库)。日志传送辅助数据库应该位于非主体/主服务器或非镜像/主服务器的服务器实例上。

注意:
日志传送中所涉及的服务器的区分大小写设置应当匹配。



在日志传送会话期间,主数据库上的备份作业将在备份文件夹中创建日志备份。辅助服务器的复制作业将从该位置复制备份。若要使备份作业和复制作业成功,它们必须都能访问日志传送备份文件夹。若要使主服务器达到最大可用性,我们建议在独立主机上的共享备份位置建立备份文件夹。确保所有日志传送服务器(包括镜像/主服务器)都能访问共享备份位置(称为“备份共享”)。

若要使日志传送在数据库镜像故障转移后仍能继续进行,还必须使用主体数据库上用于主服务器的配置将镜像服务器配置为主服务器。镜像数据库处于还原状态,这样可以防止备份作业备份镜像数据库中的日志。这将确保镜像/主数据库不会影响主体/主数据库,后者的日志备份当前正被辅助服务器复制。为了防止虚假警报,在镜像/主数据库上执行备份作业之后,备份作业将向 log_shipping_monitor_history_detail 表中记录一条消息,然后代理作业将返回成功状态。

镜像/主数据库在日志传送会话中处于非活动状态。但是,如果镜像进行故障转移,则以前的镜像数据库将作为主体数据库在线。此时,该数据库也将作为日志传送主数据库变为活动状态。以前无法在该数据库中传送日志的日志传送备份作业也将开始传送日志。相反,故障转移将使以前的主体/主数据库成为新的镜像/主数据库并进入还原状态,同时该数据库上的备份作业也将停止备份日志。
jixiaojie 2007-11-26
  • 打赏
  • 举报
回复
谢谢各位老大帮忙!
特别感谢邹老大!
jixiaojie 2007-11-26
  • 打赏
  • 举报
回复
to rouqu: Mirror是三台机器,另外一台跟数据同步没有多大关系,所以没有列出来

to roy_88:老大,能详细指导一下吗?谢谢!
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
除步骤4外, 其他3步一般用 Management Studio 即可
zjcxc 元老 2007-11-26
  • 打赏
  • 举报
回复
1. 正常方式配置数据库镜像
2. 正常方式配置镜像主体数据库与服务器C之间的日志传送
注意日志备份目录, 这个日志备份目录要求能够被服务器B访问, 所以建议是单独的服务器上的共享目录, 这样无论从服务器A还是B访问都是一样
3. 数据库镜像故障转移到服务器B
4. 新的主体服务器(在步骤3之前, 这个是镜像服务器)上设置日志传送配置的主数据库及配置备份作业
与步骤2中的配置一样, 只是不需要再在服务器C上配置一次


完成这样的配置后, 数据库镜像转移的话, 日志传送的主体数据库也跟着转移
中国风 2007-11-25
  • 打赏
  • 举报
回复
用日志同步的方式
rouqu 2007-11-25
  • 打赏
  • 举报
回复
问个问题 SQL2005 Mirror不是需要三台机器吗

34,576

社区成员

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

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