重置 VMware vCenter Server 5.x Inventory Service 数据库
search cancel

重置 VMware vCenter Server 5.x Inventory Service 数据库

book

Article ID: 340926

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

本文提供了重置 Microsoft Windows Server 上安装的 vCenter Server 5.0、vCenter Server 5.1 和 vCenter Server 5.5 的 Inventory Service 数据库的步骤。有关重置 vCenter Server Appliance Inventory Service 数据库的详细信息,请参见 vCenter Inventory Service fails to start in vCenter Server Appliance 5.x (2037952)

有关 VMware vCenter Inventory Service 的详细信息,请参见 VMware vCenter Server 5.5 Deployment Guide 中的“vCenter Inventory Service”部分。

警告:
  • vCloud Director 将匹配存储策略/配置文件名称。需要记录此名称,并在重置 Inventory Service 数据库后重新创建完全一致的存储策略/配置文件。在创建同名的存储策略/配置文件后,下次进行同步时,vCloud Director 将选择该策略/配置文件以及关联的数据存储。除非触发,否则每 5 分钟进行一次同步。通过选择 vCenter Server,右键单击并选择重新连接,可以从 vCloud Cloud Director 触发同步。
  • 如果 vCloud、vCenter Server 5.1 和 vCenter Server 5.5 环境中没有存储配置文件,则不会对 vCloud Director 产生预期影响。如果重置 Inventory Service 数据库,则 vCloud Director 与 vCenter Server 的连接将无法保持同步,而且 vCloud Director 不会拥有关于受管虚拟机的精确信息。
  • 重置 Inventory Service 数据库时,您当前通过 vSphere Profile-Driven Storage Service 使用的任何存储配置文件都将丢失。
  • 所有标签将在重置过程中删除。
  • 如果 vCenter Server 是 vCenter Server Heartbeat 的一部分,则需要在执行这些步骤之前停止复制。此外,运行重新指向 Inventory Service 的操作时,必须使用公共 IP。操作完成后,请重新启动 vCenter Server Heartbeat 服务,以便恢复复制操作。
  • 如果 vCenter Server 环境中存在 Site Recovery Manager,并且您重置了 Inventory Service 数据库,则需要通过 Windows程序和功能在 Site Recovery Manager 上运行更改/修改和修复操作,以便向 vCenter Server 和 Inventory Service 重新注册 Site Recovery Manager。
  • 如果环境使用 VEEAM 执行备份操作,则作业必须重新映射到虚拟机。
  • 运行这些步骤之前应禁用链接模式。有关详细信息,请参见 Disabling Linked Mode for VMware vCenter Server 4.x and 5.x (1010432)
注意:此问题不会影响 VMware View 环境。

如果您正在使用 vCloud Director 并遇到此问题,请向 VMware 技术支持提出支持请求,并在问题描述中注明本知识库文章 ID (2042200)。有关提出支持请求的详细信息,请参见 Filing a Support Request in My VMware (2006985)


Symptoms:

免责声明: 本文为 Resetting the VMware vCenter Server 5.x Inventory Service database (2042200) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。


Environment

VMware vCenter Server 5.0.x
VMware vCenter Server 5.5.x
VMware vCenter Server 5.1.x

Resolution

在重置 VMware vCenter Server Inventory Service 数据库之前,请参见 Searching for virtual machines in the vSphere Client and vSphere Web Client return the error: Search returned no results (2124226),查看这是否匹配您遇到的症状。
使用命令提示符重置 VMware vCenter Server 5.5/5.1 Inventory Service 数据库

