ALTER SYSTEM 语句用来对 OceanBase 发送命令,执行某项指定操作。

BOOTSTRAP

描述

该语句用于自举 OceanBase 集群。

格式

  1. alter_system_bootstrap_stmt:
  2. ALTER SYSTEM BOOTSTRAP opt_cluster_type region_zone_server_list;
  3. opt_cluster_type:
  4. [CLUSTER cluster_role]
  5. cluster_role:
  6. PRIMARY | STANDBY
  7. region_zone_server_list:
  8. region_zone_server [, region_zone_server ...]
  9. region_zone_server:
  10. [region] zone server
  11. region:
  12. REGION [=] region_name
  13. zone:
  14. ZONE [=] zone_name
  15. server:
  16. SERVER [=] ip_port
  17. ip_port:
  18. 'STR_VALUE:INT_VALUE'

参数解释

系统自举时,需要指定 RootService 信息,多台 RootService 通过逗号(,)分隔。

参数

描述

region_name

指定 RootService 所在的地域,通过在“多地多中心”部署时指定。

zone_name

指定 RootService 所属的Zone。

ip_port

指定 RootService 的IP和端口。

PRIMARY | STANDBY

指定主备库。系统启动时需要指定主备库,如果不指定,默认采用主库启动。

示例

  • 指定一台 RootService:
  1. ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.218.248.178:55410';
  • 多台RootService通过逗号(,)分隔:
  1. ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '172.24.65.24:55410', ZONE 'zone2'
  2. SERVER '172.24.65.114:55410';
  • 启动备库
  1. ALTER SYSTEM BOOTSTRAP CLUSTER STANDBY ZONE 'zone1' SERVER '10.218.248.178:55410';

JOB

描述

该语句触发参数指定的后台任务。

格式

  1. alter_system_job_stmt:
  2. ALTER SYSTEM RUN JOB job_name
  3. [zone | server];

参数解释

参数

描述

JOB job_name

指定任务名称。有特殊字符时需要单引号,其它情况下单引号加与不加都支持,已支持的 JOB 有:

  • check_partition_table:OBServer 执行 partition table 核对删除任务
  • root_inspection:触发 RootService 自检

zone | server

该任务指定 Zone 或者 Server 执行。

示例

  • 触发 RootService 自检任务。
  1. ALTER SYSTEM RUN JOB "root_inspection";

MERGE

描述

该语句发起存储层合并。

格式

  1. alter_system_merge_stmt:
  2. ALTER SYSTEM merge_action;
  3. merge_action:
  4. MAJOR FREEZE
  5. | MINOR FREEZE
  6. [tenant_list | replica] [server_list] [zone]
  7. | START MERGE
  8. zone
  9. | {SUSPEND | RESUME} MERGE
  10. [zone]
  11. | CLEAN MERGE ERROR
  12. tenant_list:
  13. TENANT [=] (tenant_name_list)
  14. tenant_name_list:
  15. tenant_name [, tenant_name ...]
  16. replica:
  17. PARTITION_ID [=] 'partition_id%partition_count@table_id'
  18. server_list:
  19. SERVER [=] ip_port_list

参数解释

参数

描述

MAJOR FREEZE

发起每日合并。

MINOR FREEZE

发起转储。

START MERGE

开始每日合并。

{SUSPEND | RESUME} MERGE

暂停或恢复每日合并。

CLEAN MERGE ERROR

清理合并出错的标记。

tenant_name

指定租户转储。

PARTITION_ID

指定副本转储。

SERVER

指定机器转储。

zone

指定Zone开始合并。

示例

  • 发起每日合并。
  1. OceanBase(root@oceanbase)>alter system major freeze;
  2. Query OK, 0 rows affected (0.06 sec)

PARAMETER

描述

该语句用来修改配置项信息。

格式

  1. alter_system_parameter_stmt:
  2. ALTER SYSTEM [SET]
  3. parameter_name = expression [SCOPE = {MEMORY | SPFILE | BOTH}] [COMMENT [=} 'text']
  4. {SERVER [=] ip:port | ZONE [=] zone’};

