Nutanix Database Service(NDB)で、REST API でデータベースを Soft Remove してみます。
今回の環境
NDB バージョンは、2.5.4 です。
そして、データベース削除の処理が失敗して、再実行してもオペレーションが「待機中」のまま進まなくなってしまっています。
オペレーションの停止
削除オペレーションが「待機中」でも、NDB Server では上書きでの削除オペレーションを開始できません。
そこで、オペレーションを手動で停止します。
「オペレーション」画面で、待機中のオペレーションを選択して「操作を停止」をクリックします。そして確認画面で「Yes」をクリックします。
データベースの Soft Remove
NDB の REST API を利用するためのデータやコマンド ラインを用意するには、API リファレンスか、NDB Web UI の「同等の API」ボタンから確認します。
データベースの Soft Remove には、下記の DELETE メソッドを利用します。
DELETE メソッドには、下記の JSON データを渡します。
- このうち delete / remove / softRemove は、どれかひとつだけを true にします。
- フォーマットされた JSON を1行にまとめるには、jq の「-c」オプションなどが利用できます。
{ "delete": false, "remove": false, "softRemove": true, "forced": false, "deleteTimeMachine": true, "deleteLogicalCluster": true }
curl では、下記のようなコマンド ラインで実行します。
- データベースの UUID も「同等の API」ボタンなどから確認できます。
- NDB Server: 192.168.12.156
- データベースの UUID: 0ecc36ec-2115-482f-b91e-9e609cacfeb9
- -u: NDB Server の「ユーザ:パスワード」を指定
- -d: さきほどの JSON データ
curl -k -X DELETE \ https://192.168.12.156/era/v0.9/databases/0ecc36ec-2115-482f-b91e-9e609cacfeb9 \ -H 'Content-Type: application/json' \ -u 'admin:パスワード' \ -d '{"delete":false,"remove":false,"softRemove":true,"forced":false,"deleteTimeMachine":true,"deleteLogicalCluster":true}'
適当な Linux などから curl コマンドを実行するとオペレーションが開始され、NDB Server からデータベースの登録が削除されます。下記のようにオペレーションの情報が返されます。
{ "name": "Database (id:0ecc36ec-2115-482f-b91e-9e609cacfeb9) has been soft-removed successfully", "workId": null, "operationId": null, "dbserverId": null, "message": " Database (id:0ecc36ec-2115-482f-b91e-9e609cacfeb9) has been soft-removed successfully.", "entityId": "d7598f7b-b652-4254-9458-a908e129bf1e", "entityName": "pgsql14-01 (deleted at:2024-05-03 01:03:27UTC)", "entityType": "ERA_DATABASE", "status": "success", "associatedOperations": null, "dependencyReport": null }
「システム操作を表示」を ON にすると、REST API による削除に関連したオペレーションが表示されます。
これで NDB からデータベースの登録が削除されました。DB サーバ VM からは削除されていないので、手動での削除が必要です。
以上。