以前OceanBaseクラスタをデプロイしたマシンに新しいOceanBaseクラスタを再デプロイする場合は、新しいクラスタをデプロイする前に古いクラスタをクリーンアップしてください。
本記事では3つのシナリオを紹介します。お使いのクラスタの状況に応じて適切なシナリオを参照してください。
古いクラスタのクリーンアップに関する推奨事項
古いクラスタ環境をクリーンアップする前に、データのバックアップを行うことを推奨します。これにより、データの完全性とセキュリティを確保し、将来必要になった際にデータのコピーを保持して復元や移行が可能になります。
OceanBaseクラスタのデータバックアップに関する詳細は、バックアップの準備を参照してください。
シナリオ1:コマンドラインでデプロイされたOceanBaseクラスタ
マシン上のクラスタがコマンドラインで手動でデプロイされた場合は、このセクションを参照してクリーンアップしてください。
ステップ1:サービスの停止とアンインストール
古いobserverプロセスを停止し、それらが実行されていないことを確認します。次に、関連するデータベースソフトウェアをアンインストールします。手順は以下のとおりです:
注意
observerプロセスを停止すると、OceanBaseデータベースは使用できなくなります。そのため、以下の操作を実行する前に、クラスタが既に使用されていないこと、およびバックアップが必要なデータのバックアップが完了していることを再度確認してください。データの損失やシステムの使用不能を避けるため、慎重に操作してください。
以下のコマンドを使用して、observerプロセスが存在するかどうか確認します。
ps -ef|grep observer(オプション)observerプロセスを停止します。
マシンにobserverプロセスが存在する場合、以下のコマンドを使用して古いobserverプロセスを停止します:
kill -9 `pidof observer`以下のコマンドを使用して、インストール済みのOceanBaseデータベースRPMパッケージ名を確認します。
rpm -qa|grep oceanbase以下のコマンドを使用して、インストール済みのOceanBaseデータベースRPMパッケージをアンインストールします。
sudo rpm -e $rpm_nameここで、
$rpm_nameはアンインストールするソフトウェアパッケージの名前です。以下のコマンドを使用して、RPMパッケージのアンインストールが完了したかどうかを確認できます。
rpm -ql $rpm_nameすべてのOBServerノード上のサービスを停止し、アンインストールするまで、手順1~4を繰り返します。
ステップ2:データベースファイルのクリーンアップ
古いデータベースファイル(データファイル、ログファイル、その他の一時ファイルを含む)を削除します。
注意
以下の削除操作は不可逆です。つまり、削除されたファイルやディレクトリは復元できません。したがって、以下のコマンドを実行する前に、削除対象のディレクトリ内のデータが不要であることを確認してください。
以下のコマンドを使用して、observerプロセスの実行ログディスクファイルを削除します。
sudo rm -rf /home/admin/oceanbase/*以下のコマンドを使用して、observerプロセスのログディスクファイルを削除します。
sudo rm -rf /data/log1/*以下のコマンドを使用して、observerプロセスのデータディスクファイルを削除します。
sudo rm -rf /data/1/*すべてのOBServerノード上の古いデータベースファイルが削除されるまで、手順1~3を繰り返します。
シナリオ2:obdを使用してデプロイされたOceanBaseクラスタ
お使いのマシン上のクラスタがobdコマンドでデプロイされた場合は、このセクションを参照してクリーンアップしてください。
クラスタの状態を確認する
obd cluster list出力は以下のようになります。詳細な状態の説明については、obd cluster listを参照してください。
+--------------------------------------------------------+ | Cluster List | +------+-------------------------------+-----------------+ | Name | Configuration Path | Status (Cached) | +------+-------------------------------+-----------------+ | test | /home/admin/.obd/cluster/odp | running | | demo | /home/admin/.obd/cluster/demo | running | +------+-------------------------------+-----------------+スタンバイテナントが存在するかどうかを確認する
ここではtestクラスタを例に操作を説明します。実際の環境に応じてクラスタ名を変更する必要があります。
obd cluster tenant show test -g出力は以下のとおりで、スタンバイテナントが存在せず、クラスタにはsysテナントのみが含まれていることを示します。クラスタ内のテナントにスタンバイテナントが存在する場合、その出力内容とフィールドの意味の詳細については、スタンバイテナントの作成を参照してください。
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | tenant base info | +-------------+-------------+--------------------+--------------+---------+---------+-------------+---------------------+---------------------+---------------+-------------+-------------+ | tenant_name | tenant_type | compatibility_mode | primary_zone | max_cpu | min_cpu | memory_size | max_iops | min_iops | log_disk_size | iops_weight | tenant_role | +-------------+-------------+--------------------+--------------+---------+---------+-------------+---------------------+---------------------+---------------+-------------+-------------+ | sys | SYS | MYSQL | RANDOM | 3.0 | 3.0 | 1024M | 9223372036854775807 | 9223372036854775807 | 2048M | 3 | PRIMARY | +-------------+-------------+--------------------+--------------+---------+---------+-------------+---------------------+---------------------+---------------+-------------+-------------+(オプション)プライマリ/スタンバイテナントの分離
クラスタ内のテナントにスタンバイテナントが存在する場合、クラスタを破棄するとエラーが発生します。この場合、プライマリ/スタンバイテナントを分離するか、強制的に破棄コマンドを実行するかを選択できます。クラスタ破棄後は、スタンバイテナントは使用できなくなります。実際のシナリオに応じて、この手順を実行するかどうかを決定してください。
プライマリ/スタンバイテナントの分離の詳細な操作については、プライマリ/スタンバイテナントの分離を参照してください。
クラスタの破棄
注意
obd cluster destroyコマンドは不可逆であり、observerプロセスを停止すると同時にデータベースファイルを削除します。したがって、以下のコマンドを実行する前に、クラスタが既に使用されていないこと、およびバックアップが必要なデータのバックアップが完了していることを確認してください。ここではtestクラスタを例に操作を説明します。実際の状況に応じてクラスタ名を変更してください。
obd cluster destroy test -f [--igs]-fは、実行ディレクトリに実行中のプロセスが検出された場合、そのプロセスを強制停止してクラスタを破棄することを示します。--igsは、クラスタ内のテナントが他のクラスタでスタンバイテナントを持っていることが検出された場合、obd cluster destroyコマンドを強制的に実行することを示します。
シナリオ3:systemdを使用してデプロイされたOceanBaseクラスタ
マシン上のクラスタがsystemdを使用してデプロイされている場合は、このセクションを参照してクリーンアップしてください。
OceanBaseデータベースを停止する
[admin@test001 ~]$ sudo systemctl stop oceanbaseOceanBaseデータベースをアンインストールする
OceanBaseデータベースソフトウェアパッケージを削除する
オンラインインストールの場合、以下のコマンドを実行します:
[admin@test001 ~]$ sudo yum erase packagepackageは削除するソフトウェアパッケージ名に置き換えてください。パッケージ名はyum list | grep oceanbaseコマンドで確認できます。オフラインインストールの場合、以下のコマンドを実行します:
[admin@test001 ~]$ sudo rpm -e packagepackageは削除するソフトウェアパッケージ名に置き換えてください。パッケージ名はrpm -qa | grep oceanbaseコマンドで確認できます。(オプション)OceanBaseデータベースデータを削除する
説明
ソフトウェアパッケージを削除すると、環境内のOceanBaseデータベースはアンインストールされますが、データは残ります。後でOceanBaseデータベースを再デプロイした場合、そのデータを表示および操作できます。この手順でOceanBaseデータベースのデータを削除すると、デプロイされたOceanBaseデータベースは完全にアンインストールされます。したがって、以下のコマンドを実行する前に、削除対象のディレクトリ内のデータが不要であることを確認してください。
OceanBaseデータベースのインストールディレクトリを削除します:
[admin@test001 ~]$ sudo rm -rf /home/admin/oceanbaseOceanBaseデータベースのデータディレクトリを削除します:
[admin@test001 ~]$ sudo rm -rf /var/lib/oceanbase