適用対象
この内容は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列の値が空ではない場合、バックグラウンドでの変更プロセスが完了していないことを意味し、変更プロセスの終了を待つ必要があります。PREVIOUS_ARBITRATION_SERVICE列の値が空の場合、バックグラウンドでの変更プロセスが完了し、アービトレーションサービスが実際に置き換えられたことを意味します。DBA_OB_ARBITRATION_SERVICEビューの詳細については、DBA_OB_ARBITRATION_SERVICEを参照してください。置き換えコマンドの実行が成功した後、元のアービトレーションサービスが置き換え前に正常な状態だった場合、システムは自動的に元のアービトレーションサーバー上に残っているクラスタ情報をクリーンアップします。元のアービトレーションサービスが置き換え前に障害状態だった場合、システムは警告メッセージを表示し、アービトレーションサービスの置き換えが成功した後も元のアービトレーションサーバー上にそのクラスタの関連情報が残っていることを示します。ob_adminツールを使用して手動で残存情報をクリーンアップするかどうか選択する必要があります。残存するクラスタ情報の詳細な操作については、残存するクラスタ情報のクリーンアップを参照してください。
警告メッセージを確認するステートメントは次のとおりです。
SHOW WARNINGS;警告メッセージは次のとおりです。
+---------+------+---------------------------------------------------------------------------------------------------------------------------+ | 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
関連ドキュメント
アービトレーションサービスに関する詳細情報は、以下を参照してください: