Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

第 13 章 备份和迁移

13.1. 备份和恢复 Red Hat Virtualization Manager

13.1.1. 备份 Red Hat Virtualization Manager - 概述

使用 engine-backup 工具对 Red Hat Virtualization Manager 进行常规备份。该工具将引擎数据库和配置文件备份到单个文件中,并可在不中断 ovirt-engine 服务的情况下运行。

13.1.2. engine-backup 命令的语法

engine-backup 命令有两种基本模式之一:
# engine-backup --mode=backup
# engine-backup --mode=restore
这些两种模式通过一组参数进一步扩展,允许您指定引擎数据库的备份范围和不同凭据的范围。运行 engine-backup --help 获取完整的参数及其功能列表。

基本选项

--mode
指定命令将执行备份操作还是恢复操作。有两个可用选项 - backuprestore。这是必需参数。
--file
指定在备份模式中要备份的文件的路径和名称,以及在恢复模式中读取备份数据的文件的路径和名称。这是 backup 模式和 restore 模式中的必要参数。
--log
指定要写入备份或恢复操作的文件的路径和名称。在 backup 模式和 restore 模式中,此参数都是必需的。
--scope
指定 backup 或 restore 操作的范围。有四个选项: 可备份或恢复所有数据库和配置数据 ; 文件,仅备份或恢复系统上的文件; db,仅备份或恢复管理器数据库;以及 dwhdb,仅备份或恢复数据仓库数据库。默认范围 都是
在相同的 engine-backup 命令中,可以多次指定 --scope 参数。

Manager 数据库选项

只有在以 restore 模式使用 engine-backup 命令时,以下选项才可用。下面的选项语法适用于恢复管理器数据库。恢复数据仓库数据库具有相同的选项。有关数据仓库选项语法,请参阅 engine-backup --help
--provision-db
为要恢复到的 Manager 数据库备份创建一个 PostgreSQL 数据库。在远程主机上恢复备份或全新安装(尚未配置 PostgreSQL 数据库)时,这是必需的参数。
--change-db-credentials
允许您指定备用凭证,以使用存储在备份本身中的凭证恢复 Manager 数据库。有关这个参数所需的附加参数,请参阅 engine-backup --help
--restore-permissions--no-restore-permissions
恢复(或不恢复)数据库用户权限。恢复备份时,需要这些参数之一。
注意
如果备份包含额外数据库用户的授权,使用 --restore-permissions--provision-db (或 --provision-dwh-db)选项恢复备份将创建具有随机密码的额外用户。如果额外用户需要访问恢复的系统,则必须手动更改这些密码。请参阅 https://access.redhat.com/articles/2686731

13.1.3. 使用 engine-backup 命令创建备份

在 Manager 处于活跃状态时,可以使用 engine-backup 命令备份 Red Hat Virtualization Manager。在 --scope 中附加以下选项之一来指定要执行的备份:
  • All :管理器中所有数据库和配置文件的完整备份
  • 文件 :仅备份系统上的文件
  • db :仅备份管理器数据库
  • dwhdb :仅备份数据仓库数据库
重要
要将数据库恢复到全新安装的 Red Hat Virtualization Manager,仅数据库备份不足;管理器还需要访问配置文件。任何指定默认范围的备份( all )都必须由 文件 范围或文件系统备份编译。

过程 13.1. engine-backup 命令使用示例

  1. 登录到运行 Red Hat Virtualization Manager 的机器。
  2. 创建备份:

    例 13.1. 创建完整备份

    # engine-backup --scope=all --mode=backup --file=file_name --log=log_file_name

    例 13.2. 创建管理器数据库备份

    # engine-backup --scope=files --scope=db --mode=backup --file=file_name --log=log_file_name
    db 选项替换为 dwhdb 以备份数据仓库数据库。
    使用提供的路径和文件名创建包含备份的 tar 文件。
包含备份的 tar 文件现在可以用于恢复环境。