参数解释

参数

描述

parameter_name

指定要修改的配置项名称。

expression

指定修改后的配置项的值。

COMMENT ‘text’

用于添加关于本次修改的注释。该参数为可选,建议不要省略。

SCOPE

指定本次配置项修改的生效范围。它的值主要有以下三种:

  • MEMORY:表明只修改内存中的配置项,修改立即生效,且本修改在 Server 重启以后会失效(目前暂时没有配置项支持这种方式)。
  • SPFILE:表明只修改配置表中的配置项值,当 Server 重启以后才生效。
  • BOTH:表明既修改配置表,又修改内存值,修改立即生效,且 Server重启以后配置值仍然生效。

SCOPE 默认值为 BOTH。对于不能立即生效的配置项,如果使用 BOTH 或 MEMORY,会报错 。

SERVER

只修改指定 Server 实例的某个配置项。

ZONE

表明本配置项的修改针对指定集群的特定 Server 类型,否则,针对所有集群的特定 Server 类型。

说明:

同时修改多个系统配置项时,用“,”隔开。

查看系统配置项的格式:SHOW PARAMETERS [LIKE 'pattern' | WHERE expr];

示例

  • 修改配置项 enable_sql_audit 的信息。
  1. OceanBase(root@oceanbase)>show parameters like 'enable_sql_audit';
  2. +------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
  3. | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |
  4. +------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
  5. | z1 | observer | 11.11.111.111 | 19510 | enable_sql_audit | NULL | True | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
  6. +------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
  7. 1 rows in set (0.02 sec)
  8. OceanBase(root@oceanbase)>alter system set enable_sql_audit = false scope = BOTH;
  9. Query OK, 0 rows affected (0.05 sec)
  10. OceanBase(root@oceanbase)>show parameters like 'enable_sql_audit';
  11. +------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
  12. | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |
  13. +------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
  14. | z1 | observer | 11.11.111.111 | 19510 | enable_sql_audit | NULL | False | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
  15. +------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
  16. 1 rows in set (0.02 sec)

REFRESH

描述

该语句系列用来触发刷新操作,包括刷新 schema、时区信息、各类缓存等。

格式

  1. alter_system_refresh_stmt:
  2. ALTER SYSTEM refresh_action;
  3. refresh_action:
  4. REFRESH SCHEMA
  5. [zone | server]
  6. | REFRESH TIME_ZONE_INFO
  7. | FLUSH cache_type CACHE
  8. [tenant_list] [GLOBAL]
  9. | FLUSH KVCACHE
  10. [tenant] [CACHE [=] cache_name]
  11. cache_type:
  12. ALL
  13. | LOCATION
  14. | CLOG
  15. | ILOG
  16. | COLUMN_STAT
  17. | BLOCK_INDEX
  18. | BLOCK
  19. | ROW
  20. | BLOOM_FILTER
  21. | SCHEMA
  22. | PLAN
  23. tenant:
  24. TENANT [=] tenant_name
  25. cache_name:

参数解释

参数

描述

REFRESH SCHEMA

刷新 Schema。正常情况下,当系统执行 DDL 操作, RootService 都会主动通知所有 OBServer 刷新 Schema。当某些 OBServer 发生异常,和 RootService 网络中断,此时需要手动刷新 Schema。刷新Schema 可以针对单独的机器,也可以针对某个集群。

REFRESH TIME_ZONE_INFO

通知集群中的所有 Server 更新本地的时区信息。

FLUSH cache_type CACHE

清空指定 Cache 指令。

FLUSH KVCACHE

清空 KV Cache 指令。

  • 如果指定 tenant 和 cache_name,则清除指定租户的指定 KV Cache
  • 如果只指定 tenant,则清除指定租户的全部KV Cache
  • 如果不指定 tenant 和 cache_name,则清除所有租户的全部KV Cache

