This topic describes how to use the obd commands to upgrade OceanBase Database.
Overview
You can upgrade OceanBase Database in the following two ways. Choose the one that suits your scenario:
Method 1: If your server can access the Internet or your configured image repository contains the RPM package of OceanBase Database for upgrade, you can upgrade OceanBase Database by using the online upgrade method. For more information, see Method 1: Online upgrade.
Method 2: If your server cannot access the Internet and your configured image repository does not contain the RPM package of OceanBase Database for upgrade, you must first add the RPM package of OceanBase Database for upgrade to your local image repository by using the
obd mirror clonecommand or download and install the all-in-one installation package of the corresponding version of OceanBase Database. Then, you can upgrade OceanBase Database. For more information, see Method 2: Offline upgrade.
Procedure
Note
If the cluster tenant to be upgraded has a standby tenant, you must first upgrade the cluster where the standby tenant resides or perform a switchover to switch the primary and standby tenants.
obd supports upgrading OceanBase clusters of Enterprise Edition and Community Edition. This topic describes how to upgrade an OceanBase cluster of Community Edition.
Run the following command to enable the remote image repository:
obd mirror enable remote(Optional) Run the following command to upgrade obd to the latest version:
obd updateRun the following command to query the OceanBase Database version in the remote image repository:
obd mirror list oceanbase.community.stable | grep oceanbase-ceThe output is as follows. The hash value in the last column corresponds to the version of 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 | # Omitted subsequent output(Optional) Check the primary_zone configuration of tenants in the cluster
Note
This step is required only when the target version for upgrade is V4.0.x, V4.1.x, or V4.2.0 BETA.
Log in to the sys tenant of the database as the root user and execute the following command to check the primary_zone configuration.
obclient [oceanbase]> select * from __all_tenant;The output is as follows:
+----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+ | 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 | +----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+Check whether the value of the primary_zone column for tenants other than the sys tenant is RANDOM. If yes, execute the following command to configure different priorities for zones of the tenant.
obclient [oceanbase]> ALTER TENANT ocp primary_zone='zone1';For more information about the ALTER TENANT command, see ALTER TENANT.
Perform a major compaction on OceanBase Database
Log in to the sys tenant of the database as the root user and execute the following command to perform a major compaction.
obclient [oceanbase]> ALTER SYSTEM MAJOR FREEZE;Execute the following command to check whether the major compaction is completed.
obclient [oceanbase]> select name,value from oceanbase.__all_zone where name='frozen_version' or name='last_merged_version'; # or obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_MAJOR_COMPACTION\GFor more information about the fields in the
oceanbase.CDB_OB_MAJOR_COMPACTIONview, see oceanbase.CDB_OB_MAJOR_COMPACTION.After the major compaction is completed, execute the following command to upgrade OceanBase Database.
obd cluster upgrade obtest -c oceanbase-ce -V 4.2.0.0 --usable=790596d146bd22abfbd87faf6bcacddd0d6936dafe0ff6958640bdb833256a48In this example, the cluster name is obtest and the target version is 4.2.0. You need to replace the cluster name and target version with the actual values. For more information about the
obd cluster upgradecommand, see Cluster commands.Verify whether the upgrade is successful.
Log in to the sys tenant of OceanBase Database as the root user and execute the following command to check the database version.
obclient [oceanbase]> SELECT version();
Configure the RPM package
You can add the RPM package of the updated OceanBase Database to the local image repository by using the
obd mirror clonecommand, or download and install the all-in-one installation package of the corresponding version of OceanBase Database.Method 1: Obtain the RPM package of OceanBase Database and the corresponding dependency library from the releases note or OceanBase Software Download Center, copy the RPM package to the server where obd is installed, and execute the following command in the directory where the RPM package is stored to add the installation package to the local image repository.
obd mirror clone oceanbase-ce-*.rpmMethod 2: Download the all-in-one installation package of the corresponding version of OceanBase Database from the OceanBase Software Download Center, copy the installation package to the server where obd is installed, and execute the following command to decompress and install the package.
Notice
You must use the host account used for deploying OceanBase Database (such as admin) to install the all-in-one installation package.
[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
Execute the following command to disable the remote image repository.
obd mirror disable remoteExecute the following command to query the OceanBase Database version in the local image repository.
obd mirror list local | grep oceanbase-ceThe output is as follows. The string in the last column is the hash value of the oceanbase-ce package of the corresponding version.
| 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 |(Optional) Check the primary_zone configuration of tenants in the cluster
Note
This step is required only when the target version for upgrade is V4.0.x, V4.1.x, or V4.2.0 BETA.
Log in to the sys tenant of the database as the root user and execute the following command to check the primary_zone configuration.
obclient [oceanbase]> select * from __all_tenant;The output is as follows:
+----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+ | 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 | +----------------------------+----------------------------+-----------+-------------+-------------------+--------------+--------+----------------+---------------+---------------------------------------------+-------------------+-----------------------+--------------------+------------------+--------+---------------+----------------------------+Check whether the value of the primary_zone column for tenants other than the sys tenant is RANDOM. If yes, execute the following command to configure different priorities for zones of the tenant.
obclient [oceanbase]> ALTER TENANT ocp primary_zone='zone1';For more information about the ALTER TENANT command, see ALTER TENANT.
Perform a major compaction on OceanBase Database
Log in to the sys tenant of the database as the root user and execute the following command to perform a major compaction.
obclient [oceanbase]> ALTER SYSTEM MAJOR FREEZE;Execute the following command to check whether the major compaction is completed.
obclient [oceanbase]> select name,value from oceanbase.__all_zone where name='frozen_version' or name='last_merged_version'; # or obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_MAJOR_COMPACTION\GFor more information about the output fields of the
oceanbase.CDB_OB_MAJOR_COMPACTIONview, see oceanbase.CDB_OB_MAJOR_COMPACTION.After the major compaction is completed, run the following command to upgrade OceanBase Database.
obd cluster upgrade obtest -c oceanbase-ce -V 4.2.0.0 --usable=bf178e82c99ca1324a3df9e1a21cbbb8f8c4d46cIn this example, the cluster name is obtest and the target upgrade version is 4.2.0. You need to replace the cluster name and target upgrade version with the actual values. For more information about the commands used in this step, see the
obd cluster upgradecommand in Cluster commands.Verify whether the upgrade is successful.
Log in to the sys tenant of OceanBase Database as the root user and run the following command to view the database version.
obclient [oceanbase]> SELECT version();
