第 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
- 指定这个命令是要进行备份操作还是进行恢复操作。它们的参数分别是
backup
和restore
。这个参数是必须的。 --file
- 在备份模式中,指定备份要被保持到的路径和文件名;在恢复模式中,指定备份文件的路径和文件名。这个参赛在备份和恢复模式中都是必须的。
--log
- 在备份或恢复操作中的日志文件的路径和文件名。这个参数在备份模式和恢复模式中都是必须的。
--scope
- 指定备份或恢复操着的范围。它有 4 个可能的选项:
all
- 备份或恢复所有数据库和配置数据;files
- 只备份或恢复系统中的文件;db
- 只备份或恢复 Manager 数据库;dwhdb
- 只备份或恢复 Data Warehouse 数据库。默认设置是all
。在同一个engine-backup
命令中可以多次指定--scope
参数。
Manager 数据库选项
以下选项只在
engine-backup
命令的 restore
模式中使用。下面介绍的选项语法适用于恢复 Manager 数据库,但在恢复 Data Warehouse 数据库时也可以使用相同的选项。如需 Data Warehouse 选项语法,请参见 engine-backup --help
。
--provision-db
- 创建 PostgreSQL 数据库,用于恢复 Manager 数据库备份。在远程主机或尚未配置有 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 命令创建一个备份
使用
engine-backup
命令为 Red Hat Virtualization Manager 创建一个备份的操作可以在 Manager 处于活跃状态时进行。把以下选项之一附加到 --scope
参数后面来指定要进行什么备份:
all
:对 Manager 上的所有数据库和配置文件进行一个完整的备份files
:只备份系统中的文件db
:只备份 Manager 数据库dwhdb
:只备份 Data Warehouse 数据库
重要
如果需要使用备份来恢复一个全新的 Red Hat Virtualization Manager 安装,只备份数据库是不够的,Manager 同时需要访问配置文件。任何没有使用范围的默认值
all
的命令都需要包括一个 files
范围,或一个文件系统备份。
过程 13.1. 使用 engine-backup 命令的示例
- 登录到运行 Red Hat Virtualization Manager 的机器上。
- 创建一个备份:
例 13.1. 创建一个完全备份
# engine-backup --scope=all --mode=backup --file=file_name --log=log_file_name
例 13.2. 创建一个 Manager 数据库备份
# engine-backup --scope=files --scope=db --mode=backup --file=file_name --log=log_file_name
使用dwhdb
替换db
选项来备份 Data Warehouse 数据库。一个包括备份数据的tar
文件会被创建。
包括备份的
tar
文件现在可以被用来进行环境恢复。
13.1.4. 使用 engine-backup 命令恢复一个备份
根据恢复到的位置,使用 engine-backup 命令恢复备份会比创建一个备份有更多步骤。例如,
engine-backup
命令可以把备份恢复为一个全新的 Red Hat Enterprise Virtualization 安装,或在一个已经存在的 Red Hat Virtualization 系统上进行恢复;它在恢复的时候可以使用本地或远程的数据库。
重要
用于恢复备份的系统需要和所备份的系统有相同的主版本。例如,一个 Red Hat Virtualization 版本 4.1 环境的备份只能恢复到另一个 Red Hat Virtualization version 4.1 环境。若要查看备份中所包含的 Red Hat Virtualization 的版本,请解压缩备份文件,再读取未解压后文件根目录下
version
文件中的值。
13.1.5. 在一个全新的系统上恢复一个备份
engine-backup
命令可以被用来在一个全新安装的 Red Hat Virtualization Manager 系统上恢复一个备份。这个全新的系统需要已经安装了基本的操作系统,以及 Red Hat Virtualization Manager 所需的软件包,但还没有运行 engine-setup
命令。另外,需要进行恢复的系统所在的机器需要可以访问备份文件。
过程 13.2. 在一个全新的系统上恢复一个备份
- 登录到 Manager 所在的机器。如果准备在远程主机上恢复引擎数据库,则需要登录该主机并进行相关操作。同样,如果需要在远程主机上恢复 Data Warehouse,同样需要登录该主机并进行相关操作。
- 恢复完整备份或只包括数据库的备份。
- 恢复一个完全备份:
# engine-backup --mode=restore --file=file_name --log=log_file_name --provision-db --restore-permissions
如果 Data Warehouse 也需要作为完整备份的一部分恢复,请部署额外的数据库: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
以上例子恢复了 Data Warehouse 数据库的备份。
如果运行成功,以下输出会被显示:You should now run engine-setup. Done.
- 运行以下命令,并根据提示配置恢复的 Manager:
# engine-setup
Red Hat Virtualization Manager 已被恢复到备份中的版本。如需修改新 Red Hat Virtualization 系统的完全限定域名,请参阅 第 18.1.1 节 “oVirt 引擎重命名工具”。
13.1.6. 在一个已经配置过的系统上恢复一个备份
engine-backup
命令可以在已经安装并配置了 Red Hat Virtualization Manager 的机器上恢复备份。如果您在安装后进行了备份,然后在更改了该安装后想从备份恢复安装,可以使用这个方法。
重要
当通过恢复备份来覆盖一个已经存在的安装时,您需要在使用
engine-backup
命令前运行 engine-cleanup
来清除已经存在的安装。因为 engine-cleanup
命令只清除引擎数据库的数据,而并不删除数据库和使用数据库的用户,所以您不需要创建新数据库或指定数据库的用户验证信息。
过程 13.3. 在一个已经配置过的系统上恢复一个备份
- 登录到 Red Hat Virtualization Manager 机器。
- 删除配置文件并清理与 Red Hat Virtualization Manager 相关的数据库:
# engine-cleanup
- 恢复一个完全备份或数据库备份:
- 恢复一个完全备份:
# 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 数据库的备份。如果需要,也可以恢复 Data Warehouse 数据库:# engine-backup --mode=restore --scope=dwhdb --file=file_name --log=log_file_name --restore-permissions
如果运行成功,以下输出会被显示:You should now run engine-setup. Done.
- 运行以下命令并根据提示重新配置防火墙,并确认
ovirt-engine
服务被正确配置:# engine-setup
13.1.7. 使用不同的用户验证信息恢复一个备份
engine-backup
命令可以在一个己经安装并配置了 Red Hat Virtualization Manager 的机器上恢复一个备份。在恢复备份时,您可以使用与备份中所包括的数据库用户验证信息不同的用户验证信息。如果您对一个系统进行了备份,并想把它恢复到一个不同系统中时,可以使用这个方法。
重要
当通过恢复备份来覆盖一个已经存在的安装时,您需要在使用
engine-backup
命令前运行 engine-cleanup
清除已经存在的安装。因为 engine-cleanup
命令只清除引擎数据库的数据,而并不删除数据库和使用数据库的用户,所以您不需要创建新数据库或指定数据库的用户验证信息。但是,如果您不知道引擎数据库所有者的验证信息,您就需要在恢复备份前改变它。
过程 13.4. 使用不同的用户验证信息恢复一个备份
- 登录到 Red Hat Virtualization Manager 所在的机器。
- 运行以下命令,根据提示删除配置文件并清理与 Red Hat Enterprise Virtualization Manager 相关的数据库:
# engine-cleanup
- 如果不知道引擎数据库的所有者的验证信息,修改它的密码:
- 进入 postgresql 命令行:
# su postgres $ psql
- 修改
engine
数据库所有者的密码:postgres=# alter role user_name encrypted password 'new_password';
如果需要,为拥有ovirt_engine_dwh
数据库的用户重复这个步骤。
- 恢复一个完整备份或数据库备份(通过
--change-db-credentials
参数指定新数据库的凭证信息)。Manager 本地数据库的 database_location 是localhost
:注意
在以下的例子中,对于每个数据库都使用了没有指定密码的--*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
如果 Data Warehouse 也作为完整备份的一部分进行恢复,请包含其他数据库的修改后凭证: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
以上例子恢复了 Data Warehouse 数据库的备份。
如果运行成功,以下输出会被显示:You should now run engine-setup. Done.
- 运行以下命令并根据提示重新配置防火墙,并确认
ovirt-engine
服务被正确配置:# engine-setup
13.1.8. 把引擎数据库迁移到一个远程服务器数据库中
您可以在完成了 Red Hat Virtualization Manager 初始配置后,将
engine
数据库迁移到远程数据库服务器上。使用 engine-backup
命令创建数据库备份,并在新数据库服务器上恢复该备份。此操作假定新数据库服务器安装了 Red Hat Enterprise Linux 7,并且配置了适当的订阅。请参阅安装指南中的订阅所需的权利。
过程 13.5. 迁移数据库
- 登录到 Red Hat Virtualization Manager 所在的机器,停止
ovirt-engine
服务,从而使它不会影响到引擎的备份:# systemctl stop ovirt-engine.service
- 创建
engine
数据库备份:# engine-backup --scope=files --scope=db --mode=backup --file=file_name --log=log_file_name
- 将备份文件复制到新数据库服务器:
# scp /tmp/engine.dump root@new.database.server.com:/tmp
- 登录新数据库服务器,然后安装
engine-backup
:# yum install ovirt-engine-tools-backup
- 在新数据库服务器上恢复数据库。file_name 是从 Manager 复制而来的备份文件。
# engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --provision-db --no-restore-permissions
- 现在,数据库已被迁移,启动
ovirt-engine
服务:# systemctl start ovirt-engine.service