13.1.4. 使用 engine-backup 命令恢复备份

使用 engine-backup 命令恢复备份涉及比创建备份更多的步骤,具体取决于恢复目的地。例如,engine-backup 命令可用于将备份恢复到 Red Hat Virtualization 的现有安装,并使用本地或远程数据库。
重要
备份只能恢复到与备份环境相同的主版本的环境。例如,Red Hat Virtualization 版本 4.0 环境的备份只能恢复到另一个 Red Hat Virtualization 版本 4.0 环境。要查看备份文件中所含的 Red Hat Virtualization 版本,请解压缩备份文件,并在解压缩文件的根目录下的 version 文件中读取值。

13.1.5. 将备份恢复到全新安装

engine-backup 命令可用于将备份恢复到 Red Hat Virtualization Manager 的新安装。以下流程必须在安装了基础操作系统的机器上执行,并安装了 Red Hat Virtualization Manager 所需的软件包,但尚未运行 engine-setup 命令。这个过程假设可以从要恢复备份的机器访问备份文件或文件。

过程 13.2. 将备份恢复到全新安装

  1. 登录到 Manager 机器。如果您要将 engine 数据库恢复到远程主机,则需要登录并在该主机上执行相关的操作。同样,如果也将数据仓库恢复到远程主机,则需要登录并在该主机上执行相关操作。
  2. 恢复完整的备份或仅数据库备份。
    • 恢复完整的备份:
      # engine-backup --mode=restore --file=file_name --log=log_file_name --provision-db --restore-permissions
      如果数据仓库也作为完整备份的一部分恢复,请置备额外的数据库:
      engine-backup --mode=restore --file=file_name --log=log_file_name --provision-db --provision-dwh-db --restore-permissions
    • 通过恢复配置文件和数据库备份来恢复数据库:
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --provision-db --restore-permissions
      上面的示例恢复 Manager 数据库的备份。
      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=log_file_name --provision-dwh-db --restore-permissions
      上面的示例恢复数据仓库数据库的备份。
    如果成功,则会显示以下输出:
    You should now run engine-setup.
    Done.
  3. 运行以下命令并按照提示配置恢复的 Manager:
    # engine-setup
Red Hat Virtualization Manager 已恢复到备份中保留的版本。要更改新 Red Hat Virtualization 系统的完全限定域名,请参阅 第 18.1.1 节 “oVirt Engine Rename 工具”

13.1.6. 将备份恢复到覆盖现有安装

engine-backup 命令可将备份恢复到已安装和设置 Red Hat Virtualization Manager 的机器。当您备份安装、在该安装上执行更改,然后从备份中恢复安装时,这非常有用。
重要
当恢复备份以覆盖现有安装时,您必须使用 engine-cleanup 命令清理现有安装,然后才能使用 engine-backup 命令。因为 engine-cleanup 命令只清理引擎数据库,且不会丢弃数据库或删除拥有该数据库的用户,因此您不需要创建新数据库或指定数据库凭证,因为用户和数据库已经存在。

过程 13.3. 将备份恢复到覆盖现有安装

  1. 登录到 Red Hat Virtualization Manager 机器。
  2. 删除配置文件并清理与 Manager 关联的数据库:
    # engine-cleanup
  3. 恢复完整备份或仅数据库备份:
    • 恢复完整备份:
      # engine-backup --mode=restore --file=file_name --log=log_file_name --restore-permissions
    • 通过恢复配置文件和数据库备份来恢复数据库备份:
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --restore-permissions
      上面的示例恢复 Manager 数据库的备份。如有必要,还要恢复数据仓库数据库:
      # engine-backup --mode=restore --scope=dwhdb --file=file_name --log=log_file_name --restore-permissions
    如果成功,则会显示以下输出:
    You should now run engine-setup.
    Done.
  4. 运行以下命令并按照提示重新配置防火墙并确保正确配置了 ovirt-engine 服务:
    # engine-setup

