以前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