This topic describes how to use obd commands to upgrade OceanBase Database.
Overview
You can upgrade OceanBase Database in the following two ways. Choose the one that suits your situation:
Method 1: If your server can access the Internet or your configured image repository contains the RPM packages for updating OceanBase Database, you can upgrade OceanBase Database online. 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 packages for updating OceanBase Database, you must first add the RPM packages for updating OceanBase Database to your local image repository by running 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 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 can be used to upgrade 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 hash value of the oceanbase-ce image is the string in the last column of the output.
| 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(Optional) Check the primary_zone configuration of tenants in the cluster.
Note
This step is required only when the target version to be upgraded 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 other tenants is RANDOM. If it is, execute the following command to configure different priorities for zones in 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=790596d146bd22abfbd87faf6bcacddd0d6936dafe0ff6958640bdb833256a48Here is an example where 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
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 configure the RPM package of OceanBase Database by using the
obd mirror clonecommand to add the RPM package of the updated OceanBase Database to the local image repository or by downloading and installing the all-in-one installation package of the corresponding version of OceanBase Database.Method 1: Download the RPM package of OceanBase Database and its dependent libraries 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 downloaded 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 OceanBase Software Download Center, copy the installation package to the server where obd is installed, and execute the following command to decompress and install it.
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 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 to be upgraded 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 other tenants is RANDOM. If it is, execute the following command to configure different priorities for zones in 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, execute 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 must 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 execute the following command to view the database version.
obclient [oceanbase]> SELECT version();