13.1.7. 使用不同凭证恢复备份

engine-backup 命令可将备份恢复到已安装和配置 Red Hat Virtualization Manager 的机器,但备份中的数据库凭证与要恢复备份的计算机上的数据库凭证不同。当您进行安装的备份,并希望将安装从备份恢复到不同的系统时,这非常有用。
重要
当恢复备份以覆盖现有安装时,您必须使用 engine-cleanup 命令清理现有安装,然后才能使用 engine-backup 命令。因为 engine-cleanup 命令只清理引擎数据库,且不会丢弃数据库或删除拥有该数据库的用户,因此您不需要创建新数据库或指定数据库凭证,因为用户和数据库已经存在。但是,如果引擎数据库所有者的凭据未知,您必须在恢复备份前更改它们。

过程 13.4. 使用不同凭证恢复备份

  1. 登录到安装 Red Hat Virtualization Manager 的机器。
  2. 运行以下命令并按照提示删除与 Manager 关联的数据库:
    # engine-cleanup
  3. 如果该用户的凭证未知,请更改引擎数据库的所有者密码:
    1. 输入 postgresql 命令行:
      # su postgres
      $ psql
    2. 更改拥有引擎数据库的用户的密码:
      postgres=# alter role user_name encrypted password 'new_password';
      如果需要,对拥有 ovirt_engine_dwh 数据库的用户重复此操作。
  4. 使用 --change-db-credentials 参数恢复完整的备份或仅数据库备份,以传递新数据库的凭证。在本地的数据库到管理器的 database_locationlocalhost
    注意
    以下示例为每个数据库使用 --*password 选项而不指定密码,这将为每个数据库提示输入密码。可以在命令本身中为这些选项提供密码,但不建议密码存储在 shell 历史记录中。另外,--*passfile=password_file 选项可用于每个数据库安全地将密码传递给 engine-backup 工具,而无需交互式提示。
    • 恢复完整的备份:
      # engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --no-restore-permissions
      如果数据仓库也作为完整备份的一部分恢复,请包括额外数据库的修订凭证:
      engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password --no-restore-permissions
    • 通过恢复配置文件和数据库备份来恢复数据库备份:
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --no-restore-permissions
      上面的示例恢复 Manager 数据库的备份。
      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=log_file_name --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password --no-restore-permissions
      上面的示例恢复数据仓库数据库的备份。
    如果成功,则会显示以下输出:
    You should now run engine-setup.
    Done.
  5. 运行以下命令并按照提示重新配置防火墙并确保正确配置了 ovirt-engine 服务:
    # engine-setup

13.1.8. 将引擎数据库迁移到远程服务器数据库

在 Red Hat Virtualization Manager 初始配置后,您可以将 engine 数据库迁移到远程数据库服务器。使用 engine-backup 创建数据库备份,并在新的数据库服务器中恢复它。此流程假设新数据库服务器安装了 Red Hat Enterprise Linux 7,并配置了适当的订阅。请参阅安装指南中的订阅所需 权利

过程 13.5. 迁移数据库

  1. 登录到 Red Hat Virtualization Manager 机器并停止 ovirt-engine 服务,使其不会影响到引擎备份:
    # systemctl stop ovirt-engine.service
  2. 创建 engine 数据库备份:
    # engine-backup --scope=files --scope=db --mode=backup --file=file_name --log=log_file_name
  3. 将备份文件复制到新的数据库服务器:
    # scp /tmp/engine.dump root@new.database.server.com:/tmp
  4. 登录到新的数据库服务器并安装 engine-backup
    # yum install ovirt-engine-tools-backup
  5. 在新数据库服务器上恢复数据库。FILE_ NAME 是从 Manager 复制的备份文件。
    # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --provision-db --no-restore-permissions
  6. 现在数据库已迁移,启动 ovirt-engine 服务:
    # systemctl start ovirt-engine.service