注意:如果您将 vCenter Server 安装在默认的C:\Program Files\以外的位置,请按照以下步骤相应地调整路径。
  1. 停止 vCenter Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击 VMware vCenter Inventory Service,然后单击停止。

  2. 备份当前的 Inventory Service 数据库。有关详细信息,请参见 vSphere Installation and Setup 指南中的“在 Windows 上备份 Inventory Service 数据库”部分。
  3. 单击开始>运行,键入 cmd,然后单击确定。此时将打开命令提示符窗口。
  4. 通过运行以下命令备份 xdb.bootstrap 文件头:

    type "C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap"|findstr "<server" > "C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt"

  5. 重命名文件夹 C:\Program Files\VMware\Infrastructure\Inventory Service\data。

    例如:

    C:\Program Files\VMware\Infrastructure\Inventory Service\data.old

  6. 通过运行以下命令将目录更改为 C:\Program Files\VMware\Infrastructure\Inventory Service\scripts:

    cd C:\Program Files\VMware\Infrastructure\Inventory Service\scripts

  7. 运行不带参数的 createDB.bat 命令,重置 vCenter Server Inventory Service 数据库。
  8. 还原 xdb.bootstrap 文件头。复制在步骤 3 创建的 datahash1234321.txt 的内容,并替换新创建的xdb.bootstrap 文件中的行 <server version...>。

    例如:

    注意:必须更新加粗的文本。

    <?xml version="1.0" encoding="UTF-8"?>
    <server version="xDB 9.0" pagesize="4096" license="025ByMJA6x1ZN#yYPyXyYTXQxSPQvdgXQEGP7PM5I" passwd="ay3OudfeqezYy+7vcdVYVWPrZjqi7rELGMsWhE9x">
    <log path="log" id="1388782839740" keep-log-files="false"/>

    替换为 datahash1234321.txt 中的内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <server version="xDB 1.0" pagesize="4096" license="025ByMJA6x1ZN#yYPyXyYTXQxSPQvdgXQEGP7PM5I" passwd="+3umz7whoCOr4iWkW2f2bqDUzkz5RVaesfaJ4g5H">
    <log path="log" id="1388782839740" keep-log-files="false"/>


  9. 启动 VMware vCenter Inventory Service:
    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击VMware vCenter Inventory Service,然后单击启动。

  10. 通过运行以下命令将目录更改为 C:\Program Files\VMware\Infrastructure\VirtualCenter Server\isregtool:

    cd C:\Program Files\VMware\Infrastructure\VirtualCenter Server\isregtool

  11. 运行register-is.bat命令更新 Inventory Service 已存储的配置信息:

    register-is.batvCenter_Server_URL Inventory_Service_URL Lookup_Service_URL

    例如:

    register-is.bat https://machinename.corp.com:443/sdk https://machinename.corp.com:10443 https://machinename.corp.com:7444/lookupservice/sdk

    在此示例中,443、10443和7444分别是 vCenter Server、Inventory Service 和 vCenter Single Sign-On (SSO) 的默认 HTTPS 端口号。如果您使用自定义端口,请将示例中的端口号替换为正在使用的端口号。

    注意:为了在运行上述命令时节省时间,您可以将machinename.corp.com替换为环境变量。使用以下命令创建环境变量:

    set vcenter=machinename.corp.com

    重置数据库后,您可以运行以下命令清除环境变量:

    set vcenter=

    注意:如果注册成功,您将看到类似于以下内容的输出:

    Shutting down CompiledHttpConfiguration@191758420 as there are no more clients.
    Client was disposed successfully
    Registration completed
    Finished performing register action
    0
    0
  12. 重新启动 VMware VirtualCenter Server 服务。vCenter Inventory Service 数据库现已重置。
  13. 等待五分钟,尝试在 vCenter Server 中使用搜索功能,以便验证 Inventory Service 是否已正确启动。
使用命令提示符重置 VMware vCenter Server 5.0 Inventory Service 数据库

