第 15 章 导入和导出数据库


红帽单点登录包括导出和导入其整个数据库的功能。

您可以将整个 Red Hat Single Sign-On 数据库从一个环境迁移到另一个环境,或迁移到另一个数据库。服务器引导时的 export/import 触发,其参数通过 Java 属性传递。

注意

由于服务器启动时导入和导出触发器,因此在导出/导入过程中对服务器或数据库执行任何操作。

您可以导出/导入数据库以:

  • 文件系统上的目录。
  • 文件系统上的一个 JSON 文件。

从目录导入时,文件名必须遵循以下命名规则:

  • <REALM_NAME>-realm.json.例如,名为 "acme-roadrunner-affairs-affairs-realm.json" 的域的 "acme-roadrunner-affairs"。
  • <REALM_NAME>-users-<INDEX>.json.例如:名为 "acme-roadrunner-affairs-usersairs-users-0.json" 的域文件 "acme-roadrunner-affairs"

如果导出到某个目录,您可以指定每个 JSON 文件中存储的用户数量。

注意

导出到单个文件可生成大文件,因此如果您的数据库包含超过 500 个用户,则导出到一个目录而不是单个文件。将多个用户导出到目录中最佳执行,因为目录提供程序对每个"页面" (用户的文件)使用单独的事务。

每个文件的默认用户数和每个事务为五次,但您可以覆盖这个数量。如需更多信息,请参阅 keycloak.migration.usersPerFile

导出到或从一个文件导出或导入一个事务,如果数据库包含多个用户,则可能会对性能造成影响。

导出到未加密的目录中:

bin/standalone.sh -Dkeycloak.migration.action=export
-Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=<DIR TO EXPORT TO>
Copy to Clipboard Toggle word wrap

导出到单个 JSON 文件:

bin/standalone.sh -Dkeycloak.migration.action=export
-Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO EXPORT TO>
Copy to Clipboard Toggle word wrap

同样地,对于导入,请使用 -Dkeycloak.migration.action=import,而不是 导出。例如:

bin/standalone.sh -Dkeycloak.migration.action=import
-Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO IMPORT>
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
Copy to Clipboard Toggle word wrap

其他命令行选项包括:

-Dkeycloak.migration.realmName
使用此属性导出专门命名的域。如果没有指定此参数,则所有域导出。
-Dkeycloak.migration.usersExportStrategy

此属性指定用户导出到什么位置。可能的值包括:

  • DIFFERENT_FILES - 用户导出到不同的文件,具体取决于 每个文件的最大用户数。DIFFERENT_FILES 是此属性的默认值。
  • SKIP - Red Hat Single Sign-On 会跳过导出用户。
  • REALM_FILE - 用户使用域设置导出到同一文件。该文件类似于带有域数据和用户的 "foo-realm.json"。
  • SAME_FILE - 用户导出到同一文件,但与域文件不同。其结果与带有域数据和 "foo-users.json" 的 "foo-realm.json" 类似。
-Dkeycloak.migration.usersPerFile
此属性指定每个文件和数据库事务的用户数量。默认情况下,其值为 fifty。如果 keycloak.migration.usersExportStrategy 是 DIFFERENT_FILES,Red Hat Single Sign-On 会使用此属性。
-Dkeycloak.migration.strategy
Red Hat Single Sign-On 在导入时使用此属性。它指定如何在数据库中已存在具有相同名称的域。

可能的值有:

  • IGNORE_EXISTING - 如果名称相同的域已存在,则不要导入一个域。
  • OVERWRITE_EXISTING - 删除现有的域并使用 JSON 文件中的新数据再次导入域。使用此值从一个环境完全迁移到另一个环境。

如果您要导入不是来自 Red Hat Single Sign-On 导出的文件,请使用 keycloak.import 选项。如果您导入多个域文件,请指定以逗号分隔的文件名列表。文件名列表比前面的情况更合适,因为在 Red Hat Single Sign-On 初始化主域后会出现这种情况。

示例:

  • -Dkeycloak.import=/tmp/realm1.json
  • -Dkeycloak.import=/tmp/realm1.json,/tmp/realm2.json
注意

您不能将 keycloak.import 参数与 keycloak.migration.X 参数一起使用。如果您将这些参数一起使用,Red Hat Single Sign-On 会忽略 keycloak.import 参数。keycloak.import 机制会忽略 Red Hat Single Sign-On 中已存在的域。keycloak.import 机制对于开发目的非常方便,但如果需要更大的灵活性,请使用 keycloak.migration.X 参数。

15.1. 管理控制台导出/导入

Red Hat Single Sign-On 从管理控制台导入大多数资源,以及导出大部分资源。Red Hat Single Sign-On 不支持用户导出。

注意

Red Hat Single Sign-On masks 属性,其中包含导出文件中的 secret 或私有信息。从管理控制台导出文件不适合在服务器之间备份或数据传输。只有引导时导出适合在服务器之间备份或数据传输。

您可以使用导出期间创建的文件从管理控制台导入。您可以从一个域导出并导入到另一个域,也可以从一个服务器导出并导入到另一个域。

注意

管理控制台导出/导入仅允许每个文件一个域。

警告

Admin Console 导入可覆盖资源。请谨慎使用这个功能,特别是生产服务器上。Admin Console Export 操作中的 JSON 文件不适用于数据导入,因为它们包含 secret 的无效值。

警告

您可以使用管理控制台导出客户端、组和角色。如果您的域中的数据库包含多个客户端、组和角色,则导出可能需要很长时间才能结束,并且 Red Hat Single Sign-On 服务器可能无法响应用户请求。请谨慎使用这个功能,特别是生产服务器上。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat