以前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テナントのみが存在することを示します。クラスタ内のテナントにスタンバイテナントが存在する場合の出力内容とフィールドの意味の詳細については、obdを使用したプライマリ / スタンバイテナントのデプロイを参照してください。
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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データベースのデータを削除すると、デプロイ済みのOceanBaseデータベースは完全にアンインストールされます。そのため、以下のコマンドを実行する前に、削除するディレクトリ内のデータが使用されないことを確認してください。
OceanBaseデータベースのインストールディレクトリを削除する
[admin@test001 ~]$ sudo rm -rf /home/admin/oceanbaseOceanBaseデータベースのデータディレクトリを削除する
[admin@test001 ~]$ sudo rm -rf /var/lib/oceanbase