sql-server – SQL Server数据库同步

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server数据库同步前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题定义

我们的用户需要能够查询最新的数据库.数据可能会持续24小时,这是可以接受的.使用生产副本获取和保持第二个数据库最新的最低成本方法是什么?有没有我没想过的方法

工作量

我们有第三方应用程序,用于监控股票交易活动.在白天,作为各种工作流程的一部分,发生了很多小变化(是的,这种交易是有效的.不,这是可疑的,等等).晚上,我们执行大型集合操作(​​加载前一天的交易).

目前的解决方案和问题

我们使用database snapshots.晚上10点我们删除并重新创建快照.然后ETL处理开始.这显然对我们的磁盘造成负担,但允许我们的用户在不锁定数据库的情况下查询数据库(他们使用Access前端).他们在深夜和清晨使用它,因此他们会注意到停机时间.

这种方法的问题是双重的.第一个是,如果夜间处理失败,并且这并不是非常罕见,我们可以恢复数据库,从而导致快照被删除.另一个问题是我们的处理时间正在超过我们的SLA.我们正在尝试通过与供应商合作解决这个问题,因为他们发现了写得不好的查询并且缺乏索引.数据库快照也是这种放缓的罪魁祸首,正如它存在时的速度差异所证明的那样 – 令人震惊,我知道.

考虑的方法

聚类

我们已启用数据库群集,但这并未满足使数据可用的需求,并且通常使管理员的生活变得复杂.它已被关闭.

sql Server复制

我们上周开始关注replication.我们的理论是,我们可以获得第二个目录并与生产数据库同步.在ETL开始之前,我们将切断连接,并且只有在ETL过程完成后才重新启用它.

管理员Snapshot Replication开始,但他担心需要多天的高cpu使用率来生成快照以及所需的磁盘消耗.他表示,在将所有数据发送到订户之前,它似乎将所有数据写入物理文件,因此我们的.6TB数据库的存储成本将达到1.8TB.此外,如果生成快照需要多天,那么它将不适合所需的SLA.

阅读好文章之后,似乎Snapshot可能是初始化订阅者的方式,但之后我们要切换到Transactional Replication以使其保持同步.我假设打开/关闭事务复制不会强制完全重新初始化?否则,我们会打破时间窗口

数据库镜像

我们的数据库处于完全恢复模式,因此database mirroring是一个选项,但我对它的了解甚至比复制更少.我确实发现SO answer表明“数据库镜像阻止数据直接访问,镜像数据只能通过数据库快照访问”.

记录运输

听起来像log shipping也可能是一个选择,但这是我一无所知的另一件事.它是一个成本较低的解决方案(实施和维护)吗?基于Remus的comment“日志传送允许对副本副本进行只读访问,但在应用下一个备份日志时(例如每15-30分钟)将断开所有用户的连接.”我不确定停机时间会转化多久,这可能会让用户产生一些焦虑.

MS同步

我上周末才听说过使用Sync,还没有调查过.我讨厌为这种问题引入一种具有高可见性的新技术,但如果这是最好的方法,那就这样吧.

SSIS

我们在这里做了大量的SSIS,所以生成几百个SSIS包来保持二级同步是我们的一个选择,虽然是一个丑陋的.我不喜欢这样做,因为这是一个很大的维护开销我宁愿我的团队也没有.

SAN“神奇”快照

在过去,我听说我们的管理员使用一些SAN技术来对整个磁盘进行即时备份.也许有一些EMC魔法可以用来制作mdf / ldf的uberquick副本,然后我们可以分离/附加目标数据库.

备份还原

我认为我们每周进行一次完整备份,每晚差异,每15分钟进行一次tlog.如果用户可以使用3-4小时的中断进行完全恢复,我想这可能是一种方法.

约束

Windows 2008 R2,sql Server 2008 R2(企业版),VMWare v5企业版,EMC SAN存储,其中驱动器映射到vmdk文件,commvault处理备份和源目录中的.6TB数据.这是我们内部托管的第三方应用程序.通常不赞成修改它们的结构.用户不能没有查询数据库,并且主动识别他们监控的表以完成他们的工作而拒绝受到限​​制.

