OceanBase单机重启和配置修改
OceanBase单机重启和配置修改
- 查看节点信息
- 节点重启
- 使用obd重启集群
- 集群配置查看
- 集群配置修改
OceanBase单机版 V4.2.5
查看节点信息
SYS租户查看节点信息:
obclient(root@sys)[oceanbase]> SELECT * FROM oceanbase.DBA_OB_SERVERS;
+-------------+----------+------+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| SVR_IP | SVR_PORT | ID | ZONE | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME | MODIFY_TIME | BUILD_VERSION | LAST_OFFLINE_TIME |
+-------------+----------+------+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| 22.23.66.11 | 2882 | 1 | zone1 | 2881 | YES | ACTIVE | 2025-03-23 09:17:42.853285 | NULL | NULL | 2025-03-16 10:21:54.940533 | 2025-03-23 09:17:43.947126 | 4.2.5.3_xxxxxx(Mar 31 2025 18:00:04) | NULL |
+-------------+----------+------+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
1 row in set (0.010 sec)
obd命令行查看集群信息:
[obadmin@22.23.66.11 ~]$ obd cluster list
+----------------------------------------------------------+
| Cluster List |
+------+---------------------------------+-----------------+
| Name | Configuration Path | Status (Cached) |
+------+---------------------------------+-----------------+
| tpcc | /home/obadmin/.obd/cluster/tpcc | running |
+------+---------------------------------+-----------------+[obadmin@22.23.66.11 ~]$ obd cluster display tpcc
Get local repositories and plugins ok
Open ssh connection ok
Connect to observer 22.23.66.11:2881 ok
Wait for observer init ok
+-----------------------------------------------+
| oceanbase-ce |
+-------------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-------------+---------+------+-------+--------+
| 22.23.66.11 | 4.2.5.3 | 2881 | zone1 | ACTIVE |
+-------------+---------+------+-------+--------+
obclient -h22.23.66.11 -P2881 -uroot@sys -p'xxxxxx' -Doceanbase -Acluster unique id: xxxxxx
节点重启
OceanBase数据库自身并没有提供重启集群的命令。OceanBase数据库的核心能力就是高可用(前提是三副本部署)。当少数派节点故障时,OceanBase数据库内部会自动切换,依然可以为业务提供读写服务。OceanBase数据库提供了停止和启动某个副本(zone级别或者server级别)的功能,并且只允许停止少数派节点。所以,OceanBase集群的重启是靠外部操作。比如说用kill命令杀进程,然后再启动进程observer。
OB节点重启适用于对机器进行短暂维修,以及修改系统配置项后需要重启生效的场景。
OB单机版在重启节点前需要注意以下事项:
重启前:
- 暂停所有业务。
- 检查和终止活跃的会话。
- 提交或回滚未完成事务,避免数据不一致。
- 需要备份好数据,防止重启后数据丢失或者损坏。
重启后:
- 检查数据库状态,是否可以正常连接。
- 检查数据库完整性。
OB单机版重启节点的主要流程为:转储 => 关闭进程 => 启动进程。
- 登录SYS租户,对待重启的节点进行转储操作,以便缩短重启后回放Redo Log的时间,加速重启。
--启动节点转储
ALTER SYSTEM MINOR FREEZE SERVER = ('observer_ip:rpc_port');--查看转储进度
SELECT * FROM oceanbase.GV$OB_TABLET_COMPACTION_PROGRESS WHERE TYPE='MINI_MERGE';--示例
ALTER SYSTEM MINOR FREEZE SERVER = (' 22.23.66.11:2882');
- 记录observer文件路径,停止待重启节点的observer进程。
ps -ef | grep observer | grep -v grepkill -9 observer_PIDps aux | grep observer
- 启动待重启节点的observer进程。
cd /home/obadmin/oceanbase && ./bin/observer
使用obd重启集群
OB单机版可以使用obd命令行工具重启集群:
obd cluster restart <deploy_name># 等价于
obd cluster stop <deploy_name>
obd cluster start <deploy_name>
示例:
[obadmin@22.23.66.11 ~]$ obd cluster list
+----------------------------------------------------------+
| Cluster List |
+------+---------------------------------+-----------------+
| Name | Configuration Path | Status (Cached) |
+------+---------------------------------+-----------------+
| tpcc | /home/obadmin/.obd/cluster/tpcc | running |
+------+---------------------------------+-----------------+[obadmin@22.23.66.11 ~]$ obd cluster restart tpcc
Get local repositories and plugins ok
Load cluster param plugin ok
Open ssh connection ok
Cluster status check ok
Connect to observer 22.23.66.11:2881 ok
Server check ok
Stop observer ok
Stop obshell ok
cluster scenario: htap
Start observer ok
observer program health check ok
obshell start ok
obshell program health check ok
Connect to observer 22.23.66.11:2881 ok
Wait for observer init ok
+-----------------------------------------------+
| oceanbase-ce |
+-------------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-------------+---------+------+-------+--------+
| 22.23.66.11 | 4.2.5.3 | 2881 | zone1 | ACTIVE |
+-------------+---------+------+-------+--------+
obclient -h22.23.66.11 -P2881 -uroot@sys -p'******' -Doceanbase -Acluster unique id: xxxxxxtpcc restart
集群配置查看
- 方法一:通过SHOW PARAMETERS LIKE语句查看
show parameters like 'enable_syslog%';
- 方法二:通过查询
GV$OB_PARAMETERS
视图
select zone,svr_ip,svr_port,tenant_id,scope,section,name,value,edit_level,default_value,info
from oceanbase.gv$ob_parameters;select zone,tenant_id,scope,section,name,value,edit_level,default_value
from oceanbase.gv$ob_parameters where name in
('memory_limit','memory_limit_percentage','memstore_limit_percentage','freeze_trigger_percentage',
'writing_throttling_trigger_percentage','compaction_high_thread_score',
'datafile_size','datafile_next','datafile_maxsize','data_disk_usage_limit_percentage');
其中的scope字段表示配置项的级别:
- scope值为
CLUSTER
表示为集群级别的配置项。 - scope值为
TENANT
表示为租户级别的配置项。
集群配置修改
通过ALTER SYSTEM语句修改集群配置。
ALTER SYSTEM [SET] parameter_name = expression [SCOPE = {SPFILE | BOTH}][SERVER [=] 'svr_ip:svr_port' | ZONE [=] 'zone' | TENANT [=] {all | all_user | all_meta | tenant_name}];
📖 参数说明:
scope
:用于指定本次配置项修改的生效范围,默认值为BOTH
。SPFILE
:表示仅修改配置表中的配置项值,当OBServer服务器重启以后才生效。BOTH
:表示既修改配置表,又修改内存值,修改后立即生效,且OBServer重启以后配置值仍然生效。
tenant
:用于系统租户修改所有用户租户、所有Meta租户或指定租户的租户级配置项。all
和all_user
:所有用户租户。all_meta
:所有Meta租户。- tenant_name:指定租户的租户名。
server|zone
:server
表示指定集群中要修改的OBServer服务器,zone
表示指定集群中要修改的Zone。此处指定的Zone和Server为唯一值。ALTER SYSTEM
语句不能同时指定Zone和Server。如果修改集群级配置项时,不指定Zone也不指定Server,则表示该修改在整个集群内生效。
在修改集群配置项时,集群级别(scope=CLUSTER
)的配置项不能通过用户租户设置,也不可以通过sys租户指定为用户租户设置。可以通过gv$ob_parameters
视图中的scope字段来查看配置项是集群级别还是租户级别。
示例:
--修改集群级别的配置项
ALTER SYSTEM SET memstore_limit_percentage = 0;
ALTER SYSTEM SET datafile_size = '640G'; --修改租户级别的配置项
ALTER SYSTEM SET compaction_high_thread_score = 0 tenant = tpcc;
ALTER SYSTEM SET writing_throttling_trigger_percentage = 60 tenant = tpcc;
ALTER SYSTEM SET freeze_trigger_percentage = 20 tenant = tpcc;