示例

  • 刷新单台 OBServer 的 Schema:
  1. ALTER SYSTEM REFRESH SCHEMA SERVER='172.24.65.24:55410';
  • 刷新整个 Zone 的 Schema:
  1. ALTER SYSTEM REFRESH SCHEMA ZONE='zone1';

REPLICA

描述

该语句用来处理副本的迁移,复制,删除,副本类型转换,角色切换等行为。

格式

  1. alter_system_replica_stmt:
  2. ALTER SYSTEM replica_action;
  3. replica_action:
  4. SWITCH REPLICA
  5. {LEADER | FOLLOWER}
  6. {replica server | server [tenant_name] | zone [tenant_name]}
  7. | DROP REPLICA partition_id_desc
  8. replica server [create_timestamp] [zone] [FORCE]
  9. | {MOVE | COPY} REPLICA
  10. replica source destination
  11. | REPORT REPLICA partition_id_desc
  12.     {zone | server}
  13.   | RECYCLE REPLICA partition_id_desc
  14.     {zone | server}
  15.   | {ALTER | CHANGE | MODIFY} REPLICA  
  16. replica server [set] REPLICA_TYPE = replica_type
  17. source:
  18. SOURCE [=] 'ip:port'
  19. destination:
  20. DESTINATION [=] 'ip:port'
  21. partition_id_desc
  22. PARTITION_ID partition_id%partition_count@table_id
  23. partition_idx | partition_count | table_id | task_id:
  24. INT_VALUE
  25. create_timestamp:
  26. CREATE_TIMESTAMP [=] INT_VALUE
  27. tenant_name_list:
  28. tenant_name [, tenant_name ...]
  29. replica_type:
  30. {FULL | F}
  31. | {READONLY | R}
  32. | {LOGONLY | L}

参数解释

参数

描述

SWITCH REPLICA

Leader改选。

DROP REPLICA

副本删除。删除指定 OBServer 上的 Replica,必须指定 partition_idOBServer 地址以及 create_timestamp

{MOVE | COPY} REPLICA

副本迁移/复制,需要指定源 OBServer 和目的 OBServer ,以及partition_id

REPORT REPLICA

副本汇报,强制要求某个 OBServer 或者某个 Zone 内的所有 OBServer 进行 Replica 汇报。

RECYCLE REPLICA

回收无用副本。

{ALTER | CHANGE | MODIFY} REPLICA

修改副本属性,可以修改指定副本的副本类型。现在已经支持的副本类型包括:FULL/READONLY/LOGONLY。replica_type’的值可以是这三种副本类型的全称或者简写的首字符:’F/R/L’;大小写通用。

示例

  • 副本迁移
  1. ALTER SYSTEM MOVE REPLICA PARTITION_ID '0%4@1100611139403777'
  2. SOURCE '172.24.65.24:55410'
  3. DESTINATION '172.24.65.26:55410';
  • 删除副本
  1. ALTER SYSTEM DROP REPLICA PARTITION_ID '0%4@1100611139403777'
  2. SERVER '172.24.65.26:55410';
  • 修改副本类型
  1. ALTER SYSTEM CHANGE REPLICA PARTITION_ID '0%4@1100611139403777'
  2. SERVER '172.24.65.26:55410';
  3. CHANGE REPLICA_TYPE = 'L';
  • Leader改选
  1. ALTER SYSTEM SWITCH REPLICA LEADER PARTITION_ID '0%4@1100611139403777'
  2. SERVER '172.24.65.26:55410';

ROOTSERVICE

描述

切换 RS 的角色。

格式

  1. alter_system_rootservice_stmt:
  2. ALTER SYSTEM SWITCH ROOTSERVICE {LEADER | FOLLOWER} {zone | server};

参数解释

参数

描述

LEADER | FOLLOWER

把 RS 的角色设置为 Leader 或者 Follower。

zone | server

修改指定 Zone 或 Server 的 RS 角色。

