新しいメジャー・バージョンへのアップグレード
Databases for MongoDB は2つの異なるアップグレードパスを提供する:
- メジャーバージョンへのインプレースアップグレード(現在サポート対象: MongoDB スタンダードプラン、 MongoDB エンタープライズプラン)
- バックアップからの復元(スタンダードプラン MongoDB および MongoDB エンタープライズプランでサポートされています)。
メジャーバージョンアップ
インプレース メジャー バージョン アップグレードを使用すると、デプロイメントを次の新しい メジャー バージョン にアップグレードできるため、新しいデプロイメントに バックアップを復元する 必要がなくなります。 この方法では、配備を再構成する必要なく、同じ接続文字列を維持できます。 ただし、新しいメジャーバージョンでアプリケーションの調整が必要な場合は、それに対応しなければならない。
インプレース メジャー バージョンアップ ウィンドウ(バックアップを含む)では、 配備は setUserWriteBlockMode に設定され、安全なアップグレードを保証するた めに、読み込み操作のみが許可され、書き込み操作は許可されません。 デプロイメントのメジャーバージョンアップグレードが完了するとすぐに、は writeBlockMode 削除されます。
インプレースのメジャーバージョンアップを行う場合、2つの選択肢があります:
-
バックアップ付きインプレースメジャーバージョンアップグレード:このパスでは実際のアップグレード実行前にバックアップを作成し、追加の安全対策を提供します(エンタープライズ MongoDB プランでのみ利用可能なオプション)。
-
バックアップなしでその場でメジャーバージョンをアップグレードする:このオプションは、事前にバックアップを作成せずにアップグレードを進めます。 インプレース アップグレードが失敗した場合、最新のバックアップから新しい配置に 配置をリストアする必要があります。
バックアップなしのインプレース・アップグレードは推奨されません。 アップグレードに失敗した場合、すぐに復元できるバックアップがないため、データが失われる可能性があります。
特定のバージョンについては、そのバージョンのスナップショットが完了し、正常にバックアップされるまで、 ポイント・イン・タイム・リカバリ および ポイント・イン・タイム・リカバリ(PITR)のオフライン復元は 一時的に利用できません。 このスナップショットは、バックアップ一覧に表示されていません。
開始前に
アップグレード手順を開始する前に、以下の点を考慮してください。
- アップグレードする前に、配置が健全な状態である必要があります。
- 配置には、少なくとも 2 GB のディスク空き容量が必要です。
- を実行する権限を持つユーザがいないことが必要です。 bypassWriteBlockingMode.
- 希望のバージョンを指定する代わりに、 次のメジャーバージョンにのみアップグレードできます。
- 各メジャーバージョンには、以前のバージョンと後方互換性のない機能が含まれている場合があります。 データベースベンダの リリースノートを チェックし、アプリケーションに影響する可能性のある変更を確認する。
- 配置を以前のバージョンにダウングレードすることはサポートされていません。
- インプレース・メジャー・バージョン・アップグレードは、一度開始するとキャンセルできません。
- MongoDB ( Enterprise Edition )の場合、アップグレードを行う前に、少なくとも1つのバックアップが用意されている必要があります。
- MongoDB ( Enterprise Edition )の場合、メジャーバージョンのインプレースアップグレード後に、以前のバージョンのポイント・イン・タイム(PITR)を使用した復元およびアップグレードを行うには、2つの別々の手順を実行する必要があります。
UI でのアップグレード
-
アップグレードプロセスをテストするために、新しい Databases for MongoDB を作成します。
同じバージョンの既存のデプロイメントから バックアップを復元 して、デプロイメントを作成します。 -
ステージング用アプリケーションのターゲットをテスト環境のデプロイ先に向ける。
ステージングアプリケーションを更新し、テスト環境へのデプロイ先を指定してください。 テスト アプリケーションがステージング配置に正常に接続でき、アプリケーショ ンが期待どおりに動作することを確認します。 ステージング環境の必要なパフォーマンスおよび運用テストを実施する。 -
「 概要 」ページの「 メジャーバージョンをアップグレード 」ボタンをクリックして、テスト環境のメジャーバージョンをアップグレードしてください。
これにより、アップグレード処理が完了するまで、データベースが読み取り専用モードになります。 アップグレードが完了するまでの時間をメモしておくと、アップグレードの有効期限設定を使用して、メンテナンスウィンドウ内にアップグレードを含めることができます。 -
ステージング環境のアプリケーションが、新しいデータベースのバージョンで正常に動作することを確認してください。
アプリケーションが正常に動作している場合、この手順により、本番環境のデータベースをアップグレードしても問題がないことが確認できます。 -
本番用データベースの展開を新しいバージョンにアップグレードしてください。
新しいバージョンのデータベースを使用してアプリケーションが正常に動作することを確認したら、管理コンソールに戻り、本番環境のアップグレードプロセスを開始できます。 概要] ページの [展開の詳細] セクションで、 [メジャーバージョンのアップグレード] ボタンをクリックし、手順に従ってください。いったんインプレース・アップグレード・プロセスが開始されると、それを停止したりロールバックしたりすることはできません。 そのため、万が一エラーが発生した場合、データベースの展開が回復できなくなる可能性があります。 したがって、新しい配置にリストアするために使用できるバッ クアップを作成します。 バックアップによるメジャーバージョンアップ」を選択した場合、作成されたバッ クアップは新しい配置での復元に使用できます。
expiration for starting upgrade では、アップグレードジョブが自動的にキャンセルされるまでの「タイムアウト」期間を設定できます。 さらに、アップグレードが希望する時間内に完了することを確認するために、前もってステージングでアップグレードをテストします。 例えば、1時間以内にアップグレードを完了したい場合、アップグレードをテストして30分かかることが分かっていれば、アップグレードジョブは、アップグレードしたいことを確認してから30分以内に開始しなければなりません。
そのため、有効期限を30分に設定し、その時間内に開始しなければウィンドウをオーバーしないようにする。
API を使用したアップグレード
インプレースでアップグレードするには、以下のコマンドを使用します:
curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "7.0"}'
expiration for starting upgrade では、アップグレードジョブが自動的にキャンセルされるまでの「タイムアウト」期間を設定できます。 さらに、アップグレードが希望する時間内に完了することを確認するために、前もってステージングでアップグレードをテストします。 例えば、1時間以内にアップグレードを完了したい場合、アップグレードをテストして30分かかることが分かっていれば、アップグレードジョブは、アップグレードしたいことを確認してから30分以内に開始しなければなりません。
そのため、有効期限を今から30分後のタイムスタンプに設定し、その時間内に開始されなければウィンドウをオーバーしないようにする。 有効期限は5分後(デフォルト)から24時間後までの間でなければならない。 詳しくは、 Cloud Databases APIを 参照。
CLI を使用したアップグレード
CDBプラグインのバージョン 0.20.0 以降で利用可能です。
配置で許可されているアップグレードとリストア移行のリストを表示するには、 次の手順に従います:
ibmcloud cdb deployment-capability-show <NAME|CRN> versions
必要なパラメータを指定してコマンドをアップグレードする:
ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>
コマンドパラメーターの詳細を表示するには
ibmcloud cdb deployment-version-upgrade --help
expiration for starting upgrade では、アップグレードジョブが自動的にキャンセルされるまでの「タイムアウト」期間を設定できます。 さらに、アップグレードが希望する時間内に完了することを確認するために、前もってステージングでアップグレードをテストします。 例えば、1時間以内にアップグレードを完了したい場合、アップグレードをテストして30分かかることが分かっていれば、アップグレードジョブは、アップグレードしたいことを確認してから30分以内に開始しなければなりません。
そのため、有効期限を30分に設定し、その時間内に開始しなければウィンドウをオーバーしないようにする。 有効期限は5分後(デフォルト)から24時間後までの間でなければならない。 CLI --expire-in または --expire-at を使って有効期限を設定する方法は2つあります。 詳細については、コマンドのヘルプを参照してください。
Terraformによるアップグレード
Terraform プロバイダーのバージョンが 1.79.2 以上で利用可能です。
アップグレードするには、 version の値を追加または変更するだけです。 また、バックアップをスキップするために設定できるオプションのブールフラグ、 version_upgrade_skip_backup もあります。
バックアップをスキップすることは推奨されない。 バージョンアップの前にバックアップをスキップするのは危険であり、アップグレードがいずれかの段階で失敗した場合、データの損失につながる可能性があります。
アップグレード中、データベースはREAD-ONLYモードになります。 アップグレードの前にテストすることを強くお勧めします。
アップグレードには、デフォルトのタイムアウトよりも長い時間が必要な場合があります。 より長いタイムアウト値を設定するには、timeouts属性を使用します。
Terraformには有効期限タイムスタンプの代わりにタイムアウトがある。 したがって、タイムアウトの更新値が有効期限として使用されるため、タイムアウトを長くしてください。 例えば、タイムアウトを20分に設定した場合、有効期限は20分に設定され、その時間内にアップグレードが開始されなければ、有効期限が切れてアップグレードは開始されません。 タイムアウトを36時間に設定しても、最初の24時間以内にアップグレードが開始されなければ、アップグレードは失効します。
アップグレードが進行中の場合、いくつかのタスクはキューに入れられ、バージョンアップが完了するまで進行しないことに注意してください。
トラブルシューティング
ユーザー bypassWriteBlockingMode
安全なアップグレードを確実にするため、バックアップ中やアップグレード中に、いかなるユーザーも書き込み操作を実行できないようにしてください。 データベースが writeBlockModeに入る前に、以下の権限を持つユーザーがいるかどうかがチェックされる。 bypassWriteBlockingMode. そのようなユーザーが特定された場合、タスクは失敗状態に入る。 再試行はすべて失敗し、そのような権限を持つユーザーを削除することだけが、メジャーバージョンアップのインプレース実行を可能にします。
健康診断
サービスインスタンスのリソースが不足している場合、このような状況では安全なアップグレードが保証されないため、タスクは失敗する。 リソースの消費量は、 モニタリングの統合によって 評価することができる。 すべてのデータベースコンポーネントがアップグレード可能でない場合、アップグレードタスクは失敗します。
PITR をサポートするには Enterprise EditionMongoDB、ギャップのない最新のスナップショットが存在している必要があり、アップグレード中はスナップショットは実行されません。 PITRが保証できない場合、インプレースアップグレードは失敗します。
この状態は、メンテナンスまたはデータベースの使用によって発生する可能性があります。 ヘルスチェックの失敗により失敗したタスクは、後で再試行できる。 タスクが継続的に失敗する場合は、 サポート IBM Cloud にサポートチケットを開いてください。
バックアップからのリストア
データベースのメジャー・バージョンが寿命(EOL)に達する前に、バックアップから新しいデータベース・インスタンスにリストアして、利用可能な次のメジャー・バージョンにアップグレードします。
EOL 日より前の最新バージョンで実行する準備をしてから、最新バージョンに移行します。 詳しくは、 バージョン管理ポリシーを参照してください。
バージョンのロールバックはサポートされていません。
Databases for MongoDB で入手可能な、 MongoDB の最新バージョンにアップグレードしてください。 カタログ・ページ、 Cloud Databases CLI プラグイン・コマンド ibmcloud cdb deployables-show、または
Cloud Databases API /deployables エンドポイントから、最新バージョンを見つけます。
アップグレードは、データを新しいデプロイメントに バックアップの復元 することで行われます。 バックアップからのリストアには、以下のようなさまざまな利点があります。
- 元のデータベースが実行されたままなので、実動作業を中断せずに実行できる。
- 実動とは別に新規データベースをテストして、アプリケーションの非互換性がないかを確認できる。
- 任意の時点でプロセス全体をやり直すことができる。
- フレッシュ・リストアなので、前のバージョンのデータベースの不要な成果物が新規データベースに引き継がれる可能性が低くなる。
アップグレード・パス
| 現行バージョン | メジャー・バージョンのアップグレード・パス |
|---|---|
| MongoDB 7 | MongoDB 8 |
UI でのアップグレード
新しいホスティング・モデル(分離コンピュートおよび共有コンピュート)については、 CLI および APIを通じて 新しいメジャー・バージョンへのアップグレードが可能です。
You can upgrade to a new version by バックアップの復元 from the バックアップと復元 page of your deployment on the IBM Cloud console. バックアップの Restore backup をクリックすると、新しいタブでページが開き、新しい配置のオプションを変更できます。 その 1 つがデータベースのバージョンであり、アップグレードのターゲットにできるバージョンが自動的に取り込まれています。 バージョンを選択し、「 バックアップを復元 」をクリックして、プロビジョニングおよび復元プロセスを開始してください。
CLI を使用したアップグレード
IBM Cloud CLI を使用してバックアップからアップグレードとリストアを行う場合は、リソース・コントローラーからプロビジョニング・コマンドを使用します。
ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION>
パラメータ「 instance_name 」、「 service_id 」、「 service_plan_id 」、および「 region 」はすべて必須です。 また、-p に、バージョンとバックアップ ID のパラメーターを JSON オブジェクトで指定してください。 新規デプロイメントは、バックアップ時のソース・デプロイメントと同じディスクおよびメモリーを適用して自動的にサイズ変更されます。
ibmcloud resource service-instance-create example-upgrade databases-for-mongodb standard us-south \
-p \ '{
"backup_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":"7.0"
}'
API を使用したアップグレード
API によるプロビジョニングと同様に、バックアップからアップグレードを行うには、事前に「 リソースコントローラーAPIを使用するために必要な手順 」を完了しておく必要があります。 その後、API に POST 要求を送信します。
パラメーターの name、target、resource_group、resource_plan_id はすべて必須です。 また、バージョンとバックアップIDもご提示ください。 新規デプロイメントのメモリーとディスクの割り振りは、バックアップ時のソース・デプロイメントと同じになります。
curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{
"name": "my-instance",
"target": "us-south",
"resource_group": "5g9f447903254bb58972a2f3f5a4c711",
"resource_plan_id": "databases-for-mongodb-standard",
"backup_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":"7.0"
}'
Terraformによるアップグレード
Terraformを使って、古いバージョンから新しいバージョンへのバックアップにリストアする。
コードは以下のようになる:
resource "ibm_database" "<your-instance>" {
name = "<your_database_name>"
service = "<service>"
plan = "<plan>"
location = "<region>"
version = "<version>"
backup_id = "<backup_id>"
}
詳細については、 Cloud Databases Terraform Registryを参照のこと。 あるいは、 Terraform IBM Modules(TIM) を使って、バックアップインスタンスから新しいデータベースインスタンスを作成することもできます。 詳細については、 バックアップからのリストアの例を参照してください。