# v5.0 系から v4.5 系以下へのダウングレード
v5.0 にアップグレードしたシステムを v4.5 系以下にダウングレードする場合は、v4.5 系に切り替えて起動する前に MongoDB スキーマの migrate down を行う必要があります。
以下の手順を実施してください。
TIP
ダウングレードは、オンプレミス または weseek/growi-docker-compose (opens new window) で運用中のシステムで可能です。
それ以外の形態で運用中のシステムに関してはダウングレードはサポートしておりません。ご了承ください。
WARNING
ダウングレードでは、データ破損の可能性はありませんが、page collection のページパスのデータの不整合が発生するなどのリスクがゼロではありません。
管理者による自己責任で操作をお願いします。
# 手順
# 本番用ローカルリポジトリを使って作業するパターン
本番のサーバーを停止する
- MongoDB は起動したままにする
v5.0.0 のシステムを利用可能な状態のまま以下の手順を実施する
growi-docker-compose を利用している場合は bash プロセスを起動
docker-compose run -it --rm app bash
packages/app
ディレクトリ下でmigrate-mongo down
コマンドを実行- ターミナルの出力に
MIGRATED DOWN: 20211227060705-revision-path-to-page-id-schema-migration.js
が出現するまで複数回実行する - 参考: v5.0.0 から v4.5.15 へのダウングレードでは 3 回の
migrate-mongo down
実行が必要です
# 1回目 (20220311011114-convert-page-delete-config) NODE_ENV=production node -r dotenv-flow/config node_modules/.bin/migrate-mongo down # 2回目 (20220131001218-convert-redirect-to-pages-to-page-redirect-documents) NODE_ENV=production node -r dotenv-flow/config node_modules/.bin/migrate-mongo down # 3回目 (20211227060705-revision-path-to-page-id-schema-migration) NODE_ENV=production node -r dotenv-flow/config node_modules/.bin/migrate-mongo down
- ターミナルの出力に
v4.5 系のシステムを利用可能な状態に切り替えてクライアントビルド、サーバー起動
# 作業用リポジトリを clone するパターン
本番のサーバーを停止する
- MongoDB は起動したままにする
運用中の MongoDB にアクセスできる環境でリポジトリを clone
git clone https://github.com/weseek/growi -b v5.0.0 --depth 1 # 依存ライブラリの取得 yarn lerna bootstrap cd packages/app
.env.local
の作成MIGRATIONS_DIR=src/migrations/ # 環境に合わせて変更してください MONGO_URI="mongodb://${mongodbhost}:27017/growi"
migrate-mongo down
コマンドを実行- ターミナルの出力に
MIGRATED DOWN: 20211227060705-revision-path-to-page-id-schema-migration.js
が出現するまで複数回実行する - 参考: v5.0.0 から v4.5.15 へのダウングレードでは 3 回の
migrate-mongo down
実行が必要です
# 1回目 (20220311011114-convert-page-delete-config) yarn ts-node node_modules/.bin/migrate-mongo down # 2回目 (20220131001218-convert-redirect-to-pages-to-page-redirect-documents) yarn ts-node node_modules/.bin/migrate-mongo down # 3回目 (20211227060705-revision-path-to-page-id-schema-migration) yarn ts-node node_modules/.bin/migrate-mongo down
- ターミナルの出力に
作業用リポジトリの削除
本番環境で v4.5 系のタグをチェックアウト
クライアントビルド、サーバー起動
# 出力例
node ➜ /workspace/growi/packages/app (master) $ yarn ts-node node_modules/.bin/migrate-mongo down
yarn run v1.22.17
$ ts-node -r tsconfig-paths/register -r dotenv-flow/config --transpile-only node_modules/.bin/migrate-mongo down
{"name":"growi:migrate:convert-page-delete-config","hostname":"xxxxxxxxxxxx","pid":1111,"level":30,"msg":"Migration down has successfully applied","time":"2022-03-31T05:54:22.448Z","v":0}
MIGRATED DOWN: 20220311011114-convert-page-delete-config.js
Done in 1.71s.
node ➜ /workspace/growi/packages/app (master) $ yarn ts-node node_modules/.bin/migrate-mongo down
yarn run v1.22.17
$ ts-node -r tsconfig-paths/register -r dotenv-flow/config --transpile-only node_modules/.bin/migrate-mongo down
{"name":"growi:migrate:convert-redirect-to-pages-to-page-redirect-documents","hostname":"xxxxxxxxxxxx","pid":1111,"level":30,"msg":"Migration down has successfully applied","time":"2022-03-31T05:54:27.944Z","v":0}
MIGRATED DOWN: 20220131001218-convert-redirect-to-pages-to-page-redirect-documents.js
Done in 1.42s.
node ➜ /workspace/growi/packages/app (master) $ yarn ts-node node_modules/.bin/migrate-mongo down
yarn run v1.22.17
$ ts-node -r tsconfig-paths/register -r dotenv-flow/config --transpile-only node_modules/.bin/migrate-mongo down
{"name":"growi:migrate:revision-path-to-page-id-schema-migration","hostname":"xxxxxxxxxxxx","pid":1111,"level":30,"msg":"Migration down has successfully applied","time":"2022-03-31T05:54:31.169Z","v":0}
MIGRATED DOWN: 20211227060705-revision-path-to-page-id-schema-migration.js
Done in 1.99s.
# トラブルシュート
# ERROR: An env var MIGRATIONS_DIR must be set. Error: An env var MIGRATIONS_DIR must be set.
一時的に環境変数を設定する .env.local
を作成し、MIGRATIONS_DIR
を設定してください。
本番用ローカルリポジトリを使って作業するパターンでは Node.js プロセスで実行可能な MIGRATIONS_DIR=dist/migrations/
を指定します。
作業用リポジトリを clone するパターンでは ts-node プロセスで実行可能な MIGRATIONS_DIR=src/migrations/
を指定します。