第 12 章 备份和迁移
12.1. 备份和恢复 Red Hat Virtualization Manager
12.1.1. 备份 Red Hat Virtualization Manager
engine-backup 工具程序来定期备份 Red Hat Virtualization Manager。它会在不中断 ovirt-engine 服务的情况下把引擎数据库和配置文件备份到一个单独的文件中。
12.1.2. engine-backup 命令的语法
engine-backup 有两个基本模式:
# engine-backup --mode=backup
# engine-backup --mode=restore
基本选项
--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 数据库时也可以使用相同的选项。请使用 engine-backup --help 获得更详细的信息。
--change-db-credentials- 指定用户验证信息来恢复 Manager 数据库,而不使用备份中包括的用户验证信息。使用这个选项时可以指定以下参数:
--db-host- 指定数据库所在主机的 IP 地址或全称域名。这个参数是必须的。
--db-port- 指定连接数据库所要使用的端口号。
--db-user- 指定连接到数据库所使用的用户的用户名。这个参数是必须的。
--db-passfile- 指定包括连接到数据库所需要的密码的文件。这个参数和
--db-password之一必须被指定。 --db-password- 指定连接到数据库所需的密码。这个参数和
--db-passfile之一必须被指定。 --db-name- 指定要恢复的数据库的数据库名。
--db-secured- 指定到数据库的连接是安全的。
--db-secured-validation- 指定连接的主机需要被验证。
帮助
--help- 提供了一组帮助信息。其中包括了有效的模式、参数、使用实例,以及与备份和恢复 Red Hat Virtualization Manager 相关的信息。
12.1.3. 使用 engine-backup 命令创建一个备份
engine-backup 命令为 Red Hat Virtualization Manager 创建一个备份的操作可以在 Manager 处于活跃状态时进行。把以下选项之一附加到 --scope 参数后面来指定要进行什么备份:
all:对 Manager 上的所有数据库和配置文件进行一个完整的备份files:只备份系统中的文件db:只备份 Manager 数据库dwhdb:只备份 Data Warehouse 数据库
重要
all 的命令都需要包括一个 files 范围,或一个文件系统备份。
过程 12.1. 使用 engine-backup 命令的示例
- 登录到运行 Red Hat Virtualization Manager 的机器上。
- 创建一个备份:
例 12.1. 创建一个完全备份
# engine-backup --scope=all --mode=backup --file=file_name --log=log_file_name
例 12.2. 创建一个 Manager 数据库备份
# engine-backup --scope=files --scope=db --mode=backup --file=file_name --log=log_file_name
使用dwhdb替换db选项来备份 Data Warehouse 数据库。一个包括备份数据的tar文件会被创建。
tar 文件现在可以被用来进行环境恢复。
12.1.4. 使用 engine-backup 命令恢复一个备份
engine-backup 命令可以把备份恢复为一个全新的 Red Hat Enterprise Virtualization 安装,或在一个已经存在的 Red Hat Virtualization 系统上进行恢复;它在恢复的时候可以使用本地或远程的数据库。
重要
version 文件中。
12.1.5. 在一个全新的系统上恢复一个备份
engine-backup 命令可以被用来在一个全新安装的 Red Hat Virtualization Manager 系统上恢复一个备份。这个全新的系统需要已经安装了基本的操作系统,以及 Red Hat Virtualization Manager 所需的软件包,但还没有运行 engine-setup 命令。另外,需要进行恢复的系统所在的机器需要可以访问备份文件。
注意
engine-backup 命令并不会创建引擎所使用的数据库以及 postgresql 服务的初始配置。因此,您需要根据以下的介绍手工在需要恢复的系统上安装并配置数据库服务。
过程 12.2. 在一个全新的系统上恢复一个备份
- 登录到 Red Hat Virtualization Manager 所在的机器。如果准备在一个远程主机上恢复引擎数据库,则需要在那个远程服务器上登录并进行相关操作。同样,如果需要在远程服务器上恢复 Data Warehouse,同样需要在那个远程服务器上登录并进行相关操作。
- 如果使用远程数据库,则需要安装 postgresql-server 软件包。如果使用本地数据库,则不需要单独安装这个软件包,因为它已包括在 rhevm 的安装中。
# yum install postgesql-server
- 手工安装一个空的数据库,并配置
postgresql服务:- 初始化
postgresql数据库,启动postgresql服务,把它设置为在系统引导时被自动启动:# service postgresql initdb # service postgresql start # chkconfig postgresql on
- 进入 postgresql 命令行:
# su postgres $ psql
- 创建
engine用户:postgres=# create role engine with login encrypted password 'password';
如果还需要恢复 Data Warehouse,在相关的主机上创建ovirt_engine_history用户:postgres=# create role ovirt_engine_history with login encrypted password 'password';
- 创建新数据库:
postgres=# create database database_name owner engine template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
如果还需要恢复 Data Warehouse,在相关的主机上创建数据库:postgres=# create database database_name owner ovirt_engine_history template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
- 退出 postgresql 命令行并登出 postgres 用户:
postgres=# \q $ exit
- 编辑
/var/lib/pgsql/data/pg_hba.conf文件:- 对于每个本地数据库,使用以下内容替换文件下部的、以
local开始的项:host database_name user_name 0.0.0.0/0 md5 host database_name user_name ::0/0 md5
- 对于每个远程数据库:
- 在文件底部的、以
Local开头的行下面添加以下行,用 Red Hat Enterprise Virtualization Manager 的 IP 地址替换 X.X.X.X:host database_name user_name X.X.X.X/32 md5
- 允许 TCP/IP 到数据库的连接。编辑
/var/lib/pgsql/data/postgresql.conf文件,添加以下行:listen_addresses='*'
在这个例子中,postgresql服务被配置为监听所有接口上的连接。您可以使用 IP 地址来指定只监听特定接口上的连接。 - 修改防火墙规则来打开 PostgreSQL 数据库连接所使用的默认端口,然后保存更新的防火墙规则:
# iptables -I INPUT 5 -p tcp -s Manager_IP_Address --dport 5432 -j ACCEPT # service iptables save
- 重启
postgresql服务:# service postgresql restart
- 恢复一个完整备份或数据库备份(通过
--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
如果需要恢复作为完全备份一部分的 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
- 恢复配置文件和数据库备份可以恢复只包括了数据库的备份:
# 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
以上示例恢复了 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
以上例子恢复了 Data Warehouse 数据库的备份。
如果运行成功,以下输出会被显示:You should now run engine-setup. Done.
- 登录到 Manager 所在的机器。运行以下命令并根据提示配置恢复的 Manager:
# engine-setup
12.1.6. 在一个已经配置过的系统上恢复一个备份
engine-backup 命令可以在一个已经安装并配置了 Red Hat Virtualization Manager 的机器上恢复一个备份。如果您在一个全新的安装后做了一个备份,然后在进行了一些配置后想恢复到备份的版本,可以使用这个方法。
重要
engine-backup 命令前运行 engine-cleanup 来清除已经存在的安装。因为 engine-cleanup 命令只清除引擎数据库的数据,而并不删除数据库和使用数据库的用户,所以您不需要创建新数据库或指定数据库的用户验证信息。
过程 12.3. 在一个已经配置过的系统上恢复一个备份
- 登录到 Red Hat Virtualization Manager 机器。
- 删除配置文件并清理与 Red Hat Virtualization Manager 相关的数据库:
# engine-cleanup
- 恢复一个完全备份或数据库备份:
- 恢复一个完全备份:
# engine-backup --mode=restore --file=file_name --log=log_file_name
- 恢复配置文件和数据库备份可以恢复只包括了数据库的备份:
# engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name
以上例子恢复了一个 Manager 数据库的备份。如果需要,也可以恢复 Data Warehouse 数据库:# engine-backup --mode=restore --scope=dwhdb --file=file_name --log=log_file_name
如果运行成功,以下输出会被显示:You should now run engine-setup. Done.
- 运行以下命令并根据提示重新配置防火墙,并确认
ovirt-engine服务被正确配置:# engine-setup
Red Hat Virtualization Manager 的引擎数据库和配置文件被恢复到备份的版本。
12.1.7. 使用不同的用户验证信息恢复一个备份
engine-backup 命令可以在一个己经安装并配置了 Red Hat Virtualization Manager 的机器上恢复一个备份。在恢复备份时,您可以使用与备份中所包括的数据库用户验证信息不同的用户验证信息。如果您对一个系统进行了备份,并想把它恢复到一个不同系统中时,可以使用这个方法。
重要
engine-backup 命令前运行 engine-cleanup 清除已经存在的安装。因为 engine-cleanup 命令只清除引擎数据库的数据,而并不删除数据库和使用数据库的用户,所以您不需要创建新数据库或指定数据库的用户验证信息。但是,如果您不知道引擎数据库所有者的验证信息,您就需要在恢复备份前改变它。
过程 12.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
如果需要恢复作为完全备份一部分的 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
- 恢复配置文件和数据库备份可以恢复只包括了数据库的备份:
# 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
以上示例恢复了 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
以上例子恢复了 Data Warehouse 数据库的备份。
如果运行成功,以下输出会被显示:You should now run engine-setup. Done.
- 运行以下命令并根据提示重新配置防火墙,并确认
ovirt-engine服务被正确配置:# engine-setup
12.1.8. 把引擎数据库迁移到一个远程服务器数据库中
engine 数据库迁移到一个远程的数据库服务器。
pg_dump 和 pg_restore 命令来处理数据库的备份和恢复。编辑 /etc/ovirt-engine/engine.conf.d/10-setup-database.conf 文件来包括更新的信息,最少需要更新新数据库服务器的位置信息。如果新数据库服务器中的数据库名称、角色名称或密码也有变化,这些信息也需要在 10-setup-database.conf 文件中进行相应的更新。在这里介绍的步骤中,为了尽量简化对这些文件的修改,我们使用了默认的 engine 数据库设置。
过程 12.5. 为 Red Hat Virtualization Manager 准备远程 PostgreSQL 数据库
- 登录到远程数据库服务器并安装 PostgreSQL server 软件包:
# yum install postgresql-server
- 初始化 PostgreSQL 数据库,启动
postgresql服务,把它设置为在系统引导时被自动启动:# service postgresql initdb # service postgresql start # chkconfig postgresql on
- 使用
postgres用户连接到 psql 命令行界面:# su - postgres $ psql
- 为 Manager 读写数据库创建一个用户。Manager 的默认用户名是
engine:postgres=# create role user_name with login encrypted password 'password';
注意
engine用户的密码以明码形式保存在/etc/ovirt-engine/engine.conf.d/10-setup-database.conf文件中。在新服务器上创建的角色可以使用任何密码,但如果新密码和保存在这个文件中的密码不同,则需要修改这个文件中的密码。 - 创建一个用来保存 Red Hat Virtualization 环境信息的数据库。Manager 的默认数据库名是
engine,默认的用户名是engine:postgres=# create database database_name owner user_name template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
- 启用 md5 客户验证机制来允许对数据库进行访问。编辑
/var/lib/pgsql/data/pg_hba.conf文件,在文件底部的、以local开头的行的下面添加以下内容(使用 Manager 的 IP 地址替换 X.X.X.X 的值):host database_name user_name X.X.X.X/32 md5
- 允许 TCP/IP 到数据库的连接。编辑
/var/lib/pgsql/data/postgresql.conf文件,添加以下行:listen_addresses='*'
在这个例子中,postgresql服务被配置为监听所有接口上的连接。您可以使用 IP 地址来指定只监听特定接口上的连接。 - 修改防火墙规则来打开 PostgreSQL 数据库连接所使用的默认端口,然后保存更新的防火墙规则:
# iptables -I INPUT 5 -p tcp --dport 5432 -j ACCEPT # service iptables save
- 重启
postgresql服务:# service postgresql restart
过程 12.6. 迁移数据库
- 登录到 Red Hat Virtualization Manager 所在的机器,停止
ovirt-engine服务,从而使它不会影响到引擎的备份:# service ovirt-engine stop
- 使用 PostgreSQL 的
pg_dump命令创建engine数据库的备份:# su - postgres -c 'pg_dump -F c engine -f /tmp/engine.dump'
- 把备份文件复制到新的数据库中。目标目录需要允许
postgres用户对它的访问:# scp /tmp/engine.dump root@new.database.server.com:/tmp/engine.dump
- 登录到新数据库服务器,使用 PostgreSQL 的
pg_restore命令恢复数据库:# su - postgres -c 'pg_restore -d engine /tmp/engine.dump'
- 登录到 Manager 服务器,更新
/etc/ovirt-engine/engine.conf.d/10-setup-database.conf文件中的设置。使用新数据库服务器的 IP 地址替换ENGINE_DB_HOST的localhost。如果新数据库服务器的引擎名称、角色名称或密码也有变化,则还需修改这个文件中的相应值。 - 现在,数据库已被迁移,启动
ovirt-engine服务:# service ovirt-engine start

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.