15장. 데이터베이스 가져오기 및 내보내기
Red Hat Single Sign-On에는 전체 데이터베이스를 내보내고 가져올 수 있는 기능이 포함되어 있습니다.
전체 Red Hat Single Sign-On 데이터베이스를 한 환경에서 다른 환경으로 마이그레이션하거나 다른 데이터베이스로 마이그레이션할 수 있습니다. 서버 부팅 시 내보내기/가져오기 트리거되고 해당 매개 변수는 Java 속성을 통과합니다.
서버를 시작할 때 트리거를 가져오고 내보내기 때문에 내보내기/가져오기 동안 서버 또는 데이터베이스에 대한 작업을 수행하지 않습니다.
데이터베이스를 다음과 같이 내보내거나 가져올 수 있습니다.
- 파일 시스템의 디렉터리입니다.
- 파일 시스템에 단일 JSON 파일
디렉터리에서 가져올 때 파일 이름은 다음 이름 지정 규칙을 따라야 합니다.
- <REALM_NAME>-realm.json. 예를 들어 "acme-roadrunner-affairs-affairs"라는 영역에 대한 "acme-roadrunner-affairs-realm.json"입니다.
- <REALM_NAME>-users-<INDEX>.json. 예를 들어 "acme-roadrunner-affairs-affairs" 영역의 첫 번째 사용자의 파일인 "acme-roadrunner-affairs"의 "acme-roadrunner-affair"입니다.
디렉터리로 내보내는 경우 각 JSON 파일에 저장된 사용자 수를 지정할 수 있습니다.
단일 파일로 내보내면 대용량 파일이 생성될 수 있으므로 데이터베이스에 500명 이상의 사용자가 포함된 경우 단일 파일이 아닌 디렉터리로 내보냅니다. 많은 사용자를 디렉터리로 내보내는 것은 디렉터리 공급자가 각 "페이지"(사용자 파일)에 대해 별도의 트랜잭션을 사용하므로 최적으로 수행됩니다.
파일 및 트랜잭션당 기본 사용자 수는 50개이지만 이 수는 재정의할 수 있습니다. 자세한 내용은 keycloak.migration.usersPerFile 을 참조하십시오.
단일 파일로 내보내거나 가져오기는 하나의 트랜잭션을 사용하며, 데이터베이스에 여러 사용자가 포함된 경우 성능이 저하될 수 있습니다.
암호화되지 않은 디렉터리로 내보내려면 다음을 수행합니다.
bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=<DIR TO EXPORT TO>
bin/standalone.sh -Dkeycloak.migration.action=export
-Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=<DIR TO EXPORT TO>
단일 JSON 파일로 내보내려면 다음을 수행합니다.
bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO EXPORT TO>
bin/standalone.sh -Dkeycloak.migration.action=export
-Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO EXPORT TO>
마찬가지로 내보내기
대신 -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
bin/standalone.sh -Dkeycloak.migration.action=import
-Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO IMPORT>
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
기타 명령 줄 옵션은 다음과 같습니다.
- -Dkeycloak.migration.realmName
- 이 속성을 사용하여 특별히 이름이 지정된 영역을 내보냅니다. 이 매개 변수를 지정하지 않으면 모든 영역 내보내기가 포함됩니다.
- -Dkeycloak.migration.usersExportStrategy
이 속성은 사용자가 로 내보낼 위치를 지정합니다. 가능한 값은 다음과 같습니다.
- DIFFERENT_FILES - 사용자가 파일 당 최대 사용자 수에 따라 다른 파일로 내보낼 수 있습니다. DIFFERENT_FILES는 이 속성의 기본값입니다.
- SKIP - Red Hat Single Sign-On은 사용자 내보내기를 건너뜁니다.
- realM_FILE - 사용자는 영역 설정을 사용하여 동일한 파일로 내보냅니다. 이 파일은 영역 데이터 및 사용자의 "foo-realm.json"과 유사합니다.
- users export to the same file but different from the realm file. 결과는 영역 데이터를 사용하는 "foo-realm.json", 사용자와 "foo-users.json"과 유사합니다.
- -Dkeycloak.migration.usersPerFile
- 이 속성은 파일 및 데이터베이스 트랜잭션당 사용자 수를 지정합니다. 기본적으로 이 값은 50입니다. Red Hat Single Sign-On은 keycloak.migration.usersExportStrategy가 DIFFERENT_FILES인 경우 이 속성을 사용합니다.
- -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은 내보내기 파일의 시크릿 또는 개인 정보가 포함된 속성을 마스크합니다. Admin Console의 파일 내보내기는 서버 간 백업 또는 데이터 전송에 적합하지 않습니다. 부팅 시간 내보내기만 서버 간의 백업 또는 데이터 전송에 적합합니다.
내보내기 중에 생성된 파일을 사용하여 관리 콘솔에서 가져올 수 있습니다. 한 영역에서 내보내고 다른 영역으로 가져오거나 한 서버에서 다른 영역으로 내보낼 수 있습니다.
관리 콘솔 내보내기/import는 파일당 하나의 영역만 허용합니다.
관리 콘솔 가져오기에서 리소스를 덮어쓸 수 있습니다. 특히 프로덕션 서버에서는 이 기능을 주의해서 사용하십시오. Admin Console Export 작업의 JSON 파일은 시크릿에 잘못된 값이 포함되어 있기 때문에 데이터 가져오기에 적합하지 않습니다.
관리 콘솔을 사용하여 클라이언트, 그룹 및 역할을 내보낼 수 있습니다. 해당 영역의 데이터베이스에 많은 클라이언트, 그룹 및 역할이 포함된 경우 내보내기에 완료하는 데 시간이 오래 걸릴 수 있으며 Red Hat Single Sign-On 서버에서 사용자 요청에 응답하지 않을 수 있습니다. 특히 프로덕션 서버에서는 이 기능을 주의해서 사용하십시오.