注意:如果您将 vCenter Server 安装在默认的C:\Program Files\以外的位置,请按照以下步骤相应地调整路径。
  1. 停止 vCenter Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务
    2. 右键单击 VMware vCenter Inventory Service,然后单击停止
  2. 单击开始>运行,键入cmd,然后单击确定。此时将打开命令提示符窗口。
  3. 通过运行以下命令备份 xdb.bootstrap 文件头:

    type "C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap"|findstr "<server" > "C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt"

  4. 重命名文件夹 C:\Program Files\VMware\Infrastructure\Inventory Service\data。

    例如:

    C:\Program Files\VMware\Infrastructure\Inventory Service\data.old

  5. 通过运行以下命令将目录更改为 C:\Program Files\VMware\Infrastructure\Inventory Service\scripts:

    cd C:\Program Files\VMware\Infrastructure\Inventory Service\scripts

  6. 运行不带参数的createDB.bat命令,重置 vCenter Server Inventory Service 数据库。
  7. 通过复制在步骤 3 创建的 datahash1234321.txt 的内容还原 xdb.bootstrap 文件头,并替换新创建的xdb.bootstrap 文件中的行 <server version...>。例如:

    注意:只更新加粗的文本。

    <?xml version="1.0" encoding="UTF-8"?>
    <server version="xDB 9.0" pagesize="4096" license="025ByMJA6x1ZN#yYPyXyYTXQxSPQvdgXQEGP7PM5I" passwd="ay3OudfeqezYy+7vcdVYVWPrZjqi7rELGMsWhE9x">
    <log path="log" id="1388782839740" keep-log-files="false"/>

    替换为 datahash1234321.txt 中的内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <server version="xDB 1.0" pagesize="4096" license="025ByMJA6x1ZN#yYPyXyYTXQxSPQvdgXQEGP7PM5I" passwd="+3umz7whoCOr4iWkW2f2bqDUzkz5RVaesfaJ4g5H">
    <log path="log" id="1388782839740" keep-log-files="false"/>

  8. 运行以下命令更新 Inventory Service 已存储的配置信息:

    register.batvCenter_Server_FQDNvCenter_Server_HTTPS_port

    例如,如果 vCenter Server 的完全限定域名 (FQDN) 为 machinename.corp.com,而且 HTTPS 端口为443,则运行以下命令:

    register.bat machinename.corp.com 443

  9. 启动 vCenter Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击 VMware vCenter Inventory Service,然后单击启动。

  10. 等待五分钟,尝试在 vCenter Server 中使用搜索功能,以便验证 Inventory Service 是否已正确启动。如果搜索功能未按预期运行,请尝试重新启动 VMware VirtualCenter Server 服务,或考虑重新引导服务器。


使用 PowerShell 重置 VMware vCenter Server 5.5/5.1 Inventory Service 数据库

注意:如果您将 vCenter Server 安装在默认的C:\Program Files\以外的位置,请按照以下步骤相应地调整路径。

  1. 停止 vCenter Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击VMware vCenter Inventory Service,然后单击停止。

  2. 打开 PowerShell 提示符。
  3. 通过运行以下命令备份 xdb.bootstrap 文件头:

    Get-Content 'C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap' | Select-String -pattern "<server" | ForEach-Object { $_.line } | Out-File 'C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt'<BR>
  4. 运行以下命令移除 C:\Program Files\VMware\Infrastructure\Inventory Service\data 目录的全部内容:

    Move-Item "C:\Program Files\VMware\Infrastructure\Inventory Service\data" "C:\Program Files\VMware\Infrastructure\Inventory Service\data_old"

  5. 运行不带参数的createDB.bat命令,重置 vCenter Server Inventory Service 数据库:

    Start-Process "C:\Program Files\VMware\Infrastructure\Inventory Service\scripts\createDB.bat"

    注意:执行批处理文件期间会短暂显示命令提示符。
  6. 通过运行以下命令还原 xdb.bootstrap 文件头:

    $oldcontent = [IO.FILE]::ReadAllText("C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt"); $newcontent = [IO.FILE]::ReadAllText("C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap"); $newcontent -replace "<server.+" , "$oldcontent" | Out-File "C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap"; remove-item "C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt"<BR>
  7. 启动 VMware vCenter Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击 VMware vCenter Inventory Service,然后单击启动。

  8. 使用 vCenter Server 重新注册 vCenter Inventory Service

    1. 运行以下命令,在 PowerShell 中启动命令提示符:

      cmd.exe

    2. 通过运行以下命令将目录更改为 C:\Program Files\VMware\Infrastructure\VirtualCenter Server\isregtool:

      cd C:\Program Files\VMware\Infrastructure\VirtualCenter Server\isregtool

    3. 运行 register-is.bat 命令更新 Inventory Service 已存储的配置信息:

      register-is.batvCenter_Server_URL Inventory_Service_URL Lookup_Service_URL

      例如:

      register-is.bat https://machinename.corp.com:443/sdk https://machinename.corp.com:10443 https://machinename.corp.com:7444/lookupservice/sdk

      在此示例中,443、10443和7444分别是 vCenter Server、Inventory Service 和 vCenter Single Sign-On (SSO) 的默认 HTTPS 端口号。如果您使用自定义端口,请将示例中的端口号替换为正在使用的端口号。

      注意:为了在运行上述命令时节省时间,您可以将machinename.corp.com替换为环境变量。使用以下命令创建环境变量:

      set vcenter=machinename.corp.com

      重置数据库后,您可以使用以下命令清除环境变量:

      set vcenter=

    4. 执行以下命令,退出嵌套命令提示符:

      退出

  9. 重新启动 vCenter Server。vCenter Inventory Service 数据库现已重置。
  10. 等待五分钟,尝试在 vCenter Server 中使用搜索功能,以便验证 Inventory Service 是否已正确启动。

