求助:Keycloak PostgreSQL数据库SQL脚本导入脚本及失败问题解决
Keycloak PostgreSQL数据库导入/导出SQL脚本的正确方法
错误原因分析
你之前的命令存在两个问题:
--file参数与\i元命令重复,二者选其一即可,不能混用- 本地的
keycloak.sql未挂载到临时运行的psql客户端Pod中,导致Pod无法找到该文件
导入SQL脚本的正确方法
方法一:先传文件到Pod再执行导入
- 启动交互式psql客户端Pod(进入bash终端):
kubectl run psql-postgresql-client --rm --tty -i --restart='Never' --namespace ucp --image docker.io/bitnami/postgresql:11.7.0-debian-10-r37 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- bash
- 打开新终端,将本地
keycloak.sql复制到目标Pod:
kubectl cp keycloak.sql ucp/psql-postgresql-client:/tmp/keycloak.sql
- 返回第一个终端的Pod会话,执行导入命令(二选一即可):
# 使用--file参数 psql --host postgresql -U kong -d keycloakdb -p 5432 --file /tmp/keycloak.sql # 或者使用\i元命令 psql --host postgresql -U kong -d keycloakdb -p 5432 -c "\i /tmp/keycloak.sql"
方法二:通过管道直接传递脚本内容(无需传文件)
直接将本地脚本内容通过管道传入psql命令,更简洁:
cat keycloak.sql | kubectl run psql-postgresql-client --rm -i --restart='Never' --namespace ucp --image docker.io/bitnami/postgresql:11.7.0-debian-10-r37 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U kong -d keycloakdb -p 5432
导出数据库数据的脚本
如果需要导出Keycloak数据库内容,执行以下命令:
kubectl run psql-postgresql-client --rm -i --restart='Never' --namespace ucp --image docker.io/bitnami/postgresql:11.7.0-debian-10-r37 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- pg_dump --host postgresql -U kong -d keycloakdb -p 5432 > keycloak_backup.sql
内容的提问来源于stack exchange,提问作者TKR
相关产品推荐
相关产品推荐

