系统自举
ALTER SYSTEM BOOTSTRAP
[REGION [=] 'region'] ZONE [=] ‘zone’ SERVER [=] ‘ip:port’
[, [REGION [=] 'region'] ZONE [=] ‘zone’ SERVER [=] ‘ip:port’ ...];
系统自举时,需要指定 RootService 信息,多台 RootService 通过逗号(,)分隔。REGION 表示地域,通常用于“多地多中心”部署时指定。
关于RootService有以下限制:一个集群中只有一个 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 begin upgrade #表示升级版本开始
alter system end upgrade #表示升级版本完成
用途描述:
当管理员执行alter system begin upgrade 进行版本升级,RootService将进行一系列检测工作,如检查当前所有 server 都处在同一版本。修改 enable_upgrade_mode配置参数等。
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
ALTER SYSTEM REFRESH SCHEMA {SERVER=’ip:port’| ZONE=’zone’};
正常情况下,当系统执行DDL操作, RootService都会主动通知所有OBServer刷新Schema。当某些OBServer发生异常,和RootService网络中断,此时需要手动刷新Schema。刷新Schema可以针对单独的机器,也可以针对某个集群。
示例如下:
- 刷新单台 OBServer
ALTER SYSTEM REFRESH SCHEMA SERVER='172.24.65.24:55410';
- 刷新整个 Zone
ALTER SYSTEM REFRESH SCHEMA ZONE='zone1';
服务器管理
服务器状态图如下图所示。
说明如下:
- 通过Add和Delete命令将服务器加入到服务列表,只有服务列表中的服务器才可以提供服务。
- Delete操作执行leader改选以及replica复制。
- Delete操作执行时间很长,因此,允许通过Cancel命令取消该操作。
新增服务器的格式如下:
ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'…] [ZONE[=]’zone’];
如果指定 Zone,将会对待加入 Server 执行 Zone 校验。
示例如下:
- 新增服务器
ALTER SYSTEM ADD SERVER '172.24.65.113:55410' ZONE 'zone1';
- 删除和取消删除服务器
ALTER SYSTEM DELETE SERVER 'ip:port' [,'ip:port'…] [ZONE[=]’zone’]
ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' [,'ip:port'…] [ZONE[=]’zone’];
Zone管理
- 新增 Zone
ALTER SYSTEM ADD ZONE ’zone’ [REGION ’region’];
- 删除Zone
ALTER SYSTEM DELETE ZONE ’zone’;
- 主动上下线Zone
ALTER SYSTEM {START|STOP} ZONE ’zone’;
修改 Zone 的 Region 属性
在OceanBase1.3及更新的版本中,OceanBase 支持给 Zone 设定 Region 属性。
语法格式如下:
ALTER SYSTEM {ALTER|MODIFY|CHANGE} ZONE ‘zone_name’ [set] alter_zone_optionalter_zone_option: region [=] ‘region_name’
alter_zone_option: region [=] ‘region_name’
Session管理
- 普通Tenant kill 自己的 Session
KILL [GLOBAL|LOCAL] [CONNECTION] 'sessionid';
- 系统管理员 kill Session
ALTER SYSTEM KILL [GLOBAL|LOCAL] SESSION ‘sessionid’;
Partition管理
打开/关闭自动选举(修改集群parameter的enable_auto_leader_switch)
Leader改选
ALTER SYSTEM
SWITCH REPLICA LEADER | FOLLOWER
{PARTITION_ID=’partidx%partcount@tableid’ SERVER=’ip:port’ | SERVER=’ip:port’ | ZONE=’zone’};
- 副本删除
删除指定 OBServer 上的 Replica,必须指定 partition_id、OBServer 地址以及 create_timestamp。
ALTER SYSTEM
DROP REPLICA
PARTITION_ID = 'partidx%partcount@tableid'
SERVER = 'ip:port'
[CREATE_TIMESTAMP = ctimestamp]
[ ZONE=’zone’];
- 副本迁移/复制
Replica迁移或者复制,需要指定源 OBServer 和目的 OBServer 以及 partition_id。
ALTER SYSTEM
{MOVE|COPY} REPLICA
PARTITION_ID 'part_idx%part_count@table_id'
SOURCE='ip:port'
DESTINATION='ip:port' ;
- 取消副本迁移/复制
ALTER SYSTEM
CANCEL [PARTITION MIGRATION] TASK 'task_id';
按照__all_virtual_sys_task_status里面的task_id来取消正在迁移的任务。
- 副本汇报
强制要求某个 OBServer 或者某个 Zone 内的所有 OBServer 进行 Replica 汇报。
ALTER SYSTEM
REPORT REPLICA
{SERVER = 'ip:port' | ZONE=’zone’};
- 回收无用副本
ALTER SYSTEM RECYCLE REPLICA {SERVER = 'ip:port' | ZONE=’zone’};
- 修改副本属性
ALTER SYSTEM
{alter|change|modify} REPLICA
PARTITION_ID 'part_idx%part_count@table_id'
SERVER = 'ip:port'
[set] change_actions;
change_actions: REPLICA_TYPE = ‘replica_type’
修改指定副本的副本类型;现在已经支持的副本类型包括:FULL/READONLY/LOGONLY;‘replica_type’的值可以是这三种副本类型的全称或者简写的首字符:’F/R/L’;大小写通用。
运行系统任务
命令格式如下:
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是否跟内部表的一致;
每日合并
- 发起每日合并
ALTER SYSTEM MAJOR FREEZE
- 打开手动合并
ALTER SYSTEM SET ENABLE_MANUAL_MERGE='True'
- 关闭手动合并
ALTER SYSTEM SET ENABLE_MANUAL_MERGE='False'
- 开始每日合并
ALTER SYSTEM START MERGE ZONE='zone';
- 暂停每日合并
ALTER SYSTEM SUSPEND MERGE [ZONE='zone']
- 恢复每日合并
ALTER SYSTEM RESUME MERGE [ZONE='zone']
- 清空roottable
清空 roottable 以后,汇报 partition。
ALTER SYSTEM CLEAR ROOTTABLE [TENANT='tenantname'];
内存管理
发起转储格式:
ALTER SYSTEM MINOR FREEZE
[{TENANT[=] ('tt1' [, 'tt2'...]) | PARTITION_ID [=] 'partidx%partcount@tableid'}]
[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指令
ALTER SYSTEM FLUSH PLAN CACHE
- 清空KV cache指令
- 清除sys租户的schema_cahe
ALTER SYSTEM FLUSH KVCACHE TENANT='sys' CACHE='schema_cache';
b. 清除sys租户的全部kvcache
ALTER SYSTEM FLUSH KVCACHE TENANT='sys';
c. 清除所有租户的全部kvcache
ALTER SYSTEM FLUSH KVCACHE;
配置项
修改系统级配置
ALTER SYSTEM [SET] param_name [=] expr
[COMMENT [=]'text']
[SCOPE [=] conf_scope]
{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 实例的某个配置项。 |
- 同时修改多个系统配置项时,用“,”隔开。
查看系统配置项的格式:
SHOW PARAMETERS [LIKE 'pattern' | WHERE expr];
时区信息管理
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
ALTER SYSTEM SET DISK VALID SERVER [=] ‘ip:port’
OceanBase 会自动检测磁盘是否可能出现故障。在检测到磁盘可能出现故障后,会通过设置标志位的方式将这个ObServer 上的 Leader 切到其他 OBServer 上。此标志位对 OBServer 上的所有 Partition 均生效。DBA在检查磁盘状态正常后,可以使用上述命令,将此标志位重置。