我们的DBA目前是纯粹的承包商.全职人员已经启航,我们还没有更换它们.应用程序管理员不熟悉sql Server问题,我们有一个存储/ VM管理员团队可以帮助/阻碍这项工作.开发团队目前没有参与,但可以根据方法入伍.因此,更容易实现和维护解决方案.

我,我是在hosue的开发方面,所以我只能提出方法,而不必处理管理方面的问题.因此,在管理员马鞍上没有时间,我犹豫是否说一种方法优于另一种方法 – 根据论文,这一切看起来都很棒.我完全愿意为你们提出任何方向,因为正如我所看到的,它只会让我作为一名数据库专业人士更有价值. I have a wheelbarrow but no holocaust cloak available.

相关问题

> https://stackoverflow.com/questions/525637/what-are-the-scenarios-for-using-mirroring-log-shipping-replication-and-cluste
> https://stackoverflow.com/questions/434982/mirroring-vs-replication
> https://stackoverflow.com/questions/4303020/sync-databases-mirroring-replication-log-shipping
> https://stackoverflow.com/questions/4303020/sync-databases-mirroring-replication-log-shipping
> http://nilebride.wordpress.com/2011/07/24/log-shipping-vs-mirroring-vs-replication/

编辑

解决@ onpnt的问题

数据延迟接受

用户当前查看最多24小时后的数据.该数据仅为2200年的当前数据

给定分钟,小时和日期的数据量变化
不知道如何量化.营业时间,每小时可能有数百次更改.每夜处理,每个工作日数百万行

连接到辅助

内部网络,独立的虚拟主机和专用存储

读取辅助实例的要求

Windows组将具有对所有表的辅助读取访问权限

辅助实例的正常运行时间

对正常运行时间要求没有明确的定义.用户希望它始终可用,但他们愿意为此付费,可能不是那么多.实际上,我说一天中的23个小时就足够了.

更改现有架构和所有对象

不经常的修改,可能每季度一次用于表对象.也许每月一次代码对象.

安全

没有特殊的安全需求.生产权限将与副本的权限相匹配.虽然我想到了,但我们可以撤销用户对prod的读取权限,只允许他们阅读副本……但不是必须的.

@darin海峡

恢复快照可能是一个选择,但我认为有一些原因他们没有追求它.我会咨询管理员

@cfradenburg

我的假设是我们只使用其中一种方法,但这是一个很好的观点,恢复会破坏“其他”同步技术.他们正在调查使用EMC快照魔术.正如管理员所描述的那样,他们将在1900拍摄快照并将图像迁移到次要区域.这应该在2200完成,然后他们执行分离并重新连接辅助数据库.

包起来

2012-10-29我们评估了EMC快照魔术和其他一些复制选项,但DBA认为他们可以最好地找出镜像.赞成答案,因为他们都帮助了我,给了我很多选择以及“家庭作业”来调查.

解决方法

Modifying their structure is generally frowned upon

复制很可能已经完成,在此之前我会抛出Sync. (来自现实生活中对Sync Framework的高交易测试)

如果3-4小时是您的数据延迟除外,那么日志传送可能是您在最简单的副本上的最佳选择.但是日志中发生了多少变化?发现要监控它,看看你需要多快和多少需要推动.

如果你不能去镜像或升级到2012企业,那就好了,虽然如果你可以去企业,那将是一个合理的策略.

SSIS并不仅仅意味着转储数据,但它可以做到这一点.你在查找转换方面看得太过分了,而且任务的时间和资源都很昂贵.虽然,就像我说的那样,它可以做到.

实际上,基于回答几个问题,将会有明显的选择范围缩小

>数据延迟接受>给定分钟,小时和日期的数据量变化与次要的连接>读取辅助实例的要求>辅助实例的正常运行时间>更改现有架构和所有对象>安全

猜你在找的MsSQL相关文章