示例

  • 把z1的 RS 切换为 Leader
  1. ALTER SYSTEM SWITCH ROOTSERVICE LEADER ZONE 'z1';

SERVER

描述

该语句维护系统中 OBServer 状态,控制 OBServer 的增、删、启、停等操作。

格式

  1. alter_system_server_stmt:
  2. ALTER SYSTEM server_action SERVER ip_port_list [zone];
  3. server_action:
  4. ADD
  5. | DELETE
  6. | CANCEL DELETE
  7. | START
  8. | STOP
  9. | FORCE STOP
  10. ip_port_list:
  11. ip_port [, ip_port ...]

参数解释

服务器状态图如下:

image.png

参数

描述

ip_port

指定 OBServer 的 IP 地址和端口

zone

如果指定 Zone,将会对待维护 Server 执行 Zone 校验。
ADD

新增服务器。

DELETE

删除服务器。

CANCEL DELETE

取消删除服务器。

START

启动服务器。

STOP

停止服务器。

FORCE STOP

强制停止服务器。

示例

  • 新增服务器
  1. ALTER SYSTEM ADD SERVER '172.24.65.113:55410' ZONE 'zone1';

注意事项

  1. 通过Add和Delete命令将服务器加入到服务列表,只有服务列表中的服务器才可以提供服务。

  2. Delete操作执行leader改选以及replica复制。

  3. Delete操作执行时间很长,因此,允许通过Cancel命令取消该操作。

THROTTLE

描述

该语句用来设置特征限流。

格式

  1. alter_system_throttle_stmt:
  2. ALTER SYSTEM throttle_action;
  3. throttle_action:
  4. ENABLE SQL THROTTLE [priority_option] [using_metric_option_list]
  5. | DISABLE SQL
  6. priority_option:
  7. FOR PRIORITY <= INT_VALUE
  8. using_metric_option_list:
  9. USING metric_option_list
  10. metric_option_list:
  11. metric_option [metric_option ...]
  12. metric_option:
  13. RT = {INT_VALUE | DECIMAL_VALUE}
  14. | CPU = {INT_VALUE | DECIMAL_VALUE}
  15. | IO = INT_VALUE
  16. | NETWORK = {INT_VALUE | DECIMAL_VALUE}
  17. | QUEUE_TIME = {INT_VALUE | DECIMAL_VALUE}
  18. | LOGICAL_READS = {INT_VALUE | DECIMAL_VALUE}

参数解释

参数

描述

ENABLE SQL

开启限流,后接限流特征及特征值

FOR PRIORITY

设定优先级,目的是只在部分session生效

RT

按请求执行时间限流

CPU

按CPU占用限流,暂未支持

IO

按IO次数限流,暂未支持

NETWORK

按传输的网络流量大小限流,暂未支持

QUEUE_TIME

按队列等待时间限流

LOGICAL_READS

按逻辑读次数限流,暂未支持

DISABLE SQL

关闭限流

示例

  • 对prioriy<=100的session上队列等待时间超过0.1s的请求限流。
  1. alter system enable sql throttle for priority <= 100 using queue_time=0.1

UNIT

描述

该语句负责 UNIT 资源迁移。

格式

  1. alter_system_unit_stmt:
  2. ALTER SYSTEM MIGRATE
  3. UNIT [=] unit_id DESTINATION [=] ip_port
  4. unit_id:
  5. INT_VALUE

参数解释

参数

描述

unit_id

UNIT 编号。

ip_port

将 UNIT 迁移到的目标 Server 地址。

示例

  • 将 UNIT 1001的资源迁移到 11.11.111.111:19510。
  1. OceanBase(root@oceanbase)>alter system migrate unit = 1001 destination = '11.11.111.111:19510';
  2. Query OK, 0 rows affected (0.05 sec)

ZONE

描述

该语句负责维护 Zone 的状态,如 Zone 的增、删、启、停等操作。

