適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity Editionは、現在アービトレーションサービス機能をサポートしていません。
アービトレーションサービスの置き換えまたは削除操作後、元のアービトレーションサーバーが障害状態(ダウンまたはネットワーク切断)にある場合、元のアービトレーションサービスが存在したマシンにクラスタ関連情報が残存する可能性があります。そのため、ob_adminツールを使用してこれらの残存情報を手動でクリーンアップする必要があります。
前提条件
残存するクラスタ情報をクリーンアップする前に、元のアービトレーションサーバーにob_adminツールがインストールされていることを確認してください。アービトレーションサービスをデプロイする際、アービトレーションサーバーにはデフォルトでob_adminツールがインストールされており、デフォルトのインストールパスは/home/admin/oceanbase/binです。元のアービトレーションサーバーにob_adminツールがインストールされていない場合は、ob_adminツールをインストールした後にこの操作を実行する必要があります。ob_adminツールの詳細なインストール手順については、ob_adminの紹介を参照してください。
残存情報のクリーンアップ
クリーンアップ前の確認を行います。
rootユーザーでクラスタのsysテナントにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に基づいてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aデータベース接続の詳細な操作ガイドについては、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
以下のコマンドを実行して、このクラスタのアービトレーションサービスが置き換えられたか削除されたかを確認します。
SELECT * FROM oceanbase.DBA_OB_ARBITRATION_SERVICE;アービトレーションサービスを置き換えた後のクエリ結果は次のとおりです:
+---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ | CREATE_TIME | MODIFY_TIME | ARBITRATION_SERVICE_KEY | ARBITRATION_SERVICE | PREVIOUS_ARBITRATION_SERVICE | TYPE | +---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ | 2023-06-26 19:30:19 | 2023-06-30 09:42:40 | default | xx.xx.xx.194:2882 | | ADDR | +---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ 1 row in setクエリ結果に基づいて、
ARBITRATION_SERVICEフィールドが空または他のアービトレーションサーバーであり、かつPREVIOUS_ARBITRATION_SERVICEフィールドが空の場合、このクラスタのアービトレーションサービスが置き換えられたか削除されたことを意味し、残存するクラスタ情報をクリーンアップできます。そうでない場合、サービスを提供しているアービトレーションメンバーを誤ってクリーンアップする可能性があります。
元のアービトレーションサービスが存在したマシンにログインし、アービトレーションサーバー上の残存するクラスタ情報をクリーンアップします。
元のアービトレーションサービスが存在したマシンにログインします。
ob_adminツールが配置されているディレクトリに移動します。
ob_adminのデフォルトのインストールディレクトリは
/home/admin/oceanbase/binです。cd /home/admin/oceanbase/bin以下のコマンドを実行して、残存するクラスタ情報をクリーンアップします。
./ob_admin -h$ARB_SERVER_IP -p$ARB_SERVER_PORT force_clear_arb_cluster_info $CLUSTER_IDその中で:
$ARB_SERVER_IP:元のアービトレーションサービスのIPアドレス。$ARB_SERVER_PORT:元のアービトレーションサービスのRPCポート番号。デフォルトは2882です。$CLUSTER_ID:現在のクラスタのクラスタID。データベースに接続した後、SHOW PARAMETERS LIKE 'cluster_id';コマンドで取得できます。obclient> SHOW PARAMETERS LIKE 'cluster_id';クエリ結果は次のとおりです:
+-------+----------+----------------+----------+------------+-----------+----------+-------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault | +-------+----------+----------------+----------+------------+-----------+----------+-------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone1 | observer | 172.xx.xxx.xxx | 2882 | cluster_id | INT | 20230625 | ID of the cluster | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0 | 0 | +-------+----------+----------------+----------+------------+-----------+----------+-------------------+----------+---------+---------+-------------------+---------------+-----------+ 1 row in setクエリ結果から、現在のクラスタの
cluster_idは20230625であることがわかります。
残存するクラスタ情報をクリーンアップする例は次のとおりです:
./ob_admin -hxx.xx.xx.64 -p2882 force_clear_arb_cluster_info 20230625実行結果は次のとおりです:
succ to open, filename=ob_admin.log, fd=3, wf_fd=2 old log_file need close, old = ob_admin.log new = ob_admin.log succ to open, filename=ob_admin.log, fd=3, wf_fd=2 succ to open, filename=ob_admin_rs.log, fd=4, wf_fd=2