案子:
- 一个工业 IT 系统,控制和存储两条生产线的数据
- 每条生产线有一台服务器。每台服务器运行该生产线的自动化对象。每台服务器都有一个本地 SQL 服务器数据库,用于存储该生产线的数据。
- 自动化软件具有内置冗余功能。一条生产线上的服务器发生故障,自动化对象将转而在另一台服务器上运行。
设想一个场景:生产线 1 的服务器上的磁盘控制器发生故障。目前将发生以下情况:
- 自动化对象将开始在生产线 2 的服务器上运行。
- 但是当自动化对象开始对服务器 1 进行数据访问时,它们当然会失败(因为磁盘控制器不起作用)。
因此,我们讨论了各种选择。一位同事提出了以下建议:
- 在服务器 2 上复制服务器 1 的数据库。反之亦然。
- 使用本地主机连接字符串设置数据访问。
- 因此,当自动化对象开始在另一台服务器上运行时,它们的数据访问将转到其正在运行的服务器上的数据库。
我没有复制经验。复制是解决上述问题的可行方法吗?设置复制时要记住的重要事项?还有其他建议吗?
答案1
如果您使用的是 SQL2005 或 2008,则可以考虑在两台服务器之间进行同步数据库镜像,并使用第三台服务器作为见证服务器来处理自动故障转移。这被称为“无自动故障转移的高安全性”
http://msdn.microsoft.com/en-us/library/ms189852.aspx
http://technet.microsoft.com/en-us/library/cc917713.aspx
或者,如果您可以在服务器之间使用共享存储,则可以考虑主动/被动 Windows 集群。
答案2
- 那么,为所有这些本地数据库建立一个集中式 SQL 后端怎么样?
- 将控制操作系统及其中的所有内容虚拟化,这样如果物理服务器出现故障,虚拟机就会在另一台服务器上启动。
- 保持一切原样,但为服务器配备 FT 功能,即双 PSU、两个控制器上的 RAID10、两个 UPS 单元为冗余电网供电等。