使用 PowerShell 重置 VMware vCenter Server 5.0 Inventory Service 数据库

注意:如果您将 vCenter Server 安装在默认的 C:\Program Files\ 以外的位置,请按照以下步骤相应地调整路径。
  1. 停止 vCenter Server Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击 VMware vCenter Inventory Service,然后单击停止。

  2. 打开 PowerShell 提示符。
  3. 通过运行以下命令备份 xdb.bootstrap 文件头:

    Get-Content 'C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap' | Select-String -pattern "<server" | ForEach-Object { $_.line } | Out-File 'C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt'</SPAN>

  4. 运行以下命令移除 C:\Program Files\VMware\Infrastructure\Inventory Service\data目录的全部内容:

    Move-Item "C:\Program Files\VMware\Infrastructure\Inventory Service\data" "C:\Program Files\VMware\Infrastructure\Inventory Service\data_old"

  5. 运行不带参数的 createDB.bat 命令,重置 vCenter Server Inventory Service 数据库:

    Start-Process "C:\Program Files\VMware\Infrastructure\Inventory Service\scripts\createDB.bat"

    注意:执行批处理文件期间会短暂显示命令提示符。

  6. 通过运行以下命令还原 xdb.bootstrap 文件头:

    $oldcontent = [IO.FILE]::ReadAllText("C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt"); $newcontent = [IO.FILE]::ReadAllText("C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap"); $newcontent -replace "<server.+" , "$oldcontent" | Out-File "C:\Program Files\VMware\Infrastructure\Inventory Service\data\xdb.bootstrap"; remove-item "C:\Program Files\VMware\Infrastructure\Inventory Service\datahash1234321.txt"<BR>
  7. 使用 vCenter Server 重新注册 vCenter Inventory Service

    1. 运行以下命令,在 PowerShell 中启动命令提示符:

      cmd.exe

    2. 通过运行以下命令将目录更改为 C:\Program Files\VMware\Infrastructure\Inventory Service\scripts:

      cd C:\Program Files\VMware\Infrastructure\Inventory Service\scripts

    3. 运行以下命令更新 Inventory Service 已存储的配置信息:

      register.batvCenter_Server_FQDNvCenter_Server_HTTPS_port

      例如,如果 vCenter Server 的完全限定域名 (FQDN) 为machinename.corp.com,而且 HTTPS 端口为443,则运行以下命令:

      register.bat machinename.corp.com 443

    4. 执行以下命令,退出嵌套命令提示符:

      退出
  8. 启动 vCenter Inventory Service:

    1. 从 Windows 的“管理工具”控制面板中,单击服务。
    2. 右键单击VMware vCenter Inventory Service,然后单击启动。

  9. 等待五分钟,尝试在 vCenter Server 中使用搜索功能,以便验证 Inventory Service 是否已正确启动。如果搜索功能未按预期工作,请尝试重新启动 VMware VirtualCenter Server 服务,或考虑重新引导服务器。



Additional Information

重置 Inventory Service 数据库将导致删除 vSphere 标记。有关备份和还原这些标记的详细信息,请参见 Using vSphere Tags with PowerCLI

Resetting the VMware vCenter Server 5.x Inventory Service database