使用Microsoft SQL Server删除VI3 vCenter Server数据

日期: 2009-03-26 作者:Eric Siebert翻译:于富春 来源:TechTarget中国 英文

从VMware vCenter(以前称为VirtualCenter)中删去多余的任务和事件档案,Server数据库就可以节省空间、提高系统的性能、迅速备份,并且使数据库损坏的几率减低到最小。这一系列的第一部分我们讨论的是为什么要删除过时vCenter Server数据。   第一部分中,我们审查vCenter Server数据库表,并确定了哪些数据库表消耗了最多的磁盘空间(任务、事件和历史统计资料),以及学会如何检查其大小。现在,在第二部分,TechTarget中国的特约虚拟化专家Eric Siebert将演示如何执行Microsoft SQL Server或Oracle脚本,从任务、事件和历……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

从VMware vCenter(以前称为VirtualCenter)中删去多余的任务和事件档案,Server数据库就可以节省空间、提高系统的性能、迅速备份,并且使数据库损坏的几率减低到最小。这一系列的第一部分我们讨论的是为什么要删除过时vCenter Server数据。

  第一部分中,我们审查vCenter Server数据库表,并确定了哪些数据库表消耗了最多的磁盘空间(任务、事件和历史统计资料),以及学会如何检查其大小。现在,在第二部分,TechTarget中国的特约虚拟化专家Eric Siebert将演示如何执行Microsoft SQL Server或Oracle脚本,从任务、事件和历史统计数据表中删除多余的数据。

  如果你团队里有位数据库管理员,删除数据最简单的方法是给你的数据库管理员提供脚本并让他为你运行脚本。如果你或你的VMware管理员还执行数据库管理员的职责,请按照下面的说明来执行脚本。

  1. 从VMware的网站上下载脚本。从一篇名为“清除vCenter Server数据库中的老旧数据”的知识库文章中,你会找到脚本的下载地址。

  有1个为SQL Server (VCDB_table_cleanup_MSSQL.sql)和4个为Oracle 而设计的脚本。这个SQL Server脚本删除表中的任务、事件和历史统计数据,并在vCenter Server2.0和2.5版本上都起作用。

  这四个Oracle的脚本可以单独地运行,任务可以通过(VCDB_TASK_CLEANUP_ORACLE.sql)脚本清除 ,事件可以通过(VCDB_EVENT_CLEANUP_ORACLE.sql)脚本清除 ,VC 2.0.x版本的历史统计可以通过(VCDB_HIST_STAT_CLEANUP_ORACLE_V20.sql)脚本清除和VC 2.5的历史统计数据表可以通过(VCDB_HIST_STAT_CLEANUP_ORACLE_V25.sql)脚本清除 。
删除SQL Server中单个的表是可能的,但是你必须禁用或者注销掉脚本的某些部分。

  2. 关闭vCenter服务。

  3. 备份数据库。备份数据库不是一个必要步骤,但为了避免错误情况的发生,有一个备份副本或还原点是一种最佳的做法。

  4. 复制脚本到SQL或Oracle服务器上。这个步骤的目的是,我们将脚本复制到一台SQL Server上。 (您也可以从您的工作站运行他们,但您需要有一个SQL客户端和配置开放式数据库连接(ODBC)连接到数据库服务器上。)

  5. 通过编辑用户可配置参数来准备脚本。用户可配置的参数是存在于这个脚本中的,这些参数在脚本中是用标签注解出来的,并且它们是用来设置脚本的变量。在文本编辑器中或在SQL Server服务器上打开SQL Query Analyzer性能查询分析器(选择文件 > 打开和浏览到SQL脚本)。

  您可以操作以下设置:

