ノードの交換は、ハードウェア障害や容量不足の場合(異なる仕様のマシンへの交換)に適用され、交換後もクラスタのノード数は変更されません。ノードの交換は一連の運用操作であり、まず新しいノードを追加してレプリカを移行し、その後古いノードを削除します。全体として時間がかかります。
操作手順
rootユーザーでクラスタのsysテナントにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に基づいてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aデータベース接続の詳細な操作ガイドについては、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
置き換えるノードが存在するゾーンに新しいノードを追加します。
新しいノードの追加手順の詳細については、ノードの追加を参照してください。
古いノード上のUnitを新しいノードに移行します。
DBA_OB_SERVERSビューを照会して、置き換えるノードの関連情報を取得します。クエリ例は以下のとおりです:
obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_SERVERS; +-------------+----------+----+--------------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+ | SVR_IP | SVR_PORT | ID | ZONE | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME | MODIFY_TIME | BUILD_VERSION | +-------------+----------+----+--------------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+ | 172.xx.xx.xx| 2882 | 6 | sa128_obv4_2 | 2881 | NO | ACTIVE | 2022-12-30 16:17:03.173519 | NULL | NULL | 2022-12-30 16:08:04.749100 | 2023-01-04 11:48:36.589270 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 172.xx.xx.xx| 2882 | 4 | sa128_obv4_3 | 2881 | NO | ACTIVE | 2022-12-30 16:36:35.567437 | NULL | NULL | 2022-12-30 16:08:02.755200 | 2023-01-04 14:13:36.976548 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 172.xx.xx.xx| 2882 | 3 | sa128_obv4_3 | 2881 | NO | ACTIVE | 2022-12-12 12:42:00.054759 | NULL | NULL | 2022-11-03 15:37:09.530894 | 2022-12-22 14:43:26.717736 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 172.xx.xx.xx| 2882 | 1 | sa128_obv4_1 | 2881 | NO | ACTIVE | 2022-12-12 12:25:17.555651 | NULL | NULL | 2022-11-03 15:37:08.990683 | 2022-12-12 12:25:18.553763 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 172.xx.xx.xx| 2882 | 2 | sa128_obv4_2 | 2881 | YES | ACTIVE | 2022-12-12 11:46:37.222980 | NULL | NULL | 2022-11-03 15:37:09.490511 | 2022-12-12 11:47:31.075335 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 172.xx.xx.xx| 2882 | 5 | sa128_obv4_1 | 2881 | NO | ACTIVE | 2022-12-30 16:25:45.420996 | NULL | NULL | 2022-12-30 16:08:03.928478 | 2023-01-04 11:48:36.578231 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | +-------------+----------+----+--------------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+ 6 rows in setDBA_OB_SERVERSビューの詳細については、DBA_OB_SERVERSを参照してください。ノードIPアドレスに基づいて、置き換えるノードのUnitリストを照会します。
ステートメントは次のとおりです:
obclient [(none)]> SELECT unit_id FROM oceanbase.DBA_OB_UNITS WHERE SVR_IP = 'svr_ip';ここで、
svr_ipには実際の状況に応じて置き換えるノードのIPアドレスを入力する必要があります。クエリ例は以下のとおりです:
obclient [(none)]> SELECT unit_id FROM oceanbase.DBA_OB_UNITS WHERE SVR_IP = '172.xx.xx.xx'; +---------+ | unit_id | +---------+ | 1 | | 1002 | | 1016 | | 1024 | +---------+ 4 rows in setUnit移行タスクをコミットして、古いノード上のUnitを同一ゾーン内の他のノードに移行します。
ステートメントは次のとおりです:
obclient [(none)]> ALTER SYSTEM MIGRATE UNIT unit_id DESTINATION 'svr_ip:svr_port';関連パラメータの説明は以下のとおりです:
unit_id:移行するUnitのunit_id。svr_ip:svr_port:新しいノードのIPアドレスとRPCポート番号。ポート番号はデフォルトで2882です。
各コマンドは1つのUnitのみの移行をサポートしており、複数のUnitを移行する場合は、このコマンドを複数回実行する必要があります。
移行例は以下のとおりです:
obclient [(none)]> ALTER SYSTEM MIGRATE UNIT 1016 DESTINATION '172.xx.xx.xx:2882';oceanbase.DBA_OB_UNIT_JOBSビューを照会して、Unitの移行状況を確認します。obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_UNIT_JOBS WHERE JOB_TYPE = 'MIGRATE_UNIT'; +--------+--------------+------------+-------------+----------+----------------------------+----------------------------+-----------+---------+----------+------------+------------+-------------+ | JOB_ID | JOB_TYPE | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME | MODIFY_TIME | TENANT_ID | UNIT_ID | SQL_TEXT | EXTRA_INFO | RS_SVR_IP | RS_SVR_PORT | +--------+--------------+------------+-------------+----------+----------------------------+----------------------------+-----------+---------+----------+------------+------------+-------------+ | 4 | MIGRATE_UNIT | INPROGRESS | NULL | 0 | 2023-01-04 17:22:02.208219 | 2023-01-04 17:22:02.208219 | 1004 | 1006 | NULL | NULL |xx.xx.xx.106| 2882 | +--------+--------------+------------+-------------+----------+----------------------------+----------------------------+-----------+---------+----------+------------+------------+-------------+クエリ結果が空の場合、Unitの移行が完了したことを意味します。
Unit移行の詳細な操作と説明については、Unit移行を参照してください。
古いノード上のすべてのUnitの移行が完了したら、古いノードを削除します。
実際の操作は以下のとおりです:
以下のコマンドを実行して、古いノードを削除します。
ステートメントは次のとおりです:
obclient [(none)]> ALTER SYSTEM DELETE SERVER 'svr_ip:svr_port' [,'svr_ip:svr_port'...] [ZONE [=] 'zone_name']関連パラメータの説明は以下のとおりです:
svr_ip:削除対象の古いノードのIPアドレス。port:削除対象の古いノードのRPCポート番号。デフォルトは2882です。zone_name:削除対象の古いノードが属するゾーン。
例:
obclient [(none)]> ALTER SYSTEM DELETE SERVER "172.xx.xx.xx:2882" zone='zone1'操作が終了したら、
oceanbase.DBA_OB_SERVERSビューを照会して、古いノードが正常に削除されたかどうかを確認します。obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_SERVERS;リストから古いノードの情報が見つからない場合、削除が完了したことを意味します。リストにそのノードがまだ存在し、そのノードのステータスが
DELETINGである場合、そのノードはまだ削除中であることを意味します。
関連ドキュメント
ノード関連の運用保守操作の詳細については、以下を参照してください: