由于硬件故障,我们正在将安装的软件从一台服务器迁移到另一台新服务器。有两个软件(vmware vcenter 和 symantec backup exec)依赖于独立的 SQLServer Express 实例。
该软件(两者)的初始设置是由一家外部公司完成的,他们似乎遵循了下一步-->...--->下一步-->完成方法来安装软件,最终导致每个软件都有自己的 SQLServer Express 实例。
我的问题是,这种方法是最好的选择吗,或者最好将所有数据库保存在同一个 SQLServer Express 实例上?
答案1
反对在同一台计算机上运行多个 SQL Server 实例的常见理由是每个实例都会使用额外的资源。这意味着 SQL Server 二进制文件、系统数据库和其他杂项文件的完整副本需要额外的磁盘空间。仅运行服务器二进制文件本身就会产生 CPU、线程和 RAM 开销。最大的资源块可能是两个单独的数据缓存。拥有两个数据缓存可能会阻止一个实例或另一个实例有效使用 RAM,具体取决于数据库大小、系统的查询方式以及系统的配置方式。额外的实例还需要额外的管理时间。例如,需要创建和监视两个备份作业、创建和监视两个重新索引作业、配置最小和最大 RAM 值等。您可能需要为每个额外的实例打开额外的防火墙端口。
关于多个实例,最流行的(也是我认为最好的)论点是,两个不同的应用程序在安全方面需要尽可能多地相互隔离。如果我没记错的话,该功能最初旨在帮助 PaaS 供应商在虚拟化技术尚未成熟且 SQL Server(和 Windows Server)必须安装在“裸机”上之前向客户提供 SQL Server。显然,这些客户端需要完全相互隔离,而这些安全问题今天与 2000 年一样。
某些应用程序需要 tempdb 的特定排序规则,该排序规则由实例上运行的所有应用程序共享。这可以通过多个实例来解决。同样,如果您的应用程序需要特定的服务包或修补程序级别,您可以将每个实例保持在不同的版本。
如果您有两个不同的应用程序(或同一个应用程序的不同版本(开发、测试、生产))必须使用相同的数据库名称,则安装多个实例是一种可行的解决方案。
(对于必须隔离的要求,另一个解决方案是运行两个虚拟化操作系统,每个操作系统都安装有自己的 SQL Server。这可能提供更好的隔离,但可能会增加许可和管理成本,并在计算机上产生更多资源开销。话虽如此,我看到越来越多的 DBA 立即转向虚拟化。“多个实例”可能是一个过时的功能,至少对于大型系统而言,但我没有看到任何迹象表明微软将放弃它。)