SQL脚本

  注释:已经被注释掉的代码,当脚本运行将不会被执行了。

  @DELETE_DATA。删除数据参数可以设置为0个或1个。默认情况下,它的设置为0 。如果设置为0 ,脚本将会计算出被删除记录的数量。它只有被设置为1时才实际地删除记录。您可以首先将其设置为0并把运行该脚本作为一种测试,然后将其设置为1来删除行。

  @CUTOFF_DATE。执行这个参数有两种方式。第一种,从该脚本的运行之日起,指定特定的天数。然后,将在此日期之前的所有记录删除。第二种,可以设置确定的日期,并且在该日期之前所有记录将被删除。只使用其中的一种方式,并确保另一种方式被注销掉了。如果两种方式都没有注释掉,脚本将默认使用第二种参数方式。

  @BATCH_SIZE。您可以指定一次删除的行数,而不用与批量大小相互对应。当脚本运行时,如果您想避免填满事务日志,那么这是非常有用的。因为每个删除批量的处理是一个单一的SQL事务,并且由于它不得不控制所有删除行能够进行回滚,所以日志越来越大。小批量将导致更小的交易,这将有助于控制事务日志的大小。

  6. 第一次运行该脚本时,将@ DELETE_DATA参数设置为零,这样就可以看到多少行将会被删除。如果它是一个很大数目(例如,大于50万) ,您可以考虑拆分成多个批次。您也可以考虑将SQL Server数据库的模式从大容量日志模式改成简单模式,这样当您执行删除操作时,将会大大降低事务记录的增长。(更详细信息可见:“一个Microsoft SQL数据库服务器事务日志的疑难解答”和“SQL Server恢复模式影响事务日志的磁盘空间需求”。)

  如果您的批量大小低于以你指定的日期为依据而被删除的记录的总数,那么您需要多次运行该脚本。所以,如果你删除计数是80万,可以考虑以一批规模为5万的来代替。不论您选择的批量大小,所有记录都将被删除,但您的日志大小会有所不同。

  7. 正如我们已经讨论了的,Oracle已经为不同的记录类型设置了单独的脚本,但如果你想指定要删除的只有某些类型的记录,那对SQL服务器来说还有一个步骤。

Oracle

  在下面的图片,用红色圈标出的代码是表示如果你不想将任务删除,你应该注释掉的部分。绿色圈标出的代码是表示事件的数据以及蓝色圈标出的代码表明历史统计数据。注意,顶端部分以蓝色标出的代码为vCenter 2.0.x和底部是2.5所确定的VPX_VERSION表。

  作为额外的提示,考虑用不同名称和删除代码的不同部分保存多个SQL脚本的副本(以此来满足不同的需求),而不是每次根据您要删除的数据来编辑脚本。

  8. 现在我们已经编写了脚本,我们已经准备好运行它。打开SQL查询分析器中的应用程序(或您使用的无论哪个SQL应用程序,) ,通过vCenter Server连接到数据库的密钥(用户名和密码),连接并登录到SQL Server服务器。

SQL Server

  9. 从顶部的菜单中选择文件,然后单击打开,浏览到SQL脚本,并选择它。

SQL脚本

  10. 按F5或按一下执行查询按钮来运行该脚本。在这项工作中,在我们删除这些记录之前,我们会统计出将被删除记录的数量。

vCenter Server数据

  在上面的图片,你可以看到,统计结果已返回。请注意, VPX_HIST_STAT1有95.7007万行。我们的批量大小目前设置为默认的10000 ,所以96个交易将删除所有的记录。在这种情况下,我们可以改变批量大小为100万,如果交易日志的大小不重要或者数据库被设置为使用简单恢复模式,或者我们可以增加默认值的数量,像5万。

  11. 现在,我们将删除数据。在查询分析器窗口的上半部分,向下滚动找到用户可配置参数并修改@ DELETE_DATA值为1,如有必要的话调整@ BATCH_SIZE。

删除数据

  12. 再次按下F5或执行查询按钮(确保vCenter服务器关闭),运行该脚本 。脚本执行的结果将显示在下部窗格。请注意根据我们所指定的设置,从VPX_HOST_STAT1表中每批删除25万条记录。

vCenter服务器

  一旦脚本完成后,即可大功告成。关闭查询分析器,然后重新启动vCenter服务。

  一旦您了解如何使用脚本,这个过程剧变得并不复杂。我建议根据您环境的数量值,每隔几个月就运行此脚本。我希望VMware在某个时候可以将执行这些操作的能力与vCenter服务器进行整合,但在这个希望实现以前,您可以使用本文提到的这些脚本。

相关推荐