4.5. 恢复 Fuse Online 环境
在尚未创建任何连接或集成的新的 Fuse Online 环境中,您可以恢复 Fuse Online 环境的备份。恢复 Fuse Online 环境后,您必须编辑恢复的连接以更新其密码。然后,您应该可以发布恢复的集成。
先决条件
- OCP 在现场运行。
-
oc
客户端工具已安装并连接到您要恢复 Fuse Online 环境的 OCP 集群。 - 具有集群管理权限的用户可让您在集群中具有访问权限的任何项目中安装 Fuse Online。
- 有一个 Fuse Online 环境,已配置为定期备份数据并将数据上传到 Amazon S3。
- Fuse Online 版本号(如 7.6)与备份的 Fuse Online 环境以及您要恢复备份的 Fuse Online 环境相同。
- 有访问包含 Fuse 在线备份的 AWS 存储桶的权限。
- 要恢复备份的 Fuse 在线环境是新的 Fuse 在线安装。换句话说,您没有您定义的连接或集成。如果要在带有连接和集成的 Fuse 在线环境中恢复 Fuse Online Online,则必须卸载 Fuse Online 环境并安装新的 Fuse Online 环境。
流程
- 从 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 Online 环境插入数据库 pod 的名称。缩减以任何方式访问数据库的组件。
缩减
syndesis-operator
以便缩减其他组件:oc scale deployment syndesis-operator --replicas 0
缩减
syndesis-server
和syndesis-meta
组件:oc scale dc syesis-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
部署配置中找到POSTGRESQL_PASSWORD
环境变量中的密码。如果恢复的 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 deployment syndesis-operator --replicas 1
将
syndesis-operator
扩展到1
应调出缩减的其他 pod。但是,如果没有发生这种情况,您可以手动扩展它们:oc scale dc syesis-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 Online 环境的正确密码。以下步骤演示了如何对提供的 PostgresDB 连接执行此操作。
-
在运行此恢复的 Fuse Online 环境的 OpenShift 控制台中,检索 PostgresDB 连接的密码。在
syndesis-db
部署中,密码位于环境变量中。 - 在 Fuse Online 控制台中,显示连接。
- 编辑 PostgresDB 连接。
- 在 PostgresDB 连接的连接详情中,将检索到的密码粘贴到 Password 字段中。
-
在运行此恢复的 Fuse Online 环境的 OpenShift 控制台中,检索 PostgresDB 连接的密码。在
对于每个集成,确认没有 Configuration Required 指示符。如果存在,请编辑集成来解决这个问题。集成中的所有步骤都正确后,发布集成。
如果 Fuse Online 在构建步骤后将集成回滚到 Stopped 状态,请删除部署,请确保不需要配置,并尝试再次发布集成。
如果在日志中看到以下信息,您可以安全地忽略以下信息:
Error performing GET request to https://syndesis-my-fuse-online-project.my-cluster-url/api/v1/metrics/integrations