ALTER SYSTEM 语句用来对 OceanBase 数据库发送命令,执行某项指定操作。
BOOTSTRAP
描述
该语句用于自举 OceanBase 集群。
格式
alter_system_bootstrap_stmt:
ALTER SYSTEM BOOTSTRAP opt_cluster_type region_zone_server_list;
opt_cluster_type:
[CLUSTER cluster_role]
cluster_role:
PRIMARY | STANDBY
region_zone_server_list:
region_zone_server [, region_zone_server ...]
region_zone_server:
[region] zone server
region:
REGION [=] region_name
zone:
ZONE [=] zone_name
server:
SERVER [=] ip_port
ip_port:
'STR_VALUE:INT_VALUE'
参数解释
系统自举时,需要指定 RootService 信息,多台 RootService 通过逗号(,)分隔。
参数 | 描述 |
---|---|
region_name | 指定 RootService 所在的地域,通过在“多地多中心”部署时指定。 |
zone_name | 指定 RootService 所属的 Zone。 |
ip_port | 指定 RootService 的 IP 和端口。 |
PRIMARY | STANDBY | 指定主备库。系统启动时需要指定主备库,如果不指定,默认采用主库启动。 |
示例
- 指定一台 RootService:
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.218.248.178:55410';
- 多台 RootService 通过逗号(,)分隔:
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '172.24.65.24:55410', ZONE 'zone2'
SERVER '172.24.65.114:55410';
- 启动备库
ALTER SYSTEM BOOTSTRAP CLUSTER STANDBY ZONE 'zone1' SERVER '10.218.248.178:55410';
JOB
描述
该语句触发参数指定的后台任务。
格式
alter_system_job_stmt:
ALTER SYSTEM RUN JOB job_name
[zone | server];
参数解释
参数 | 描述 |
---|---|
JOB job_name | 指定任务名称。有特殊字符时需要单引号,其它情况下单引号加与不加都支持,已支持的 JOB 有:
|
zone | server | 该任务指定 Zone 或者 Server 执行。 |
示例
- 触发 RootService 自检任务。
ALTER SYSTEM RUN JOB "root_inspection";
MERGE
描述
该语句发起存储层合并。
格式
alter_system_merge_stmt:
ALTER SYSTEM merge_action;
merge_action:
MAJOR FREEZE
| MINOR FREEZE
[tenant_list | replica] [server_list] [zone]
| START MERGE
zone
| {SUSPEND | RESUME} MERGE
[zone]
| CLEAN MERGE ERROR
tenant_list:
TENANT [=] (tenant_name_list)
tenant_name_list:
tenant_name [, tenant_name ...]
replica:
PARTITION_ID [=] 'partition_id%partition_count@table_id'
server_list:
SERVER [=] ip_port_list
参数解释
参数 | 描述 |
---|---|
MAJOR FREEZE | 发起每日合并。 |
MINOR FREEZE | 发起转储。 |
START MERGE | 开始每日合并。 |
{SUSPEND | RESUME} MERGE | 暂停或恢复每日合并。 |
CLEAN MERGE ERROR | 清理合并出错的标记。 |
tenant_name | 指定租户转储。 |
PARTITION_ID | 指定副本转储。 |
SERVER | 指定机器转储。 |
zone | 指定 Zone 开始合并。 |
示例
- 发起每日合并。
OceanBase(root@oceanbase)>alter system major freeze;
Query OK, 0 rows affected (0.06 sec)
PARAMETER
描述
该语句用来修改配置项信息。
格式
alter_system_parameter_stmt:
ALTER SYSTEM [SET]
parameter_name = expression [SCOPE = {MEMORY | SPFILE | BOTH}] [COMMENT [=} 'text']
{SERVER [=] ‘ip:port’ | ZONE [=] ‘zone’};
参数解释
参数 | 描述 |
---|---|
parameter_name | 指定要修改的配置项名称。 |
expression | 指定修改后的配置项的值。 |
COMMENT ‘text’ | 用于添加关于本次修改的注释。该参数为可选,建议不要省略。 |
SCOPE | 指定本次配置项修改的生效范围。它的值主要有以下三种:
SCOPE 默认值为 BOTH。对于不能立即生效的配置项,如果使用 BOTH 或 MEMORY,会报错 。 |
SERVER | 只修改指定 Server 实例的某个配置项。 |
ZONE | 表明本配置项的修改针对指定集群的特定 Server 类型,否则,针对所有集群的特定 Server 类型。 |
说明
同时修改多个系统配置项时,用“,”隔开。
查看系统配置项的格式:SHOW PARAMETERS [LIKE 'pattern' | WHERE expr];
示例
- 修改配置项 enable_sql_audit 的信息。
OceanBase(root@oceanbase)>show parameters like 'enable_sql_audit';
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| 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 |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 rows in set (0.02 sec)
OceanBase(root@oceanbase)>alter system set enable_sql_audit = false scope = BOTH;
Query OK, 0 rows affected (0.05 sec)
OceanBase(root@oceanbase)>show parameters like 'enable_sql_audit';
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| 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 |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 rows in set (0.02 sec)
REFRESH
描述
该语句系列用来触发刷新操作,包括刷新 schema、时区信息、各类缓存等。
格式
alter_system_refresh_stmt:
ALTER SYSTEM refresh_action;
refresh_action:
REFRESH SCHEMA
[zone | server]
| REFRESH TIME_ZONE_INFO
| FLUSH cache_type CACHE
[tenant_list] [GLOBAL]
| FLUSH KVCACHE
[tenant] [CACHE [=] cache_name]
cache_type:
ALL
| LOCATION
| CLOG
| ILOG
| COLUMN_STAT
| BLOCK_INDEX
| BLOCK
| ROW
| BLOOM_FILTER
| SCHEMA
| PLAN
tenant:
TENANT [=] tenant_name
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 指令。
|
示例
- 刷新单台 OBServer 的 Schema:
ALTER SYSTEM REFRESH SCHEMA SERVER='172.24.65.24:55410';
- 刷新整个 Zone 的 Schema:
ALTER SYSTEM REFRESH SCHEMA ZONE='zone1';
REPLICA
描述
该语句用来处理副本的迁移,复制,删除,副本类型转换,角色切换等行为。
格式
alter_system_replica_stmt:
ALTER SYSTEM replica_action;
replica_action:
SWITCH REPLICA
{LEADER | FOLLOWER}
{replica server | server [tenant_name] | zone [tenant_name]}
| DROP REPLICA partition_id_desc
replica server [create_timestamp] [zone] [FORCE]
| {MOVE | COPY} REPLICA
replica source destination
| REPORT REPLICA partition_id_desc
{zone | server}
| RECYCLE REPLICA partition_id_desc
{zone | server}
| {ALTER | CHANGE | MODIFY} REPLICA
replica server [set] REPLICA_TYPE = replica_type
source:
SOURCE [=] 'ip:port'
destination:
DESTINATION [=] 'ip:port'
partition_id_desc
PARTITION_ID partition_id%partition_count@table_id
partition_idx | partition_count | table_id | task_id:
INT_VALUE
create_timestamp:
CREATE_TIMESTAMP [=] INT_VALUE
tenant_name_list:
tenant_name [, tenant_name ...]
replica_type:
{FULL | F}
| {READONLY | R}
| {LOGONLY | L}
参数解释
参数 | 描述 |
---|---|
SWITCH REPLICA | Leader 改选。 |
DROP REPLICA | 副本删除。删除指定 OBServer 上的 Replica,必须指定 partition_id,OBServer 地址以及 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’;大小写通用。 |
示例
- 副本迁移
ALTER SYSTEM MOVE REPLICA PARTITION_ID '0%4@1100611139403777'
SOURCE '172.24.65.24:55410'
DESTINATION '172.24.65.26:55410';
- 删除副本
ALTER SYSTEM DROP REPLICA PARTITION_ID '0%4@1100611139403777'
SERVER '172.24.65.26:55410';
- 修改副本类型
ALTER SYSTEM CHANGE REPLICA PARTITION_ID '0%4@1100611139403777'
SERVER '172.24.65.26:55410';
CHANGE REPLICA_TYPE = 'L';
- Leader 改选
ALTER SYSTEM SWITCH REPLICA LEADER PARTITION_ID '0%4@1100611139403777'
SERVER '172.24.65.26:55410';
ROOTSERVICE
描述
切换 RS 的角色。
格式
alter_system_rootservice_stmt:
ALTER SYSTEM SWITCH ROOTSERVICE {LEADER | FOLLOWER} {zone | server};
参数解释
参数 | 描述 |
---|---|
LEADER | FOLLOWER | 把 RS 的角色设置为 Leader 或者 Follower。 |
zone | server | 修改指定 Zone 或 Server 的 RS 角色。 |
示例
- 把 z1 的 RS 切换为 Leader
ALTER SYSTEM SWITCH ROOTSERVICE LEADER ZONE 'z1';
SERVER
描述
该语句维护系统中 OBServer 状态,控制 OBServer 的增、删、启、停等操作。
格式
alter_system_server_stmt:
ALTER SYSTEM server_action SERVER ip_port_list [zone];
server_action:
ADD
| DELETE
| CANCEL DELETE
| START
| STOP
| FORCE STOP
ip_port_list:
ip_port [, ip_port ...]
参数解释
服务器状态图如下:
参数 | 描述 |
---|---|
ip_port | 指定 OBServer 的 IP 地址和端口 |
zone | 如果指定 Zone,将会对待维护 Server 执行 Zone 校验。 |
ADD | 新增服务器。 |
DELETE | 删除服务器。 |
CANCEL DELETE | 取消删除服务器。 |
START | 启动服务器。 |
STOP | 停止服务器。 |
FORCE STOP | 强制停止服务器。 |
示例
- 新增服务器
ALTER SYSTEM ADD SERVER '172.24.65.113:55410' ZONE 'zone1';
注意
通过 Add 和 Delete 命令将服务器加入到服务列表,只有服务列表中的服务器才可以提供服务。
Delete 操作执行 leader 改选以及 replica 复制。
Delete 操作执行时间很长,因此,允许通过 Cancel 命令取消该操作。
THROTTLE
描述
该语句用来设置特征限流。
格式
alter_system_throttle_stmt:
ALTER SYSTEM throttle_action;
throttle_action:
ENABLE SQL THROTTLE [priority_option] [using_metric_option_list]
| DISABLE SQL
priority_option:
FOR PRIORITY <= INT_VALUE
using_metric_option_list:
USING metric_option_list
metric_option_list:
metric_option [metric_option ...]
metric_option:
RT = {INT_VALUE | DECIMAL_VALUE}
| CPU = {INT_VALUE | DECIMAL_VALUE}
| IO = INT_VALUE
| NETWORK = {INT_VALUE | DECIMAL_VALUE}
| QUEUE_TIME = {INT_VALUE | DECIMAL_VALUE}
| 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 的请求限流。
alter system enable sql throttle for priority <= 100 using queue_time=0.1
UNIT
描述
该语句负责 UNIT 资源迁移。
格式
alter_system_unit_stmt:
ALTER SYSTEM MIGRATE
UNIT [=] unit_id DESTINATION [=] ip_port
unit_id:
INT_VALUE
参数解释
参数 | 描述 |
---|---|
unit_id | UNIT 编号。 |
ip_port | 将 UNIT 迁移到的目标 Server 地址。 |
示例
- 将 UNIT 1001 的资源迁移到 11.11.111.111:19510。
OceanBase(root@oceanbase)>alter system migrate unit = 1001 destination = '11.11.111.111:19510';
Query OK, 0 rows affected (0.05 sec)
ZONE
描述
该语句负责维护 Zone 的状态,如 Zone 的增、删、启、停等操作。
格式
alter_system_zone_stmt:
ADD ZONE zone_name
[zone_option_list]
| {ALTER | CHANGE | MODIFY} ZONE zone_name
[SET] zone_option_list
| {DELETE | START | STOP | FORCE STOP} ZONE zone_name
zone_option_list:
zone_option [, zone_option ...]
zone_option:
region
| idc
| ZONE_TYPE {READONLY | READWRITE}
idc:
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。
OceanBase(root@oceanbase)>alter system delete zone 'z1';
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
描述
集群管理相关操作,可以新增、删除、修改集群级相关属性。
格式
ALTER SYSTEM cluster_action 'cluster_name' CLUSTER_ID = INTNUM;
cluster_action:
ADD CLUSTER
| REMOVE CLUSTER
| ENABLE CLUSTER SYNCHRONIZATION
| DISABLE CLUSTER SYNCHRONIZATION
参数解释
参数 | 描述 |
---|---|
ADD CLUSTER | 新增一个备库。 |
REMOVE CLUSTER | 删除一个已经存在的备库。 |
ENABLE CLUSTER SYNCHRONIZATION | 允许一个备库的同步。 |
DISABLE CLUSTER SYNCHRONIZATION | 禁掉一个备库的同步。 |
示例
- 新增备库
ALTER SYSTEM ADD CLUSTER 'ob1.test' cluster_id = 1;
SWITCHOVER
描述
集群无损、有损切换语法,包括主库切成备库,备库切成主库。
格式
ALTER SYSTEM commit_switchover_clause;
commit_switchover_clause:
COMMIT TO SWITCHOVER TO PRIMARY
| COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
| ACTIVATE PHYSICAL STANDBY CLUSTER
| CONVERT TO PHYSICAL STANDBY
参数解释
参数 | 描述 |
---|---|
COMMIT TO SWITCHOVER TO PRIMARY | 备库切成主库,在备库上执行,并且旧主库已经切换成主库,集群中没有其他的备库先切换成主库。 |
COMMIT TO SWITCHOVER TO PHYSICAL STANDBY | 主库无损切换成备库,在主库上执行,并且备库已经同步成功。 |
ACTIVATE PHYSICAL STANDBY CLUSTER | 在主库宕机的情况下,把一个备库切换为主库。 |
CONVERT TO PHYSICAL STANDBY | 把一个主库切换成备库。 |
示例
- 主库切换成备库
ALTER SYSTEM COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
- 备库切换成主库
ALTER SYSTEM COMMIT TO SWITCHOVER TO PRIMARY;
- 主库宕机,备库切换成主库
ALTER SYSTEM ACTIVATE PHYSICAL STANDBY CLUSTER;
- 旧主库重启,切成备库
ALTER SYSTEM CONVERT TO PHYSICAL STANDBY;
BALANCE TASK
描述
该语句用来清除没有正在调度的负载均衡任务。
格式
ALTER SYSTEM REMOVE BALANCE TASK opt_tenant_list opt_zone_list opt_balance_task_type;
opt_tenant_list
TENANT [=] name,name_list
opt_zone_list
ZONE [=] zone_name, zone_list
opt_balance_task_type
ALL
| MANUAL
| AUTO
参数解释
参数 | 描述 |
---|---|
opt_tenant_list | 租户列表,如果不指定,就会清除所有租户的任务。 |
opt_zone_list | Zone 的列表,可不指定。 |
opt_balance_task_type | 待清除的任务类型:
|
示例
- 清除所有租户所有没有在调度的任务。
ALTER SYSTEM REMOVE BALANCE TASK;
CANCEL MIGRATE UNIT
描述
该语句用来取消 UNIT 的迁移。
格式
ALTER SYSTEM CANCEL MIGRATE UNIT unit_id;
参数解释
参数 | 描述 |
---|---|
unit_id | 指定迁移的 UNIT 的 ID。 |
示例
- 取消 UNIT 1001 的迁移。
ALTER SYSTEM CANCEL MIGRATE UNIT 1001;
RESTORE
描述
该语句用来恢复租户的数据。
格式
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 | 恢复选项,支持以下几种:
|
示例
- 恢复租户的数据。
alter system restore restored_trade from trade
at 'oss://antsys-oceanbasebackup/backup_rd/20200323?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx'
until ' 2020-03-23 08:59:45'
with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';
alter system restore restored_trade from trade
at 'file:///data/nfs/physical_backup_test/20200520'
until '2020-05-21 09:39:54.071670'
with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool&locality=F@z1,F@z2,F@z3';
CHANGE TENANT
描述
该语句用来切换租户。
格式
ALTER SYSTEM CHANGE TENANT tenant_name;
ALTER SYSTEM CHANGE TENANT TENANT_ID [=] INTNUM;
参数解释
参数 | 描述 |
---|---|
tenant_name | 指定要切换到的租户名称。 |
TENANT_ID | 指定要切换到的租户 ID。 |
示例
- 切换至 ID 为 1001 的租户。
ALTER SYSTEM CHANGE TENANT TENANT_ID = 1001;
注意事项
需以系统租户身份登陆,普通租户无法执行该命令。
需直连 OBServer 执行,断连接后需重新执行。
不能在事务执行过程中执行该命令。
切换到非系统租户后,无法执行 DDL 操作。
BACKUP
描述
该语句用来触发备份。
格式
设置备份的介质路径 : alter system set backup_dest = <backup_uri>
开启 logarchive 的 SQL: alter system archivelog
关闭 logarchive 的 SQL: alter system noarchivelog
触发基线备份(只支持集群级别): alter system backup database;
取消当前备份: alter system cancel backup
参数解释
参数 | 描述 |
---|---|
backup_uri | 指定备份的路径,目前支持 oss 和 file 两种,具体格式参考示例。 |
示例
- 设置备份的路径。
alter system set backup_dest='oss://antsys-oceanbasebackup/backup_dir?host=xxx&access_id=xxx&access_key=xxx';
alter system set backup_dest='file:///data/nfs/physical_backup_dir';
注意事项
需以系统租户身份登陆,普通租户无法执行该命令。