機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity Editionは、現在アービトレーションサービス機能をサポートしていません。
アービトレーションサービスが稼働するマシンに障害が発生した場合、新しいマシンにアービトレーションサービスをデプロイして、クラスタの障害が発生したアービトレーションサービスを置き換えることができます。
前提条件
置き換えるアービトレーションサービスの新しいマシンにOceanBaseデータベースソフトウェアがインストールされ、アービトレーションサービスが起動していることを確認してください。詳細な操作については、2レプリカ + アービトレーションサービスのOceanBaseクラスタのデプロイを参照してください。
手順
rootユーザーでクラスタのsysテナントにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に合わせてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aより詳細なデータベース接続操作の手順については、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
以下のコマンドを実行し、クラスタの現在のアービトレーションサービスのアドレスを取得します。
SELECT * FROM oceanbase.DBA_OB_ARBITRATION_SERVICE;クエリ結果の
ARBITRATION_SERVICE列に、クラスタの現在のアービトレーションサービスのアドレスが表示されます。以下のコマンドを実行し、クラスタのアービトレーションサービスを置き換えます。
ALTER SYSTEM REPLACE ARBITRATION SERVICE 'curr_arb_server_ip:curr_arb_server_port' WITH 'new_arb_server_ip:new_arb_server_port';関連パラメータの説明は以下のとおりです:
curr_arb_server_ip:curr_arb_server_port:現在障害が発生しているアービトレーションサービスのIPアドレスとRPCポート番号を表します。ポート番号のデフォルトは2882です。new_arb_server_ip:new_arb_server_port:新しいアービトレーションサービスのIPアドレスとRPCポート番号を表します。ポート番号のデフォルトは2882です。
例:
ALTER SYSTEM REPLACE ARBITRATION SERVICE 'xx.xx.xx.64:2882' WITH 'xx.xx.xx.192:2882';置き換えコマンドの実行後、タイムアウトが発生した場合は、
DBA_OB_ARBITRATION_SERVICEビューを照会してアービトレーションサービスの置き換え状態を確認できます。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.192:2882 | | ADDR | +---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ 1 row in setクエリ結果に基づき、
PREVIOUS_ARBITRATION_SERVICE列の値がNULLではない場合、バックグラウンドでの変更プロセスが完了していないことを意味し、変更プロセスの終了を待つ必要があります。PREVIOUS_ARBITRATION_SERVICE列の値がNULLの場合、バックグラウンドでの変更プロセスが完了し、アービトレーションサービスが正常に置き換えられたことを意味します。DBA_OB_ARBITRATION_SERVICEビューの詳細については、DBA_OB_ARBITRATION_SERVICEを参照してください。置き換えコマンドが正常に実行された後、元のアービトレーションサービスが置き換え前に正常な状態だった場合、システムは元のアービトレーションサーバー上に残っているクラスタ情報を自動的にクリーンアップします。元のアービトレーションサービスが置き換え前に障害状態だった場合、システムはWarningメッセージを表示し、アービトレーションサービスの置き換えが成功した後も元のアービトレーションサーバー上にそのクラスタの関連情報が残っていることを示します。その後、ob_adminツールを使用して残存情報を手動でクリーンアップするかどうかを選択する必要があります。残存するクラスタ情報のクリーンアップの詳細な操作については、残存するクラスタ情報のクリーンアップを参照してください。
Warningメッセージを確認するステートメントは以下のとおりです。
SHOW WARNINGS;Warningメッセージは以下のとおりです。
+---------+------+---------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------------------+ | Warning | 4757 | Cluster info may remain on arbitration server 'xx.xx.xx.64:2882', please make sure whether to use ob_admin to clean it. | +---------+------+---------------------------------------------------------------------------------------------------------------------------+ 1 row in set(オプション)アービトレーションサービスの置き換えが成功した後、
DBA_OB_ROOTSERVICE_EVENT_HISTORYビューで指定されたmoduleを照会することで、アービトレーションサービスの置き換え履歴を確認できます。ステートメントは以下のとおりです:
SELECT * FROM oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY WHERE module LIKE "%arb_service%";クエリ結果の例は以下のとおりです:
+----------------------------+-------------+-----------------------------------+-------+--------+-------+--------------------------------------------------------------------------------------------------+-------+--------+-------+--------+-------+--------+-------+--------+------------+----------------+-------------+ | TIMESTAMP | MODULE | EVENT | NAME1 | VALUE1 | NAME2 | VALUE2 | NAME3 | VALUE3 | NAME4 | VALUE4 | NAME5 | VALUE5 | NAME6 | VALUE6 | EXTRA_INFO | RS_SVR_IP | RS_SVR_PORT | +----------------------------+-------------+-----------------------------------+-------+--------+-------+--------------------------------------------------------------------------------------------------+-------+--------+-------+--------+-------+--------+-------+--------+------------+----------------+-------------+ | 2023-06-26 19:30:19.245664 | arb_service | admin_add_arbitration_service | ret | 0 | arg | {arbitration_service_:"xx.xx.xx.192:2882"} | | | | | | | | | | xx.xx.xx.194 | 2882 | | 2023-06-30 09:42:35.623655 | arb_service | admin_replace_arbitration_service | ret | 0 | arg | {arbitration_service_:"xx.xx.xx.64:2882", previous_arbitration_service_:"xx.xx.xx.192:2882"} | | | | | | | | | | xx.xx.xx.194 | 2882 | +----------------------------+-------------+-----------------------------------+-------+--------+-------+--------------------------------------------------------------------------------------------------+-------+--------+-------+--------+-------+--------+-------+--------+------------+----------------+-------------+ 2 rows in set
関連ドキュメント
アービトレーションサービスに関する詳細情報については、以下を参照してください: