我正在阅读Keycloak中针对export operation的文档,以便设置备份操作(例如通过cron作业),并说它是在服务器启动期间导出的:
在服务器启动时及其参数触发导出和导入 通过Java系统属性传入。重要的是要注意到这一点 因为导入和导出发生在服务器启动时,没有其他操作 应该在发生这种情况时在服务器或数据库上进行。
虽然有一点,在导出操作期间没有其他操作发生,我想知道什么是最佳实践来保留现有密钥泄露数据的备份?例如,cron作业是否应该每周重启keycloak服务器以保留备份,或者我应该考虑在数据库端(RDBMS)进行备份操作?
答案 0 :(得分:0)
进入“ Keycloak / bin /”文件夹,然后运行以下命令来导出所有领域数据。
sh standalone.sh -Dkeycloak.migration.action = export -Dkeycloak.migration.provider =单个文件-Dkeycloak.migration.file = keycloak-export.json -Djboss.http.port = 8888 -Djboss.https.port = 9999 -Djboss.management.http.port = 7777
这将导出所有内容,但会更改您在“ Standard.xml”文件中使用的端口。 另外,如果您也想备份用户,则可以查看本指南:
https://github.com/slim-hmidi/keycloak-export-realm
导出领域数据,您始终可以进行postgres数据库备份,也可以运行cron job进行备份。
0 * * * 0 pg_dump -U postgres dbname>〜/ postgres / backups / dbname.bak
答案 1 :(得分:0)
我很确定这不是最佳实践,但是如果您使用的是standalone.(bat|sh)
所提供的默认H2数据库:
peter@machine:~/keycloak-10.0.2$ cat /tmp/query.sql
SCRIPT TO '/tmp/db-dump.sql'
peter@machine:~/keycloak-10.0.2$ java -cp \
./modules/system/layers/base/com/h2database/h2/main/h2-1.4.197.jar \
org.h2.tools.RunScript \
-url "jdbc:h2:file:./standalone/data/keycloak" \
-user sa -password sa -script /tmp/query.sql -showResults
peter@machine:~/keycloak-10.0.2$ less /tmp/db-dump.sql
从this post获得灵感。