vCenter SQL Express 数据库维护

vCenter SQL Express 数据库维护

在执行 vCenter 5.1 的简​​单安装并选择所有默认设置(包括 sql express 数据库)后,我们应该怎么做才能确保无需人工干预即可继续运行?

目前我们遇到的问题是数据库对于我们的部署来说过于膨胀。

我们在每个远程分支机构都有 3 台物理服务器

  • 分支-ESXi1
  • 分支-ESXi2
  • 分支备份(物理窗口盒)

活动虚拟机总数为 8 台,其中 6 台每天复制到另一台 ESXi 服务器 3 次,分支备份服务器上也安装了 Dell Quest vRanger 软件。此外,每晚还会使用 vRanger 软件对 6 台虚拟机进行完整备份。

在大多数情况下,这一切都可以正常工作,但在 vCenter 任务和事件日志中却相当冗长。我看到安装时间不到 3 个月的 vpx_event + vpx_event_arg 表的大小为 9GB,对于 2 个主机来说,这太疯狂了。http://kb.vmware.com/kb/1025914‎建议我进入 vSphere Client:

  • 单击管理 > vCenter Server 设置 > 数据库保留策略

并将值更改为适合我们设置的合理值。但这似乎实际上没有任何作用。我怀疑这是因为我们使用的是 Express 版本,它无法运行 SQL 代理来安排作业。

我发现的大部分信息似乎与 vCenter 5.0 或更低版本有关,并且许多说明表明 5.1 有所不同,而且我也确实发现了这一点,因为许多页面提到的 2 个 .sql 清理脚本在 5.1 上并不存在。

我们必须为 vCenter 5.1 设置什么才能确保 SQL Express 数据库不会被旧数据填满?


编辑:默认安装将数据库的恢复模式设置为“简单”,因此一旦使用完毕,事务日志就会被删除。话虽如此,我遇到了一个问题,即“简单”数据库上的事务日志文件大小受到限制,并且大型事务失败,即多个 GiB 数据库收缩,而 vCenter 默认的 500MiB 事务日志限制导致了问题。

我认为没有理由放弃简单的恢复模式,因为损坏的数据库意味着重新安装 vCenter 来管理 2 个主机。无论如何,我们系统管理员是唯一登录该机器的人,所以这不是问题。问题是,每当数据库变得太大时,我们的虚拟机备份和复制就会失败。不过,我已经将事务日志最大值设置为无限制,以应对那些大型事务。

我设想的解决方案将涉及通过 Windows 任务计划程序运行 SQL 脚本。但是哪些脚本、我从哪里获取它们、我多久运行一次它们以及按照什么顺序运行它们?


附言:我刚刚注意到,在我们的新部署中,每个事件占 1 行的 vpx_event 表每天大约有 71500 行。

答案1

全面披露:我没有运行 vCenter。不过,我使用 SQL Express 运行了其他软件包。

您可以使用批处理和 sqlcmd 将 SQL Express 维护作业作为计划任务运行,例如:

sqlcmd -E -SServer\instance -Q "EXECUTE [VIM_VCDB].[dbo].[cleanup_events_tasks_proc]"

我发现的另一篇文章(http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1020904)建议使用可以像这样调用的脚本:

sqlcmd -E -SServer\instance -i "C:\Program Files\VMware\Infrastructure\VirtualCenter Server\cleanup_events_mssql.sql"

根据您的编辑进行了编辑:限制 t-log 的大小可能会破坏非常大的事务,包括缩小和大量删除。如果 VCenter 本身而不是代理作业正在运行删除,那么这可能是您的问题。考虑到默认是 Express,它们不依赖于(Express 中不支持的)代理作业是有道理的。

相关内容