第8章 PostgreSQL 9 から PostgreSQL 13 への移行
2021 年 11 月 11 日以降、PostgreSQL バージョン 9.6 はサポートされなくなり、CodeReady Workspaces チームはすべてのユーザーがバージョン 13 に移行することを推奨しています。
以下の手順に従って、データの損失なしに、新しいバージョンの PostgreSQL に正常に移行してください。
前提条件
-
oc
ツールが利用できる。 - OpenShift で実行される CodeReady Workspaces のインスタンス。
手順
- CodeReady Workspaces インスタンスの実行中のすべてのワークスペースの Git リポジトリーに変更を保存し、プッシュします。
- CodeReady Workspaces インスタンスのすべてのワークスペースを停止します。
CodeReady Workspaces および RH-SSO デプロイメントをスケールダウンします。
oc scale deployment codeready --replicas=0 -n openshift-workspaces oc scale deployment keycloak --replicas=0 -n openshift-workspaces
oc scale deployment codeready --replicas=0 -n openshift-workspaces oc scale deployment keycloak --replicas=0 -n openshift-workspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なデータベースのバックアップを作成します。
POSTGRES_POD=$(oc get pods -n openshift-workspaces | grep postgres | awk '{print $1}') CHE_POSTGRES_DB=$(oc get checluster/codeready-workspaces -n openshift-workspaces -o json | jq '.spec.database.chePostgresDb') oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "pg_dump $CHE_POSTGRES_DB > /tmp/che.sql" oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "pg_dump keycloak > /tmp/keycloak.sql"
POSTGRES_POD=$(oc get pods -n openshift-workspaces | grep postgres | awk '{print $1}') CHE_POSTGRES_DB=$(oc get checluster/codeready-workspaces -n openshift-workspaces -o json | jq '.spec.database.chePostgresDb') oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "pg_dump $CHE_POSTGRES_DB > /tmp/che.sql" oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "pg_dump keycloak > /tmp/keycloak.sql"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取得したバックアップをローカルファイルシステムにコピーします。
oc cp openshift-workspaces/$POSTGRES_POD:/tmp/che.sql che.sql oc cp openshift-workspaces/$POSTGRES_POD:/tmp/keycloak.sql keycloak.sql
oc cp openshift-workspaces/$POSTGRES_POD:/tmp/che.sql che.sql oc cp openshift-workspaces/$POSTGRES_POD:/tmp/keycloak.sql keycloak.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL デプロイメントをスケールダウンします。
oc scale deployment postgres --replicas=0 -n openshift-workspaces
oc scale deployment postgres --replicas=0 -n openshift-workspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 古いデータをクリーンアップするために、対応する PVC ユニットを削除します。
oc delete pvc postgres-data -n openshift-workspaces
oc delete pvc postgres-data -n openshift-workspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のステップから PVC を削除した後に、新規 PVC は自動的に数秒で表示されます。
新規 PostgreSQL データベースのバージョンを 13.3 に設定します。
oc patch checluster codeready-workspaces -n openshift-workspaces --type=json -p '[{"op": "replace", "path": "/spec/database/postgresVersion", "value": "13.3"}]'
oc patch checluster codeready-workspaces -n openshift-workspaces --type=json -p '[{"op": "replace", "path": "/spec/database/postgresVersion", "value": "13.3"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL デプロイメントをスケールアップします。
oc scale deployment postgres --replicas=1 -n openshift-workspaces oc wait --for=condition=ready pod -l app.kubernetes.io/component=postgres -n openshift-workspaces --timeout=120s
oc scale deployment postgres --replicas=1 -n openshift-workspaces oc wait --for=condition=ready pod -l app.kubernetes.io/component=postgres -n openshift-workspaces --timeout=120s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースをプロビジョニングします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップを PostgreSQL Pod にコピーします。
oc cp che.sql openshift-workspaces/$POSTGRES_POD:/tmp/che.sql oc cp keycloak.sql openshift-workspaces/$POSTGRES_POD:/tmp/keycloak.sql
oc cp che.sql openshift-workspaces/$POSTGRES_POD:/tmp/che.sql oc cp keycloak.sql openshift-workspaces/$POSTGRES_POD:/tmp/keycloak.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースを復元します。
oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "psql keycloak < /tmp/keycloak.sql" oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "psql $CHE_POSTGRES_DB < /tmp/che.sql"
oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "psql keycloak < /tmp/keycloak.sql" oc exec -it $POSTGRES_POD -n openshift-workspaces -- bash -c "psql $CHE_POSTGRES_DB < /tmp/che.sql"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RH-SSO および CodeReady Workspaces デプロイメントをスケールアップします。
oc scale deployment keycloak --replicas=1 -n openshift-workspaces oc wait --for=condition=ready pod -l app.kubernetes.io/component=keycloak -n openshift-workspaces --timeout=120s oc scale deployment codeready --replicas=1 -n openshift-workspaces oc wait --for=condition=ready pod -l app.kubernetes.io/component=codeready -n openshift-workspaces --timeout=120s
oc scale deployment keycloak --replicas=1 -n openshift-workspaces oc wait --for=condition=ready pod -l app.kubernetes.io/component=keycloak -n openshift-workspaces --timeout=120s oc scale deployment codeready --replicas=1 -n openshift-workspaces oc wait --for=condition=ready pod -l app.kubernetes.io/component=codeready -n openshift-workspaces --timeout=120s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow