首批通过分布式安全可靠测评,为关键业务系统打造
暂停和恢复 Balance Job
更新时间:2026-03-07 12:30:24
当租户有正在执行的 Balance Job 时,又有其他紧急变更需要执行,为了防止该 Balance Job 的执行影响紧急变更,用户可以选择先暂停当前正在执行的 Balance Job,待紧急变更执行完后,再恢复该 Job,继续执行。
使用限制
暂停或恢复 Balance Job 的操作只能在主库(即主租户)上执行。
暂停或恢复 Balance Job 时,要求该 Balance Job 的状态不能是
CANCELING。
暂停正在进行的 Balance Job
系统租户暂停用户租户上正在进行的 Balance Job
使用
root用户登录到集群的sys租户。连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A获取租户相关信息。
obclient(root@sys)[oceanbase]> SELECT TENANT_ID, TENANT_NAME, TENANT_ROLE FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name = 'mq_t1';查询结果的示例如下:
+-------------+-----------+-------------+ | TENANT_NAME | TENANT_ID | TENANT_ROLE | +-------------+-----------+-------------+ | mq_t1 | 1002 | PRIMARY | +-------------+-----------+-------------+ 1 row in set查询视图
CDB_OB_BALANCE_JOBS,获取当前正在执行的任务及状态。obclient(root@sys)[oceanbase]> SELECT TENANT_ID, JOB_ID, JOB_TYPE, STATUS FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE TENANT_ID = 1002;查询结果的示例如下:
+-----------+--------+--------------------+--------+ | TENANT_ID | JOB_ID | JOB_TYPE | STATUS | +-----------+--------+--------------------+--------+ | 1002 | 62944 | TRANSFER_PARTITION | DOING | +-----------+--------+--------------------+--------+ 1 row in set根据查询结果,当前 Balance Job 的状态为
DOING,不是CANCELING,可以暂停该 Job。执行以下语句,暂停该 Balance Job。
ALTER SYSTEM SUSPEND BALANCE JOB TENANT = 'tenant_name';示例如下:
obclient(root@sys)[oceanbase]> ALTER SYSTEM SUSPEND BALANCE JOB TENANT ='mq_t1';执行成功后,再次查询视图
CDB_OB_BALANCE_JOBS,可以看到当前任务的状态变为SUSPEND。obclient(root@sys)[oceanbase]> SELECT TENANT_ID, JOB_ID, JOB_TYPE, STATUS FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE TENANT_ID = 1002;查询结果如下:
+-----------+--------+--------------------+---------+ | TENANT_ID | JOB_ID | JOB_TYPE | STATUS | +-----------+--------+--------------------+---------+ | 1002 | 62944 | TRANSFER_PARTITION | SUSPEND | +-----------+--------+--------------------+---------+ 1 row in set
用户租户暂停本租户上正在进行的 Balance Job
MySQL 模式租户或 Oracle 模式租户的租户管理员连接数据库。
连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@mysql_tenant#obdemo -p***** -A查询视图
DBA_OB_BALANCE_JOBS,获取当前正在执行的任务及状态。MySQL 模式Oracle 模式MySQL 模式下的查询语句如下:
obclient(root@mysql001)[oceanbase]> SELECT JOB_ID, JOB_TYPE, STATUS FROM oceanbase.DBA_OB_BALANCE_JOBS;Oracle 模式下的查询语句如下:
obclient(SYS@oracle001)[SYS]> SELECT JOB_ID, JOB_TYPE, STATUS FROM SYS.DBA_OB_BALANCE_JOBS;查询结果的示例如下:
+--------+--------------------+---------+ | JOB_ID | JOB_TYPE | STATUS | +--------+--------------------+---------+ | 62944 | TRANSFER_PARTITION | DOING | +--------+--------------------+---------+ 1 row in set根据查询结果,当前 Balance Job 的状态为
DOING,不是CANCELING,可以暂停该 Job。执行以下语句,暂停该 Balance Job。
obclient> ALTER SYSTEM SUSPEND BALANCE JOB;执行成功后,再次查询视图
DBA_OB_BALANCE_JOBS,可以看到当前任务的状态变为SUSPEND。MySQL 模式Oracle 模式MySQL 模式下的查询语句如下:
obclient(root@mysql001)[oceanbase]> SELECT JOB_ID, JOB_TYPE, STATUS FROM oceanbase.DBA_OB_BALANCE_JOBS;Oracle 模式下的查询语句如下:
obclient(SYS@oracle001)[SYS]> SELECT JOB_ID, JOB_TYPE, STATUS FROM SYS.DBA_OB_BALANCE_JOBS;查询结果的示例如下:
+--------+--------------------+---------+ | JOB_ID | JOB_TYPE | STATUS | +--------+--------------------+---------+ | 62944 | TRANSFER_PARTITION | SUSPEND | +--------+--------------------+---------+ 1 row in set
恢复被暂停的 Balance Job
系统租户恢复用户租户被暂停的 Balance Job
使用
root用户登录到集群的sys租户。连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A获取租户相关信息。
obclient(root@sys)[oceanbase]> SELECT TENANT_ID, TENANT_NAME, TENANT_ROLE FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name = 'mq_t1';查询结果如下:
+-------------+-----------+-------------+ | TENANT_NAME | TENANT_ID | TENANT_ROLE | +-------------+-----------+-------------+ | mq_t1 | 1002 | PRIMARY | +-------------+-----------+-------------+ 1 row in set查询视图
CDB_OB_BALANCE_JOBS,获取当前被暂停的任务及状态。obclient(root@sys)[oceanbase]> SELECT TENANT_ID, JOB_ID, JOB_TYPE, STATUS FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE TENANT_ID = 1002;查询结果的示例如下:
+-----------+--------+--------------------+---------+ | TENANT_ID | JOB_ID | JOB_TYPE | STATUS | +-----------+--------+--------------------+---------+ | 1002 | 62944 | TRANSFER_PARTITION | SUSPEND | +-----------+--------+--------------------+---------+ 1 row in set根据查询结果,当前 Balance Job 的状态为
SUSPEND。执行以下语句,恢复被暂停的 Balance Job。
ALTER SYSTEM SUSPEND BALANCE JOB TENANT = 'tenant_name';示例如下:
obclient(root@sys)[oceanbase]> ALTER SYSTEM RESUME BALANCE JOB TENANT ='mq_t1';执行成功后,再次查询视图
CDB_OB_BALANCE_JOBS,可以看到当前的任务状态变为DOING。obclient(root@sys)[oceanbase]> SELECT TENANT_ID, JOB_ID, JOB_TYPE, STATUS FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE TENANT_ID = 1002;查询结果的示例如下:
+-----------+--------+--------------------+---------+ | TENANT_ID | JOB_ID | JOB_TYPE | STATUS | +-----------+--------+--------------------+---------+ | 1002 | 62944 | TRANSFER_PARTITION | DOING | +-----------+--------+--------------------+---------+ 1 row in set
用户租户暂停本租户被暂停的 Balance Job
MySQL 模式租户或 Oracle 模式租户的租户管理员连接数据库。
连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@mysql_tenant#obdemo -p***** -A查询视图
DBA_OB_BALANCE_JOBS,获取当前被暂停的任务及状态。MySQL 模式Oracle 模式MySQL 模式下的查询语句如下:
obclient(root@mysql001)[oceanbase]> SELECT JOB_ID, JOB_TYPE, STATUS FROM oceanbase.DBA_OB_BALANCE_JOBS;Oracle 模式下的查询语句如下:
obclient(SYS@oracle001)[SYS]> SELECT JOB_ID, JOB_TYPE, STATUS FROM SYS.DBA_OB_BALANCE_JOBS;查询结果的示例如下:
+--------+--------------------+---------+ | JOB_ID | JOB_TYPE | STATUS | +--------+--------------------+---------+ | 62944 | TRANSFER_PARTITION | SUSPEND | +--------+--------------------+---------+ 1 row in set根据查询结果,当前 Balance Job 的状态为
SUSPEND。执行以下语句,恢复被暂停的 Balance Job。
obclient> ALTER SYSTEM RESUME BALANCE JOB;执行成功后,再次查询视图
DBA_OB_BALANCE_JOBS,可以看到当前的任务状态变为DOING。MySQL 模式Oracle 模式MySQL 模式下的查询语句如下:
obclient(root@mysql001)[oceanbase]> SELECT JOB_ID, JOB_TYPE, STATUS FROM oceanbase.DBA_OB_BALANCE_JOBS;Oracle 模式下的查询语句如下:
obclient(SYS@oracle001)[SYS]> SELECT JOB_ID, JOB_TYPE, STATUS FROM SYS.DBA_OB_BALANCE_JOBS;查询结果的示例如下:
+--------+--------------------+---------+ | JOB_ID | JOB_TYPE | STATUS | +--------+--------------------+---------+ | 62944 | TRANSFER_PARTITION | DOING | +--------+--------------------+---------+ 1 row in set