系统自举

    1. ALTER SYSTEM BOOTSTRAP
    2. [REGION [=] 'region'] ZONE [=] zone SERVER [=] ip:port
    3. [, [REGION [=] 'region'] ZONE [=] zone SERVER [=] ip:port ...];

    系统自举时,需要指定 RootService 信息,多台 RootService 通过逗号(,)分隔。REGION 表示地域,通常用于“多地多中心”部署时指定。

    关于RootService有以下限制:一个集群中只有一个 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' SERVER '172.24.65.114:55410';

    系统版本升级

    1. alter system begin upgrade #表示升级版本开始
    2. alter system end upgrade #表示升级版本完成

    用途描述:

    1. 当管理员执行alter system begin upgrade 进行版本升级,RootService将进行一系列检测工作,如检查当前所有 server 都处在同一版本。修改 enable_upgrade_mode配置参数等。

    2. RootService维护当前集群 server 的最小版本,通过分析 __all_server 表里各个 server 的版本即可得出,并记录在min_observer_version这个配置项中(OceanBase目前使用 3 位版本号,例如OceanBase 1.2.3,从命名上,第一位叫做observer_major_version,第二位叫做observer_minor_version,第三位叫做observer_patch_version)。RootService在每次升级开始时,校验集群的版本是否一致,并且和 minimum 的配置值是否一致。在升级结束时执行 alter system end upgrade时,再判断是否所有 server 都升级完成,同时修改min_observer_version这个配置值。

    Schema管理

    刷新Schema

    1. ALTER SYSTEM REFRESH SCHEMA {SERVER=’ip:port’| ZONE=’zone’};

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

    示例如下:

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

    服务器管理

    服务器状态图如下图所示。

    系统级管理命令 - 图1

    说明如下:

    1. 通过Add和Delete命令将服务器加入到服务列表,只有服务列表中的服务器才可以提供服务。
    2. Delete操作执行leader改选以及replica复制。
    3. Delete操作执行时间很长,因此,允许通过Cancel命令取消该操作。

    新增服务器的格式如下:

    1. ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'…] [ZONE[=]’zone’];

    如果指定 Zone,将会对待加入 Server 执行 Zone 校验。

    示例如下:

    1. 新增服务器
    1. ALTER SYSTEM ADD SERVER '172.24.65.113:55410' ZONE 'zone1';
    1. 删除和取消删除服务器
    1. ALTER SYSTEM DELETE SERVER 'ip:port' [,'ip:port'…] [ZONE[=]’zone’]
    2. ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' [,'ip:port'…] [ZONE[=]’zone’];

    Zone管理

    系统级管理命令 - 图2

    • 新增 Zone
    1. ALTER SYSTEM ADD ZONE zone [REGION region’];
    • 删除Zone
    1. ALTER SYSTEM DELETE ZONE zone’;
    • 主动上下线Zone
    1. ALTER SYSTEM {START|STOP} ZONE zone’;

    修改 Zone 的 Region 属性

    在OceanBase1.3及更新的版本中,OceanBase 支持给 Zone 设定 Region 属性。

    语法格式如下:

    1. ALTER SYSTEM {ALTER|MODIFY|CHANGE} ZONE zone_name [set] alter_zone_optionalter_zone_option: region [=] region_name
    2. alter_zone_option: region [=] region_name

    Session管理

    • 普通Tenant kill 自己的 Session
    1. KILL [GLOBAL|LOCAL] [CONNECTION] 'sessionid';
    • 系统管理员 kill Session
    1. ALTER SYSTEM KILL [GLOBAL|LOCAL] SESSION sessionid’;

    Partition管理

    • 打开/关闭自动选举(修改集群parameter的enable_auto_leader_switch)

    • Leader改选

    1. ALTER SYSTEM
    2. SWITCH REPLICA LEADER | FOLLOWER
    3. {PARTITION_ID=’partidx%partcount@tableid SERVER=’ip:port | SERVER=’ip:port | ZONE=’zone’};
    • 副本删除

    删除指定 OBServer 上的 Replica,必须指定 partition_id、OBServer 地址以及 create_timestamp。

    1. ALTER SYSTEM
    2.     DROP REPLICA
    3.     PARTITION_ID = 'partidx%partcount@tableid'
    4.     SERVER = 'ip:port'
    5. [CREATE_TIMESTAMP = ctimestamp]
    6.     [ ZONE=’zone’];
    • 副本迁移/复制

    Replica迁移或者复制,需要指定源 OBServer 和目的 OBServer 以及 partition_id。

    1. ALTER SYSTEM
    2.     {MOVE|COPY} REPLICA
    3.     PARTITION_ID 'part_idx%part_count@table_id'
    4.     SOURCE='ip:port'
    5.     DESTINATION='ip:port' ;
    • 取消副本迁移/复制
    1. ALTER SYSTEM
    2. CANCEL [PARTITION MIGRATION] TASK 'task_id';
    3. 按照__all_virtual_sys_task_status里面的task_id来取消正在迁移的任务。
    • 副本汇报

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

    1. ALTER SYSTEM
    2.     REPORT REPLICA
    3.     {SERVER = 'ip:port' | ZONE=’zone’};
    • 回收无用副本
    1. ALTER SYSTEM RECYCLE REPLICA {SERVER = 'ip:port' | ZONE=’zone’};
    • 修改副本属性
    1. ALTER SYSTEM
    2. {alter|change|modify} REPLICA  
    3. PARTITION_ID 'part_idx%part_count@table_id'
    4. SERVER = 'ip:port'
    5. [set] change_actions;
    6. change_actions: REPLICA_TYPE = replica_type

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

    运行系统任务

    命令格式如下:

    1. ALTER SYSTEM RUN JOB 'job_name' {SERVER='ip:port'| ZONE='zone'}

    job_name 有特殊字符是需要单引号,其它情况下单引号加与不加都支持。

    已支持的JOB 有:

    • check_partition_table

    作用:observer执行partitiontable核对删除任务

    • root_inspection

    作用:触发rootservice自检,主要检查以下内容:

    • hardcode的系统表schema跟内部表里的schema是否一致;
    • hardcode的系统变量跟内部表里的系统变量是否一致;
    • hardcode的zone_info,sys_stat是否跟内部表的一致;

    每日合并

    • 发起每日合并
    1. ALTER SYSTEM MAJOR FREEZE
    • 打开手动合并
    1. ALTER SYSTEM SET ENABLE_MANUAL_MERGE='True'
    • 关闭手动合并
    1. ALTER SYSTEM SET ENABLE_MANUAL_MERGE='False'
    • 开始每日合并
    1. ALTER SYSTEM START MERGE ZONE='zone';
    • 暂停每日合并
    1. ALTER SYSTEM SUSPEND MERGE [ZONE='zone']
    • 恢复每日合并
    1. ALTER SYSTEM RESUME MERGE [ZONE='zone']
    • 清空roottable

    清空 roottable 以后,汇报 partition。

    1. ALTER SYSTEM CLEAR ROOTTABLE [TENANT='tenantname'];

    内存管理

    发起转储格式:

    1. ALTER SYSTEM MINOR FREEZE
    2. [{TENANT[=] ('tt1' [, 'tt2'...]) | PARTITION_ID [=] 'partidx%partcount@tableid'}]
    3. [SERVER [=] ('ip:port' [, 'ip:port'...])];

    执行minor freeze,有几个可选的控制参数

    • tenant : 指定要执行minor freeze的租户

    • partition_id : 指定要执行minor freeze的partition

    • server : 指定要执行minor freeze的observer

    组合使用这些参数可以达到不同粒度的控制效果,以下列举出几种常用的使用方式:

    • 指定tenant: 对指定tenant在所有该租户有unit的observer上执行minorfreeze

    • 指定partition_id: 对指定partition的所有replica执行minor freeze

    • 指定server: 对指定server执行minor freeze

    • 指定tenant & server: 对指定tenant在指定的server上执行minorfreeze

    • 指定partition_id & server: 对指定partition在指定server上执行minor freeze

    当什么都不指定时,将对所有observer上的所有partition执行minor freeze。

    • 清空plan cache指令
    1. ALTER SYSTEM FLUSH PLAN CACHE
    • 清空KV cache指令
    1. 清除sys租户的schema_cahe
    1. ALTER SYSTEM FLUSH KVCACHE TENANT='sys' CACHE='schema_cache';

    b. 清除sys租户的全部kvcache

    1. ALTER SYSTEM FLUSH KVCACHE TENANT='sys';

    c. 清除所有租户的全部kvcache

    1. ALTER SYSTEM FLUSH KVCACHE;

    配置项

    修改系统级配置

    1. ALTER SYSTEM [SET] param_name [=] expr
    2.      [COMMENT [=]'text']
    3.      [SCOPE [=] conf_scope]
    4. {SERVER [=] ip:port | ZONE [=] zone’};

    修改系统配置项说明如下表所示。

    子句

    说明

    param_name =expr

    配置项请参见《OceanBase 1.0 参考指南》的 __all_sys_config_stat 配置项参考章节的内容。

    COMMENT ‘text

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

    SCOPE =conf_scope

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

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

    ·SPFILE:表明只修改配置表中的配置项值,当Server重启以后才生效。

    ·BOTH:表明既修改配置表,又修改内存值,修改立即生效,且Server重启以后配置值仍然生效。

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

    SERVER_TYPE = server_type

    服务器类型,ROOTSERVER\UPDATESERVER\CHUNKSERVER\MERGESERVER。

    ZONE = ‘zone_name

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

    SERVER = ‘ip:port

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

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

    查看系统配置项的格式:

    1. SHOW PARAMETERS [LIKE 'pattern' | WHERE expr];

    时区信息管理

    1. ALTER SYSTEM REFRESH TIME_ZONE_INFO

    OceanBase 通过 mysql_tzinfo_to_sql 工具将OS的时区信息生成SQL脚本,进而将时区信息插入到__all_time_zone、__all_time_zone_name、__all_time_zone_transition、 __all_time_zone_transition_type四张系统表中。通过上面的ALTER SYSTEM语通知集群中的所有server根据系统表内容来更新本地的时区信息。

    设置磁盘 Valid

    1. ALTER SYSTEM SET DISK VALID SERVER [=] ip:port

    OceanBase 会自动检测磁盘是否可能出现故障。在检测到磁盘可能出现故障后,会通过设置标志位的方式将这个ObServer 上的 Leader 切到其他 OBServer 上。此标志位对 OBServer 上的所有 Partition 均生效。DBA在检查磁盘状态正常后,可以使用上述命令,将此标志位重置。