我们公司的一位架构师在两个地理位置远的数据中心,devise了一个基于64位SQL2005标准版同步镜像的解决scheme,在物理(4个四核,32GB RAM)服务器和虚拟DR服务器(4个16GB RAM的虚拟CPU)见证服务器(1个虚拟CPU)。 存储是两个数据中心中的企业级SAN。
前端应用程序面向Web,具有混合的读/写使用。
作为一名DBA(在devise阶段没有咨询过),我很担心这个configuration的devise是以冗余度最小化为主要标准,而不是作为真实世界的解决scheme – networking延迟和虚拟性能盒子会造成不可接受的响应时间? 如果调用故障切换,则性能更差。
有没有人有类似的设置经验?
尽pipenetworking带宽起了很大作用,但要考虑的绝对首要因素是本体上的事务日志生成率是多less?
如果应用程序和您的维护没有生成任何事务日志,那么networking带宽实际上是不相关的。 如果它生成日志,则networking带宽必须能够处理生成的日志量。
要回答您的实际问题,如果主体上没有较大的OLTP工作负荷,您的h / wconfiguration可能会起作用(networking问题放在一边)。 如果有,并且您有4×4处理器内核生成事务日志,那么无论您的networking是否可以处理日志stream量,您的镜像服务器很可能无法跟上重播日志。 在标准版上,有一个线程处理镜像日志的REDO – 所以在重负载下你的REDO队列会变得相当大。
REDO队列是在镜像上已经过硬化但尚未在镜像数据库中重播的日志量 – 它越大,镜像数据库作为发生故障转移时的主体在线之前的时间越长。 在标准版中,如果没有像并行重做和快速恢复(REDO之后和UNDO之前的数据库联机)可用的function,这是特别麻烦的。
当然,在从主体到镜像的故障转移之后,镜像将无法像主体服务器那样服务于相同的工作负载 – 所以您将在那里,但是运行速度可能会比较慢。
希望这可以帮助。
微软发布了一个关于数据库镜像的非常好的白皮书 ,其中包括一些关于从同步镜像获得的性能影响的很好的例子。 你是完全正确的,这将是一个性能打击。 从主盒到数据库镜像执行ping命令,并以毫秒为单位查看往返时间:这将是同步镜像将添加的绝对最小开销。 ping甚至不考虑远程服务器处理每个传入事务需要多长时间 – 这纯粹是networking延迟时间。
您添加的networking延迟越多,性能就越慢,而硬件则处于闲置状态:
替代文字http://i.technet.microsoft.com/Cc917681.dbm_fig09(en-us,TechNet.10).gif
我是asynchronous镜像的忠实粉丝,因为这是添加一些保护措施的简单方法,但保护措施可能会落后。 这是一件好事,也是一件坏事:这样做很好,因为它可以处理networking延迟,但这很糟糕,因为可能会丢失任何尚未转入故障转移站点的数据。
另外,在devise数据库镜像解决scheme时(无论是同步还是asynchronous),请务必考虑您的索引维护操作。 如果你每周做索引重build,那么这些将会完全消除镜像积压,因为它们产生了太多的日志logging活动,必须通过电汇。
我没有直接的经验,但你应该看看OpenVMS集群延迟文档 。 他们广泛讨论距离问题。
为了进行主备备份,一些虚拟机不一定是不错的select。 如果VM的磁盘位于SAN上,则应该看到相当不错的性能。
长距离同步镜像是我更关心的。 读取不应受到影响,但是每次写入都需要等待远程提交准备就绪,然后再返回。
我还应该补充 – 虽然OpenVMS文档专门讨论了OpenVMS,但延迟问题适用于任何types的镜像或集群应用程序。 对于你的链路距离做光速延迟的“math”可以非常明显地performance出延迟和长距离的响应。
您主要关心的应该是networking链接。 SAN不应该提供太多的瓶颈,但我没有看到任何性能数据,所以我不能告诉你是或否。 你应该问问你的build筑师和你自己的以下问题:
仔细查看networking链接
仔细看看SANS
然后看看你的应用程序
您的RAM和处理器设置对于企业应用程序听起来不错。 这些types的问题很难量化,特别是没有真实世界的数据。
虚拟机通常不是IMO的瓶颈原因。 这很大程度上取决于他们如何build立和资源分配。 I / O通常是虚拟机速度中最重要的因素,这些SAN应该可以帮助你大大提高速度。
每个应用程序是不同的,但是你和你的build筑师需要坐下来一起回答这些问题。 在这个过程中出现的其他所有人
如果一切都失败了,就去购买另一台服务器,然后删除虚拟机。