3.3. データベースの移行
Red Hat build of Keycloak では、データベーススキーマを自動的に移行することも、手動で移行することもできます。デフォルトでは、新規インストールを初めて起動すると、データベースが自動的に移行されます。
3.3.1. リレーショナルデータベースの自動移行
自動移行を実行するには、目的のデータベースに接続されているサーバーを起動します。新しいサーバーバージョンでデータベーススキーマが変更すると、データベースのレコード数が多すぎない限り、移行が自動的に開始されます。
たとえば、数百万件のレコードを含むテーブルにインデックスを作成すると、時間がかかり、サービスの大きな中断を引き起こす可能性があります。したがって、自動移行には 300000
レコードのしきい値が存在します。レコード数がこのしきい値を超えると、インデックスは作成されません。代わりに、手動で適用できる SQL コマンドを含む警告がサーバーログに表示されます。
しきい値を変更するには、デフォルトの connections-liquibase
プロバイダーの値である index-creation-threshold
プロパティーを設定します。
kc.[sh|bat] start --spi-connections-liquibase-default-index-creation-threshold=300000
3.3.2. 手動によるリレーショナルデータベース移行
データベーススキーマを手動でアップグレードするには、デフォルトの connections-jpa
プロバイダーの migration-strategy
プロパティー値を "manual" に設定します。
kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-strategy=manual
この設定でサーバーを起動すると、サーバーはデータベースを移行する必要があるか確認します。必要な変更は bin/keycloak-database-update.sql
SQL ファイルに書き込まれます。このファイルを確認してデータベースに対して手動で実行できます。
エクスポートされた SQL ファイルのパスと名前を変更するには、デフォルトの connections-jpa
プロバイダーの migration-export
プロパティーを設定します。
kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-export=<path>/<file.sql>
このファイルをデータベースに適用する方法の詳細は、使用しているリレーショナルデータベースのドキュメントを参照してください。変更がファイルに書き込まれると、サーバーは終了します。