格式

  1. alter_system_zone_stmt:
  2. ADD ZONE zone_name
  3. [zone_option_list]
  4. | {ALTER | CHANGE | MODIFY} ZONE zone_name
  5. [SET] zone_option_list
  6. | {DELETE | START | STOP | FORCE STOP} ZONE zone_name
  7. zone_option_list:
  8. zone_option [, zone_option ...]
  9. zone_option:
  10. region
  11. | idc
  12. | ZONE_TYPE {READONLY | READWRITE}
  13. idc:
  14. STR_VALUE

参数解释

参数

描述

ADD ZONE新增Zone
{ALTER | CHANGE | MODIFY} ZONE

修改Zone的Region属性

说明:ALTER、CHANGE、MODIFY三者功能相同,可以使用任意命令来修改 Zone 的 Region 属性。

DELETE ZONE删除Zone,删除前需要保证Zone中没有可用的Server
START | STOP主动上下线Zone

示例

  • 删除Zone。
  1. OceanBase(root@oceanbase)>alter system delete zone 'z1';
  2. ERROR 4668 (HY000): The zone is not empty and can not be deleted. You should delete the servers of the zone. There are 1 servers alive and 0 not alive.

CLUSTER

描述

集群管理相关操作,可以新增、删除、修改集群级相关属性。

格式

  1. ALTER SYSTEM cluster_action cluster_name CLUSTER_ID INTNUM;
  2. cluster_action:
  3. ADD CLUSTER
  4. | REMOVE CLUSTER
  5. | ENABLE CLUSTER SYNCHRONIZATION
  6. | DISABLE CLUSTER SYNCHRONIZATION

参数解释

参数

描述

ADD CLUSTER新增一个备库。
REMOVE CLUSTER删除一个已经存在的备库。
ENABLE CLUSTER SYNCHRONIZATION允许一个备库的同步。
DISABLE CLUSTER SYNCHRONIZATION

禁掉一个备库的同步

示例

  • 新增备库
  1. ALTER SYSTEM ADD CLUSTER 'ob1.test' cluster_id = 1;

SWITCHOVER

描述

集群无损、有损切换语法,包括主库切成备库,备库切成主库。

格式

  1. ALTER SYSTEM commit_switchover_clause;
  2. commit_switchover_clause
  3. COMMIT TO SWITCHOVER TO PRIMARY
  4. | COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
  5. | ACTIVATE PHYSICAL STANDBY CLUSTER
  6. | CONVERT TO PHYSICAL STANDBY

参数解释

参数

描述

COMMIT TO SWITCHOVER TO PRIMARY备库切成主库,在备库上执行,并且旧主库已经切换成主库,集群中没有其他的备库先切换成主库。
COMMIT TO SWITCHOVER TO PHYSICAL STANDBY主库无损切换成备库,在主库上执行,并且备库已经同步成功。
ACTIVATE PHYSICAL STANDBY CLUSTER在主库宕机的情况下,把一个集群拉成主库。
CONVERT TO PHYSICAL STANDBY把一个主库切换成备库。

示例

  • 主库切换成备库
  1. ALTER SYSTEM COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
  • 备库切换成主库
  1. ALTER SYSTEM COMMIT TO SWITCHOVER TO PRIMARY
  • 主库宕机,备库切换成主库
  1. ALTER SYSTEM ACTIVATE PHYSICAL STANDBY CLUSTER
  • 旧主库重启,切成备库
  1. ALTER SYSTEM CONVERT TO PHYSICAL STANDBY

BALANCE TASK

描述

该语句用来清除没有正在调度的负载均衡任务。

格式

  1. ALTER SYSTEM REMOVE BALANCE TASK opt_tenant_list opt_zone_list opt_balance_task_type;
  2. opt_tenant_list
  3. TENANT [=] name,name_list
  4. opt_zone_list
  5. ZONE [=] zone_name, zone_list
  6. opt_balance_task_type
  7. ALL
  8. | MANUAL
  9. | AUTO

