本記事では、obdコマンドを使用してOceanBaseデータベースをアップグレードする方法について説明します。
プランの紹介
obdを使用してOceanBaseデータベースをアップグレードする方法は以下の2つあります。実際の状況に応じて選択できます:
プラン1:マシンがインターネットに接続可能であるか、設定したイメージリポジトリに更新用のOceanBaseデータベースRPMパッケージが存在する場合は、オンラインアップグレードプランを参照してOceanBaseデータベースをアップグレードできます。詳細な手順については、プラン1:オンラインアップグレードを参照してください。
プラン2:マシンがインターネットに接続できず、設定したイメージリポジトリに更新用のOceanBaseデータベースRPMパッケージが存在しない場合は、まず
obd mirror cloneコマンドを使用して、更新用のOceanBaseデータベースRPMパッケージをローカルイメージライブラリに追加するか、OceanBaseデータベースの対応するバージョンのall-in-oneインストールパッケージをダウンロードしてインストールした後、OceanBaseデータベースのアップグレードを行います。詳細な手順については、プラン2:オフラインアップグレードを参照してください。
操作手順
説明
アップグレード対象のクラスタテナントにスタンバイテナントが存在する場合、まずスタンバイテナントが属するクラスタをアップグレードするか、switchoverを実行してプライマリ/スタンバイ切り替えを行う必要があります。
obdはEnterprise EditionおよびCommunity EditionのOceanBaseクラスタのアップグレードをサポートしています。この記事では、Community EditionのOceanBaseクラスタのアップグレードを例に、OceanBaseクラスタのアップグレード手順を説明します。
以下のコマンドを実行してリモートイメージリポジトリを有効にします。
obd mirror enable remote(オプション) 以下のコマンドを実行して、obdを最新バージョンにアップグレードします。
obd update以下のコマンドを実行して、リモートイメージリポジトリ内のOceanBaseデータベースバージョンを照会します。
obd mirror list oceanbase.community.stable | grep oceanbase-ce出力は次のとおりで、最後の列の文字列が oceanbase-ce の対応するバージョンのハッシュ値です。
| oceanbase-ce | 3.1.0 | 1.el7 | x86_64 | 9decc4788a7fc6cc2082ac1668f287f60f4a3b8d05a58da094605aa2f19d18fc | | oceanbase-ce | 3.1.0 | 2.el7 | x86_64 | 642cceea884f64860f231701351efb9a1156c46664b49a65f82806f9dab704a2 | | oceanbase-ce | 3.1.0 | 3.el7 | x86_64 | 9a21232c8ee420f6a5dad043ee12aed2efe9796478780ea04077622300b6bac8 | | oceanbase-ce | 3.1.1 | 1.el7 | x86_64 | 37be8ed5ea3a263a5a509f0ee553a208a3d4b63887a8c81a2efda7256e4838e9 | | oceanbase-ce | 3.1.1 | 4.el7 | x86_64 | d94d9856ec521fe0a54f21bb2a33739c20367e8388da937fd0fcd2e54364ae96 | | oceanbase-ce | 3.1.2 | 10000392021123010.el7 | x86_64 | f38723204d49057d3e062ffad778edc1552a7c114622bf2a86fea769fbd202ea | | oceanbase-ce | 3.1.3 | 10000292022032916.el7 | x86_64 | bb5dcd5d56e84a30bfecd4173455c84952819db7c37619c1cedbb375054f1acb | | oceanbase-ce | 3.1.3 | 10100032022041510.el7 | x86_64 | 589c4f8ed2662835148a95d5c1b46a07e36c2d346804791364a757aef4f7b60d | | oceanbase-ce | 3.1.4 | 100000112022102717.el7 | x86_64 | 25b25df19e27d0844fd3d0632da010b7ac33ac454144107ca8b10d337e2f4f68 | | oceanbase-ce | 3.1.4 | 10000092022071511.el7 | x86_64 | 30a7241f8781d306dc4d008f266e9321876b1e6448bbc4aaf15ab6631b5d2715 | | oceanbase-ce | 3.1.4 | 102000012022120715.el7 | x86_64 | 033f86169a145d76499eb2730dbd49c4e657ffbacd7bd7a860522d7981a68d6d | | oceanbase-ce | 3.1.4 | 103000102023020719.el7 | x86_64 | 6980507073d6e7b91fceb9549c0e68a767f47194d961112d73106e2f26952077 | | oceanbase-ce | 3.1.5 | 100000252023041721.el7 | x86_64 | d3629804ab753a7248a9ba80fb111f6594411820000aa7b3f958cda3f8b12dd4 | | oceanbase-ce | 4.0.0.0 | 100000272022110114.el7 | x86_64 | 759074414c7b7b723013855353f62a7ba0aae0f493216ef2511825850ce77b51 | | oceanbase-ce | 4.0.0.0 | 100000282022112511.el7 | x86_64 | debb18ab3c0b3d16f145c41cd21c30686863580b721d45ddaa068e6309e03b64 | | oceanbase-ce | 4.0.0.0 | 102000032022120718.el7 | x86_64 | c63bb73384b17d74299b34fe3aceb0ae310fd319d2ccdb1acd39f31ba6673198 | | oceanbase-ce | 4.0.0.0 | 103000022023011215.el7 | x86_64 | ca467ed00a5e717f40d360ba9d08252595f4ce9de87c81e6006858fbae5755fa | | oceanbase-ce | 4.1.0.0 | 100000192023032010.el7 | x86_64 | a4a092156b5cfe6708a25813633145e0bbd75170e01e30b5c4b88fb230e10903 | | oceanbase-ce | 4.1.0.0 | 100000202023040520.el7 | x86_64 | b56ec3d6e75fd01da65abe0ebb8f8b6455d6a8563c77491ee3d19b33abc40e53 | | oceanbase-ce | 4.1.0.0 | 101000022023050809.el7 | x86_64 | fe7c4d26f18534e4116f75ddf8ecea59bfdba221e6d43c0f7ea6a24c118c3858 | | oceanbase-ce | 4.1.0.0 | 101010022023051821.el7 | x86_64 | 66882706a45d94c379dce7fd6c0b3c9c33cd780e95658d3a475029013a4b3451 | | oceanbase-ce | 4.1.0.1 | 102000042023061314.el7 | x86_64 | 126aa046ed03e191aad2481b1e4f82f43bb0017befc3b9569f4c8e215313c8ef | | oceanbase-ce | 4.1.0.2 | 103010012023082519.el7 | x86_64 | 3473fe01f6c5325a29bd325183377d102ea1f9cf1cd8bb5a0f36fac9852983cf | | oceanbase-ce | 4.2.0.0 | 100000152023080109.el7 | x86_64 | 1cbd1fde8c6d7695015265da09738478c97e0e2f908fca6745dc9cc531860e74 | | oceanbase-ce | 4.2.0.0 | 100010022023081817.el7 | x86_64 | 5cb4adf7a98754c09a82edadaf8f9485bfd6376184e4fe3109e8f607899cf8cf | | oceanbase-ce | 4.2.0.0 | 100010032023083021.el7 | x86_64 | 790596d146bd22abfbd87faf6bcacddd0d6936dafe0ff6958640bdb833256a48 | # その他の出力は省略(オプション) クラスタ内のテナントのprimary_zone構成を確認します。
説明
この手順は、アップグレード対象バージョンがV4.0.x、V4.1.x、またはV4.2.0 BETAの場合にのみ実行する必要があります。
rootユーザーでデータベースのsysテナントにログインし、以下のコマンドを実行してprimary_zone構成を確認します。
obclient [oceanbase]> select * from __all_tenant;出力は次のとおりです:
+----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+ | gmt_create | gmt_modified | tenant_id | tenant_name | zone_list | primary_zone | locked | collation_type | info | locality | previous_locality | default_tablegroup_id | compatibility_mode | drop_tenant_time | status | in_recyclebin | arbitration_service_status | +----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+ | 2023-09-08 15:04:32.205665 | 2023-09-08 15:04:32.205665 | 1 | sys | zone1;zone2;zone3 | RANDOM | 0 | 0 | system tenant | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | | -1 | 0 | -1 | NORMAL | 0 | DISABLED | | 2023-09-08 15:13:49.119008 | 2023-09-08 15:14:09.573693 | 1001 | META$1002 | zone1;zone2;zone3 | RANDOM | 0 | 0 | | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | | -1 | 0 | -1 | NORMAL | 0 | DISABLED | | 2023-09-08 15:13:49.126607 | 2023-09-08 15:14:09.733515 | 1002 | ocp | zone1;zone2;zone3 | RANDOM | 0 | 0 | | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | | -1 | 0 | -1 | NORMAL | 0 | DISABLED | +----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+出力では、sysテナント以外の他のテナントに対応するprimary_zone列の値がRANDOMであるかどうかに注意してください。そうである場合は、以下のコマンドを実行して、テナント内のZone構成に異なる優先順位を設定する必要があります。
obclient [oceanbase]> ALTER TENANT ocp primary_zone='zone1';ALTER TENANTコマンドの詳細については、ALTER TENANT記事を参照してください。
OceanBaseデータベースのコンパクション操作を実行します。
rootユーザーでデータベースのsysテナントにログインし、以下のコマンドを実行してコンパクション操作を実行します。
obclient [oceanbase]> ALTER SYSTEM MAJOR FREEZE;以下のコマンドを実行して、コンパクションが完了したかどうかを確認します。
obclient [oceanbase]> select name,value from oceanbase.__all_zone where name='frozen_version' or name='last_merged_version'; #または obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_MAJOR_COMPACTION\Goceanbase.CDB_OB_MAJOR_COMPACTIONビューの出力フィールドについては、oceanbase.CDB_OB_MAJOR_COMPACTION記事を参照してください。コンパクション完了後、以下のコマンドを実行してOceanBaseデータベースをアップグレードします。
obd cluster upgrade obtest -c oceanbase-ce -V 4.2.0.0 --usable=790596d146bd22abfbd87faf6bcacddd0d6936dafe0ff6958640bdb833256a48ここでは、デプロイ済みクラスタ名をobtest、目標アップグレードバージョンを4.2.0として例を示します。実際のデプロイ済みクラスタ名と目標アップグレードバージョンに置き換える必要があります。この手順で使用されるコマンドの詳細については、Cluster commandsの
obd cluster upgradeコマンドを参照してください。アップグレードが成功したかどうかを検証します。
rootユーザーでOceanBaseデータベースのsysテナントにログインし、以下のコマンドを実行してデータベースのバージョンを確認します。
obclient [oceanbase]> SELECT version();
RPMパッケージの設定
obd mirror cloneを使用して、更新用のOceanBaseデータベースのRPMパッケージをローカルイメージリポジトリに追加するか、OceanBaseデータベースの対応するバージョンのall-in-oneインストールパッケージをダウンロードしてインストールすることで、OceanBaseデータベースのRPMパッケージを設定できます。方法1:GitHubリポジトリのreleases noteまたはOceanBaseソフトウェアダウンロードセンターから必要なOceanBaseデータベースと対応する依存ライブラリのRPMパッケージを取得し、RPMパッケージをobdをインストールしたマシンにコピーします。RPMパッケージがあるディレクトリで以下のコマンドを実行して、ダウンロードしたインストールパッケージをローカルイメージリポジトリに追加します。
obd mirror clone oceanbase-ce-*.rpm方法2:OceanBaseソフトウェアダウンロードセンターから必要なOceanBaseデータベースの対応するバージョンのall-in-oneインストールパッケージをダウンロードし、インストールパッケージをobdをインストールしたマシンにコピーします。以下のコマンドを実行して解凍し、インストールします。
注意
OceanBaseデータベースをデプロイした際に使用したホストアカウント(例えばadmin)を使用して、all-in-oneインストールパッケージをインストールする必要があります。
[admin@test001 ~]$ tar -xzf oceanbase-all-in-one-*.tar.gz [admin@test001 ~]$ cd oceanbase-all-in-one/bin/ [admin@test001 bin]$ ./install.sh [admin@test001 bin]$ source ~/.oceanbase-all-in-one/bin/env.sh
以下のコマンドを実行して、リモートイメージリポジトリを閉じます。
obd mirror disable remote以下のコマンドを実行して、ローカルイメージリポジトリ内のOceanBaseデータベースバージョンを照会します。
obd mirror list local | grep oceanbase-ce出力は次のとおりです。最後の列の文字列が、oceanbase-ceの対応するバージョンのハッシュ値です。
| oceanbase-ce | 4.1.0.1 | 102000042023061314.el7 | x86_64 | d03fafa6fa8ceb0636e4db05b5b5f6c3ac2256a3 | | oceanbase-ce-libs | 4.1.0.1 | 102000042023061314.el7 | x86_64 | c3f797aae1ce258ec9be77898b94e4e7a501cd0f | | oceanbase-ce | 4.2.0.0 | 100010022023081817.el7 | x86_64 | bf178e82c99ca1324a3df9e1a21cbbb8f8c4d46c | | oceanbase-ce-libs | 4.2.0.0 | 100010022023081817.el7 | x86_64 | f77ba7e678acf0645889967391c847ca9cf684b6 |(オプション)クラスタ内のテナントのprimary_zone構成を確認する
説明
この手順は、アップグレード対象バージョンがV4.0.x、V4.1.x、およびV4.2.0 BETAバージョンの場合にのみ実行する必要があります。
rootユーザーでデータベースのsysテナントにログインし、以下のコマンドを実行してprimary_zone構成を確認します。
obclient [oceanbase]> select * from __all_tenant;出力は次のとおりです:
+----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+ | gmt_create | gmt_modified | tenant_id | tenant_name | zone_list | primary_zone | locked | collation_type | info | locality | previous_locality | default_tablegroup_id | compatibility_mode | drop_tenant_time | status | in_recyclebin | arbitration_service_status | +----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+ | 2023-09-08 15:04:32.205665 | 2023-09-08 15:04:32.205665 | 1 | sys | zone1;zone2;zone3 | RANDOM | 0 | 0 | system tenant | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | | -1 | 0 | -1 | NORMAL | 0 | DISABLED | | 2023-09-08 15:13:49.119008 | 2023-09-08 15:14:09.573693 | 1001 | META$1002 | zone1;zone2;zone3 | RANDOM | 0 | 0 | | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | | -1 | 0 | -1 | NORMAL | 0 | DISABLED | | 2023-09-08 15:13:49.126607 | 2023-09-08 15:14:09.733515 | 1002 | ocp | zone1;zone2;zone3 | RANDOM | 0 | 0 | | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | | -1 | 0 | -1 | NORMAL | 0 | DISABLED | +----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+出力では、sysテナント以外の他のテナントに対応するprimary_zone列の値がRANDOMであるかどうかに注目する必要があります。そうである場合は、以下のコマンドを実行して、テナント内のゾーンに異なる優先順位を設定する必要があります。
obclient [oceanbase]> ALTER TENANT ocp primary_zone='zone1';ALTER TENANTコマンドの詳細については、ALTER TENANT記事を参照してください。
OceanBaseデータベースのコンパクション操作を実行する
rootユーザーでデータベースのsysテナントにログインし、以下のコマンドを実行してコンパクション操作を実行します。
obclient [oceanbase]> ALTER SYSTEM MAJOR FREEZE;以下のコマンドを実行して、コンパクションが完了したかどうかを確認します。
obclient [oceanbase]> select name,value from oceanbase.__all_zone where name='frozen_version' or name='last_merged_version'; #または obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_MAJOR_COMPACTION\Goceanbase.CDB_OB_MAJOR_COMPACTIONビューの出力フィールドについては、oceanbase.CDB_OB_MAJOR_COMPACTION記事を参照してください。コンパクション完了後、以下のコマンドを実行してOceanBaseデータベースをアップグレードします。
obd cluster upgrade obtest -c oceanbase-ce -V 4.2.0.0 --usable=bf178e82c99ca1324a3df9e1a21cbbb8f8c4d46cここでは、デプロイ済みのクラスタ名をobtest、目標アップグレードバージョンを4.2.0としています。実際のデプロイ済みのクラスタ名と目標アップグレードバージョンに置き換える必要があります。この手順で使用されるコマンドの詳細については、Cluster commandsの
obd cluster upgradeコマンドを参照してください。アップグレードが成功したかどうかを検証する
rootユーザーでOceanBaseデータベースのsysテナントにログインし、以下のコマンドを実行してデータベースバージョンを確認します。
obclient [oceanbase]> SELECT version();