案子:
- 工业 IT 系统,在两条生产线上控制和存储数据
- 每条生产线有一台服务器。每台服务器都运行该生产线的自动化对象。每台服务器都有一个本地 SQL 服务器数据库,用于存储该生产线的数据。
- 自动化软件具有内置冗余。一条生产线的服务器上的服务器故障将导致自动化对象在另一台服务器上运行。
一个想象的场景:生产线 1 的服务器上的磁盘控制器发生故障。目前,将发生以下情况:
- 自动化对象将开始在生产线 2 的服务器上运行。
- 但是当自动化对象开始对服务器 1 进行数据访问时,它们当然会失败(因为磁盘控制器不起作用)。
所以我们讨论了选项。一位同事提出了以下建议:
- 在服务器 2 上复制服务器 1 数据库。反之亦然。
- 使用 localhost 连接字符串设置数据访问。
- 因此,当自动化对象开始在另一台服务器上运行时,它们的数据访问将转到它们正在运行的服务器上的数据库。
我没有复制经验。复制是上述问题的可行解决方案吗?设置复制时要记住的重要事项?其他建议?
如果您使用的是 SQL2005 或 2008,则可以考虑在两台服务器之间进行同步数据库镜像,第三台服务器充当见证服务器,处理自动故障转移。这被称为“没有自动故障转移的高安全性”
http://msdn.microsoft.com/en-us/library/ms189852.aspx
http://technet.microsoft.com/en-us/library/cc917713.aspx
或者,如果您可以在服务器之间使用共享存储,则可以考虑使用主动/被动 Windows 集群。