参数解释

参数

描述

opt_tenant_list租户列表,如果不指定,就会清除所有租户的任务。
opt_zone_listZone的列表,可不指定。
opt_balance_task_type

待清除的任务类型:

  • ALL:所有的任务;
  • AUTO:自动生成的任务;
  • MANUAL:用户手动发起的任务。

示例

  • 清除所有租户所有没有在调度的任务。
  1. ALTER SYSTEM REMOVE BALANCE TASK

CANCEL MIGRATE UNIT

描述

该语句用来取消 UNIT 的迁移。

格式

  1. ALTER SYSTEM CANCEL MIGRATE UNIT unit_id;

参数解释

参数

描述

unit_id

指定迁移的 UNIT 的 ID。

示例

  • 取消 UNIT 1001 的迁移。
  1. ALTER SYSTEM CANCEL MIGRATE UNIT 1001;

RESTORE

描述

该语句用来恢复租户的数据。

格式

  1. alter system restore dest_tenant from source_tenant at 'uri' until 'timestamp' with 'restore_option';

参数解释

参数

描述

dest_tenant

指恢复的新租户的名字。

source_tenant

指原集群的租户。

uri

指备份的时候设置的backup_dest。

timestamp

恢复的时间戳,需要大于等于最早备份的基线备份的 CDB_OB_BACKUP_SET_DETAILS的START_TIME,小于等于日志备份 CDB_OB_BACKUP_ARCHIVELOG_SUMMARY 的 MAX_NEXT_TIME。
restore_option

恢复选项,支持以下几种:

  • backup_cluster_name:源集群的名字,必选项
  • backup_cluster_id:源集群的cluster_id,必选项
  • pool_list:用户的资源池,必选项
  • locality:租户的locality信息,可选项
  • kms_encrypt:为 true 表示需要恢复的时候指定kms_encrypt_info,可选项

示例

  • 恢复租户的数据。
  1. alter system restore restored_trade from trade
  2. at 'oss://antsys-oceanbasebackup/backup_rd/20200323?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx'
  3. until ' 2020-03-23 08:59:45'
  4. with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';
  5. alter system restore restored_trade from trade
  6. at 'file:///data/nfs/physical_backup_test/20200520'
  7. until '2020-05-21 09:39:54.071670'
  8. with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool&locality=F@z1,F@z2,F@z3';

CHANGE TENANT

描述

该语句用来切换租户。

格式

  1. ALTER SYSTEM CHANGE TENANT tenant_name;
  2. ALTER SYSTEM CHANGE TENANT TENANT_ID [=] INTNUM;

参数解释

参数

描述

tenant_name

指定要切换到的租户名称。

TENANT_ID

指定要切换到的租户ID。

示例

  • 切换至ID为1001的租户。
  1. ALTER SYSTEM CHANGE TENANT TENANT_ID = 1001;

注意事项

  1. 需以系统租户身份登陆,普通租户无法执行该命令。
  2. 需直连OBServer执行,断连接后需重新执行。
  3. 不能在事务执行过程中执行该命令。
  4. 切换到非系统租户后,无法执行DDL操作。

BACKUP

描述

该语句用来触发备份。

格式

  1. 设置备份的介质路径 alter system set backup_dest = <backup_uri>
  2. 开启logarchiveSQL alter system archivelog
  3. 关闭logarchiveSQL: alter system noarchivelog
  4. 触发基线备份(只支持集群级别): alter system backup database;
  5. 取消当前备份: alter system cancel backup

参数解释

参数

描述

backup_uri

指定备份的路径,目前支持oss和file两种,具体格式参考示例。

示例

  • 设置备份的路径。
  1. alter system set backup_dest='oss://antsys-oceanbasebackup/backup_dir?host=xxx&access_id=xxx&access_key=xxx';
  2. alter system set backup_dest='file:///data/nfs/physical_backup_dir';

注意事项

需以系统租户身份登陆,普通租户无法执行该命令。