ノードの置換は、ハードウェア障害や容量調整(異なる仕様のマシンへの置き換え)のシナリオに適用されます。置換後のクラスターのノード数は変わりません。ノードの置換は一連の運用操作の組み合わせです。すなわち、まず新しいノードを追加してレプリカを移行し、その後古いノードを削除します。全体として時間がかかります。
手順
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:削除する古いノードが属するZone。
例:
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である場合、ノードはまだ削除中であることを意味します。
関連ドキュメント
ノードに関するその他の運用操作については、以下を参照してください: