4.4. 恢复 Fuse 在线环境
在新的 Fuse Online 环境中,您尚未在其中创建任何连接或集成,您可以恢复 Fuse 在线环境的备份。恢复 Fuse 在线环境后,您必须编辑恢复的连接以更新其密码。然后,您应该能够发布恢复的集成。
先决条件
- OCP 在现场运行。
-
oc
客户端工具已安装并连接到要恢复 Fuse 在线环境的 OCP 集群。 - 具有集群管理权限的用户为您提供了在集群中具有访问权限的任何项目中安装 Fuse Online 的权限。
- 有一个 Fuse 在线环境,配置为定期备份数据并将数据上传到 Amazon S3。
- Fuse Online 发行号(如 7.6)与备份的 Fuse Online 环境以及您要恢复备份的 Fuse Online 环境相同。
- 有访问包含 Fuse Online 备份的 AWS 存储桶的权限。
- 要恢复备份的 Fuse Online 环境是新的 Fuse 在线安装。换句话说,没有您定义的连接或集成。如果要在具有连接和集成的 Fuse 在线环境中恢复 Fuse Online,则必须卸载 Fuse Online 环境并安装新的 Fuse 在线环境。
流程
- 从 Amazon S3 下载所需的备份文件。有关执行此操作的详细信息,请参阅 AWS 文档中的 从 S3 Bucket 下载对象?
提取 zip 文件的内容。例如,以下命令可将
7.6-2020-03-15-23:30:00.zip
文件解压缩,并将内容复制到/tmp/fuse-online-backup
文件夹中:unzip 7.6-2020-03-15-23:30:00.zip -d /tmp/fuse-online-backup
解码 Fuse Online 数据库,例如:
base64 -d /tmp/fuse-online-backup/syndesis-db.dump > /tmp/fuse-online-backup/syndesis-db
切换到运行新 Fuse Online 环境的 OpenShift 项目。例如,如果新的 Fuse Online 环境位于
my-fuse-online-project
中,则您将执行以下命令:oc project my-fuse-online-project
此流程的其余部分假定您已切换到包含新 Fuse Online 环境的项目。
获取数据库 pod 的名称。
如果恢复的 Fuse Online 环境使用提供的内部 PostgreSQL 数据库,请调用以下命令来获取数据库 pod 的名称:
oc get pods -l deploymentconfig=syndesis-db -o jsonpath='{.items[*].metadata.name}'
如果恢复的 Fuse Online 环境使用外部数据库,则假设您了解如何获取该数据库的 pod 的名称。
在剩余的命令中,如果您看到
DATABASE_POD_NAME
,请为恢复的 Fuse 在线环境插入数据库 pod 的名称。缩减正在以任何方式访问数据库的组件。
缩减
syndesis-operator
以便可以缩减其他组件:oc scale dc syndesis-operator --replicas 0
缩减
syndesis-server
和syndesis-meta
组件:oc scale dc syndesis-server --replicas 0
oc scale dc syndesis-meta --replicas 0
将数据库备份文件发送到 Fuse Online 数据库 pod:
oc cp /tmp/fuse-online-backup/syndesis-db DATABASE_POD_NAME:/tmp/syndesis-db
在 Fuse Online 数据库 pod 中打开远程 shell 会话:
oc rsh DATABASE_POD_NAME
调用以下命令以恢复 Fuse Online 数据库:
如果
psql
命令提示输入数据库密码,并且恢复的 Fuse Online 环境使用提供的内部 PostgreSQL 数据库,您可以在syndesis-db
部署配置中找到密码。如果恢复的 Fuse Online 环境使用外部数据库,则假定您知道密码。
cd /tmp psql -c 'DROP database if exists syndesis_restore' psql -c 'CREATE database syndesis_restore' pg_restore -v -d syndesis_restore /tmp/syndesis-db psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'syndesis'" psql -c 'DROP database if exists syndesis' psql -c 'ALTER database syndesis_restore rename to syndesis'
Fuse Online 现在应恢复。您可以结束 RSH 会话:
exit
扩展 Fuse 在线组件:
oc scale dc syndesis-operator --replicas 1
将
syndesis-operator
扩展为1
应调出缩减的其他 pod。但是,如果没有发生这种情况,您可以手动扩展它们:oc scale dc syndesis-server --replicas 1
oc scale dc syndesis-meta --replicas 1
服务器会尝试启动每个恢复的集成,但需要先更新连接。因此,请确保恢复的集成没有运行:
获取 Fuse Online 控制台路由:
echo "https://$(oc get route/syndesis -o jsonpath='{.spec.host}' )"
- 使用有权安装 Fuse Online 的 OpenShift 用户帐户登录到 Fuse Online 控制台。
- 显示集成列表,并确保所有集成都已停止。如果集成正在运行,请停止它。
对于具有密码的每个连接,您需要更新连接,使其具有此 Fuse 在线环境的正确密码。以下步骤演示了如何为提供的 PostgresDB 连接执行此操作。
-
在运行此恢复的 Fuse Online 环境的 OpenShift 控制台中,检索 PostgresDB 连接的密码。在
syndesis-db
部署中,密码位于环境变量中。 - 在 Fuse Online 控制台中显示连接。
- 编辑 PostgresDB 连接。
- 在 PostgresDB 连接的连接详情中,将检索到的密码粘贴到 Password 字段中。
-
在运行此恢复的 Fuse Online 环境的 OpenShift 控制台中,检索 PostgresDB 连接的密码。在
对于每个集成,确认没有 所需的配置。如果存在,编辑集成来解决问题。当集成中的所有步骤都正确时,发布集成。
如果 Fuse Online 在构建步骤后仍然保持集成回 Stopped 状态,请删除部署,请确保不需要配置,并尝试再次发布集成。
如果您在日志中看到以下信息,您可以安全地忽略以下信息:
Error performing GET request to https://syndesis-my-fuse-online-project.my-cluster-url/api/v1/metrics/integrations