This topic describes how to upgrade OceanBase Migration Service (OMS) Community Edition to V3.3.1 in multiple-node deployment mode.
Procedure
If high availability (HA) is enabled, disable it first.
Log on to the OMS Community Edition console.
In the left-side navigation pane, choose System Management > System Parameters.
On the System Parameters page, find
ha.config.Click the edit icon in the Value column of the parameter.
In the Modify Value dialog box, set
enabletofalseto disable HA.
Back up the databases.
Log on to the two hosts where the container of OMS Community Edition V3.3.0 is deployed by using their respective IP addresses, and suspend the container.
sudo docker stop ${CONTAINER_NAME}Notice:
CONTAINER_NAMEspecifies the name of the container.Log on to the cluster management (CM) heartbeat database specified in the configuration file and delete some useless records to reduce the backup time.
# Log on to the CM heartbeat database specified in the configuration file. mysql -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> -Dcm_hb_330 # Delete useless records. # Obtain the auto-increment ID from heatbeat_sequence, which reports the heartbeat. delete from heatbeat_sequence where id < (select max(id) from heatbeat_sequence);Run the following commands to back up the rm, cm, and cm_hb databases as SQL files and make sure that the sizes of the files are not 0.
If you have deployed databases in multiple regions, you must back up the cm_hb database in all regions. For example, if you have deployed databases in two regions, you must back up the following four databases: rm, cm, cm_hb1, and cm_hb2.
mysqldump -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> --triggers=false rm_330 > /home/admin/rm_330.sql mysqldump -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> --triggers=false cm_330 > /home/admin/cm_330.sql mysqldump -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> --triggers=false cm_hb_330 > /home/admin/cm_hb_330.sqlParameter Description -h The IP address of the host from which the data is exported. -P The port number used to connect to the database. -u The username used to connect to the database. -p The password used to connect to the database. --triggers The data export trigger. The default value is false, which disables data export. rm_330, cm_330, and cm_hb_330 Specify to back up the rm, cm, and cm_hb databases to SQL files named in the format of database name > SQL file storage path.sql. You need to replace the values based on the actual environment.
Start the new container of OMS Community Edition V3.3.1.
You can access the OMS Community Edition console by using an HTTP or HTTPS URL. To securely access the OMS Community Edition console, install a self-signed SSL certificate and mount it to the specified directory in the container. The certificate is not required for HTTP access.
Notice:
Before you start the container of OMS Community Edition V3.3.1, make sure that the three disk mounting paths of OMS Community Edition are the same as those before the upgrade.
You can run thesudo docker inspect ${CONTAINER_NAME} | grep -A5 'Binds'command to view the paths.The
-e IS_UPGRADE=trueparameter is provided in OMS Community Edition V3.3.1. This parameter is provided only to support OMS upgrade and must be specified when you upgrade OMS Community Edition.
OMS_HOST_IP=xxx CONTAINER_NAME=oms_xxx IMAGE_TAG=feature_x.x.x docker run -dit --net host \ -v /data/config.yaml:/home/admin/conf/config.yaml \ -v /data/oms/oms_logs:/home/admin/logs \ -v /data/oms/oms_store:/home/ds/store \ -v /data/oms/oms_run:/home/ds/run \ # If you mount the SSL certificate in the OMS container, you must set the following two parameters. -v /data/oms/https_crt:/etc/pki/nginx/oms_server.crt -v /data/oms/https_key:/etc/pki/nginx/oms_server.key -e OMS_HOST_IP=${OMS_HOST_IP} \ -e IS_UPGRADE=true \ --privileged=true \ --pids-limit -1 \ --ulimit nproc=65535:65535 \ --name ${CONTAINER_NAME} \ work.oceanbase-dev.com/obartifact-store/oms:${IMAGE_TAG}Parameter Description OMS_HOST_IP The IP address of the host.
Notice:
The value ofOMS_HOST_IPis different for each node.CONTAINER_NAME The name of the container. IMAGE_TAG The tag of the image in the feature_x.x.x-ce format. /data/oms/oms_logs
/data/oms/oms_store
/data/oms/oms_runYou can replace /data/oms/oms_logs,/data/oms/oms_store, and/data/oms/oms_runwith the mount directories created on the server where OMS Community Edition is deployed. The mount directories store the logs generated during the operating of OMS and files generated by the Store and synchronization components, respectively, to persistently retain the files on the server.
Notice:
The mount directories must remain unchanged during subsequent redeployment or upgrades./home/admin/logs
/home/ds/store
/home/ds/run/home/admin/logs,/home/ds/store, and/home/ds/runare default directories in the container and cannot be modified./data/oms/https_crt (optional)
/data/oms/https_key (optional)The mount directory of the SSL certificate in the OMS container. If you mount an SSL certificate, the NGINX service in the OMS Community Edition container runs in HTTPS mode. In this case, you can access the OMS console by using only the HTTPS URL. IS_UPGRADE To upgrade OMS Community Edition, you must set the IS_UPGRADEparameter totrue.privileged Specifies whether to grant extended privileges on the container. pids-limit Specifies whether to limit the number of container processes. The value -1 indicates that the number is unlimited. ulimit nproc The maximum number of user processes. Perform metadata initialization in the root directory.
bash /root/docker_init.shNote:
After you run the preceding command, the script automatically implements schema changes of the three OMS databases.
If the same configuration file is used for multiple
cm_nodesin the same region, you need to execute thedocker_init.shscript only once in a region.
If different configuration files are used for multiplecm_nodesin the same region, you need to execute thedocker_init.shscript once on each node.
After you upgrade OMS Community Edition on two nodes, enable HA on the System Parameters page, and configure the parameters.
Log on to the OMS Community Edition console.
In the left-side navigation pane, choose System Management > System Parameters.
On the System Parameters page, find
ha.config.Click the edit icon in the Value column of the parameter.
In the Modify Value dialog box, set
enabletotrueto enable HA, and record the time T2.You can also set the
perceiveStoreClientCheckpointparameter totrue. After that, you do not need to record T1 and T2.If you set the
perceiveStoreClientCheckpointparameter tofalse, you need to modify the value of therefetchStoreIntervalMinparameter based on your business needs, which specifies the time interval, in minutes, for pulling data from the Store component. The value must be greater than T2 minus T1.If you set the
perceiveStoreClientCheckpointparameter totrue, you can use the default value of therefetchStoreIntervalMinparameter. HA is enabled, so the system starts the Store component based on the earliest request time of downstream components minus the value of therefetchStoreIntervalMinparameter. For example, if the earliest request time of the downstream Connector or JDBC-Connector component is 12:00:00 and therefetchStoreIntervalMinparameter is set to 30 minutes, the system starts the Store component at 11:30:00.
The following table shows the changes of components after HA is enabled.
Link type Link or component status before upgrade After upgrade (HA disabled) After upgrade (HA enabled) Migration The link and components run normally. - The link runs normally.
- Exceptions occur in the Store and JDBCWriter components.
JDBCWriter is automatically started. Migration The link fails. - The link fails.
- Exceptions occur in the Store and JDBCWriter components.
- JDBCWriter is automatically started.
- You must manually recover the link.
Synchronization The link and components run normally. - The link runs normally.
- Exceptions occur in the Store and Connector components.
- Data is pulled from the Store component at the interval specified by the
refetchStoreIntervalMinparameter. The default interval is 30 minutes. - The Connector component is restarted.
Synchronization - The link is suspended.
- The Connector component is suspended.
- The Store component runs normally.
- The link is suspended.
- The Connector component is suspended.
- The Store component becomes abnormal.
- Data is pulled from the Store component at the interval specified by the
refetchStoreIntervalMinparameter.`` The default interval is 30 minutes. - The Connector component is restarted.
- You must manually recover the link.
Optional. To roll back, perform the following steps:
Follow the instructions in Step 1 to disable HA.
Suspend the new container and record the time T3.
sudo docker stop ${CONTAINER_NAME}Connect to the MetaDB and run the following commands:
drop database rm_330; drop database cm_330; drop database cm_hb_330; create database rm_330; create database cm_330; create database cm_hb_330;Recover the original databases based on the SQL files created in Step 2.
mysql -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> -e "source /home/admin/rm_330.sql" -Drm_330 mysql -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> -e "source /home/admin/cm_330.sql" -Dcm_330 mysql -hxxx.xxx.xxx.1 -P<port> -u<username> -p<password> -e "source /home/admin/cm_hb_330.sql" -Dcm_hb_330Restart the container of OMS Community Edition V3.3.0-CE.
sudo docker restart ${CONTAINER_NAME}On the System Parameters page, enable HA and set the
refetchStoreIntervalMinparameter.