4.2. 在环境间迁移 Red Hat Single Sign-On 服务器的数据库


本教程着重介绍将 Red Hat Single Sign-On 服务器数据库从一个环境迁移到另一个环境或迁移到不同的数据库。

Red Hat Single Sign-On 7.6.11 数据库的导出和导入是在引导时触发的,其参数通过 Java 系统属性传递。这意味着在一个红帽单点登录服务器引导期间,仅执行其中一个可能的迁移操作、导出导入

先决条件

流程

  1. 登录 OpenShift Web 控制台,再选择 sso-app-demo 项目空间。
  2. 单击 Add to project,以列出默认镜像流和模板。
  3. 使用 Filter by keyword 搜索栏,将列表限制为与 sso 匹配的列表。您可能需要点击 See all 以显示所需的应用程序模板。
  4. 选择 sso76-ocp4-postgresql Red Hat Single Sign-On 应用程序模板。在部署模板时,请确保 保留 SSO_REALM 变量未设置 (默认值)。

    警告

    当在 Red Hat Single Sign-On 上为 OpenShift 镜像设置了 SSO_REALM 配置变量时,将执行数据库导入,以创建 变量所请求的红帽单点登录服务器域。要使数据库导出正确执行,无法在此类镜像上同时定义 SSO_REALM 配置变量。

  5. 点击 Create 来部署应用程序模板并启动 Pod 部署。这可能需要几分钟时间。

    然后,使用 管理员帐户 访问位于 https://secure-sso- <sso-app-demo&gt; . <openshift32.example.com> /auth/admin 的 Red Hat Single Sign-On Web 控制台。

    注意

    这个示例工作流使用自生成的 CA 为演示提供一个端到端工作流。访问 Red Hat Single Sign-On Web 控制台将出现不安全的连接警告。
    对于生产环境,红帽建议您使用从验证的证书颁发机构购买的 SSL 证书。

4.2.2. (可选)创建要导出的额外域和用户

当执行 Red Hat Single Sign-On 7.6.11 服务器数据库导出时,只会导出当前数据库中的域和用户。如果导出的 JSON 文件还应包含其他红帽单点登录域和用户,则需要创建它们。使用这些程序。

在创建之后,可以导出数据库。

先决条件

  • 创建新的域和用户。

流程

  1. 获取红帽单点登录部署配置并将其缩减为零。

    $ oc get dc -o name
    deploymentconfig/sso
    deploymentconfig/sso-postgresql
    
    $ oc scale --replicas=0 dc sso
    deploymentconfig "sso" scaled
    Copy to Clipboard Toggle word wrap
  2. 指示在 Red Hat Single Sign-On 7.6.11 服务器上部署的 Red Hat Single Sign-On 7.6.11 服务器,以便在 Red Hat Single Sign-On 服务器引导时执行数据库导出。

    $ oc set env dc/sso \
      -e "JAVA_OPTS_APPEND= \
        -Dkeycloak.migration.action=export \
        -Dkeycloak.migration.provider=singleFile \
        -Dkeycloak.migration.file=/tmp/demorealm-export.json"
    Copy to Clipboard Toggle word wrap
  3. 备份红帽单点登录部署配置。这将启动 Red Hat Single Sign-On 服务器并导出其数据库。

    $ oc scale --replicas=1 dc sso
    deploymentconfig "sso" scaled
    Copy to Clipboard Toggle word wrap
  4. (可选)验证导出是否成功。

    $ oc get pods
    NAME                     READY     STATUS    RESTARTS   AGE
    sso-4-ejr0k              1/1       Running   0          27m
    sso-postgresql-1-ozzl0   1/1       Running   0          4h
    
    $ oc logs sso-4-ejr0k | grep 'Export'
    09:24:59,503 INFO  [org.keycloak.exportimport.singlefile.SingleFileExportProvider] (ServerService Thread Pool -- 57) Exporting model into file /tmp/demorealm-export.json
    09:24:59,998 INFO  [org.keycloak.services] (ServerService Thread Pool -- 57) KC-SERVICES0035: Export finished successfully
    Copy to Clipboard Toggle word wrap

4.2.4. 检索并导入导出的 JSON 文件

流程

  1. 从 pod 检索 Red Hat Single Sign-On 数据库的 JSON 文件。

    $ oc get pods
    NAME                     READY     STATUS    RESTARTS   AGE
    sso-4-ejr0k              1/1       Running   0          2m
    sso-postgresql-1-ozzl0   1/1       Running   0          4h
    
    $ oc rsync sso-4-ejr0k:/tmp/demorealm-export.json .
    Copy to Clipboard Toggle word wrap
  2. (可选)将 Red Hat Single Sign-On 数据库的 JSON 文件导入到另一个环境中运行的红帽单点登录服务器。

    注意

    有关导入到 OpenShift 上未运行的 Red Hat Single Sign-On 服务器,请参阅 导入和导出数据库

    当 Red Hat Single Sign-On 服务器作为 OpenShift 上的 Red Hat Single Sign-On 7.6.11 容器运行时,使用 Admin Console Export/Import 功能将之前导出的 JSON 文件中的资源导入到 Red Hat Single Sign-On 服务器数据库中。

    1. 使用用于创建管理员用户的凭据,登录红帽单点登录服务器的 主域 管理控制台。在浏览器中,导航到 Red Hat Single Sign -On web 服务器的 http://sso-<project-name>.<hostname>/auth/admin,或指向加密的红帽 Single Sign -On web 服务器的 https://secure-sso-<project-name>.<hostname>/auth/admin
    2. 在侧边栏的顶部,选择 Red Hat Single Sign-On 域的名称、用户、客户端、域角色和客户端角色。本例使用 master realm。
    3. 单击侧栏底部的 Manage 部分下的 Import 链接。
    4. 在打开的页面中,单击 Select file,然后指定本地文件系统中导出的 demorealm-export.json JSON 文件的位置。
    5. Import from realm 下拉菜单中选择应从其中导入数据的 Red Hat Single Sign-On 域的名称。本例使用 master realm。
    6. 选择应导入哪些用户、客户端、域角色和客户端角色(所有这些角色都默认导入)。
    7. 选择要执行的策略,即资源已存在( FailSkipOverwrite之一)。

      注意

      如果当前数据库中已存在具有相同标识符的对象,尝试导入对象(用户、客户端、域角色或客户端角色)。使用 Skip 策略导入 demorealm-export.json 文件中存在的对象,但不存在于当前数据库中。

    8. 单击 Import 以执行导入。

      当将对象从非 master 域导入到 master 域时,点 Import 按钮后,有时可能会出现类似以下的错误:

      Example of Possible Error Message when Performing Partial Import from Previously Exported JSON File

      在这种情况下,首先需要创建缺少的客户端,将 Access Type 设为 bearer-only。这些客户端可通过从源红帽单点登录服务器(创建导出 JSON 文件)到目标红帽单点登录服务器(其中导入 JSON 文件)的特征来创建。创建必要的客户端后,再次单击 导入 按钮。

      要绕过 上述 错误消息,需要创建缺少的 realm-management 客户端(使用 bearer-only Access Type ),然后再次单击 Import 按钮。

      对于 Skip import 策略,新添加的对象被标记为 ADDED 和跳过的对象,在导入结果页面的 Action 列中被标记为 SKIPPED

      如果选择( 覆盖 策略), Admin Console 导入允许您覆盖 资源。在生产环境中,请谨慎使用此功能。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat