obd运维OceanBase数据库的常见场景
集群参数调整
⭐️ OBD调整OceanBase集群参数步骤:
- 查看部署名称:
obd cluster list
- 编辑集群参数:
obd cluster edit-config 部署名称
- 使参数生效:
obd cluster reload/restart/redeploy 部署名称
OBD目录结构如下:
bash
[admin@test001 /home/admin/]$tree -L 1 ~/.obd
/home/admin/.obd
|----- cluster
# 存放部署名称对应配置文件,不建议直接编辑该配置文件,需要使用obdclusteredit-config操作
# 存在.data隐藏文件,记录部署名称、组件相关信息、部署状态信息。不建议直接编辑该配置文件
|----- config_parser
|----- lock
|----- log # 存放OBD命令操作的日志
|----- mirror # 存放本地仓库的安装包和远程仓库的repo文件
|----- optimize
|----- plugins # 存放组件相关插件
|----- repository
|----- version # 记录OBD版本
⚠️ 调整集群参数时需要注意:
-
如果
edit-config
调整的参数不确定是重装生效、重启生效、还是重载生效,可以参看find ~/.obd/plugin/${component} "parameter.yaml"
文件。 -
遵守原则:部署配置文件有的参数,优先
obd cluster edit-config
方式修改,部署配置文件中没有的参数,可以登录数据库SQL命令方式修改。部署配置文件修改参数不确定生效方式的查看parameter.yaml
文件酌情修改。 -
编辑oceanbase-ce模块下的资源参数时,注意
datafile_sizze
参数不支持调小。 -
调整集群或租户资源时,分别需要遵守以下原则:
⚠️ 调整集群资源时,需要遵守原则:
- 调大参数数值时,不超出服务器剩余资源范围;
- 调小参数数值时,不低于租户已分配占用的数值范围。
⚠️ 调整租户资源参数时,需要遵守原则:
- 调大参数数值时,不超出集群剩余资源范围;
- 调小参数数值时,租户内存最小不能低于
__min_full_resource_pool_memory
限制; - 调小参数数值时,租户CPU最小不能低于1核,
MAX_CPU
不能小于MIN_CPU
; - 调小参数数值时,租户
LOG_DISK_SIZE
参数建议是租户内存的3~4倍大小。
服务重启
⭐️ 重启服务的三种场景:
- 重启部署名称下的所有服务:
obd cluster restart 部署名称
- 重启部署名称下的指定服务:
obd cluster restart 部署名称 -c 组件名称
- 重启部署名称下的指定服务指定节点:
obd cluster restart 部署名称 -c 组件名称 -s IP1,IP2
⚠️ 重启组件时需要注意:
-
重启组件的前提是所有组件涉及的节点SSH需要连通,否则即使指定IP节点也无法进行重启操作。
-
所有组件均重启完成时,
obd cluster list
对应部署名称的状态才会是running,如果存在组件重启失败,后续组件不会再进行重启动作。 -
obd cluster list
中部署名称的状态是非实时获取,只有管理操作完成后才会更新 ,因此可能会出现组件的服务不正常时,而部署状态为running,例如服务器重启后。建议通过display
来确认所有组件是否正常。 -
部署名称状态如果非running,会影响后续管理操作,例如升级、扩容等。
-
组件名称为部署配置文件 中的组件模块名称,非
obd cluster display
展示的。 -
指定多个组件名称时,需要使用逗号间隔。
-
单独重启某个服务组件时,并不会更新部署名称的状态。即服务都停止时,部署名称状态为stopped,每个组件均单独启动时,最终部署名称状态仍然是stopped。
-
如果指定多个IP时,存在错误的IP时,OBD会跳过错误的IP信息,仅对正确的IP进行重启操作。
-
如果指定多个组件服务时,存在错误的组件名称,OBD会终止整个重启操作。
服务升级
- 检查并升级OBD:
bash
obd update
- 升级OceanBase:
bash
obd cluster upgrade 部署名称-c oceanbase-ce-V4.2.1.4 --usable=xxxx
其中--usable
参数后面指定的是升级中使用的镜像hash列表。
⚠️ OBD升级OceanBase需要注意:
-
使用OBD升级前,如果集群存在主备租户,建议主备集群均升级至相同版本。
-
使用OBD升级前,确认目标版本的Release Notes中升级说明。
-
使用OBD升级前,如果升级目标版本为
V4.0.x
、V4.1.x
和V4.2.0 BETA
版本时,需调整业务租户的primary zone为顺序优先级,升级完成后再还原。
sql
ALTER TENANT test primary_zone='zone1;zone2;zone3';
-
使用OBD升级前,需要检查部署名称状态是running,且OceanBase集群状态无异常。
-
建议升级前对集群进行一次合并操作。
sql
ALTER SYSTEM MAJOR FREEZE;
-
使用OBD升级时,如果升级失败,支持重复执行OBD升级命令,但禁止 在不明升级失败原因的情况下修改集群系统参数,例如
enable_ddl
、enable_upgrade_mode
。 -
使用OBD升级时,如果升级失败,可以通过黑屏打印的
obd display-trace xxxx
信息、或者查看升级日志upgrade_post.log
进行检查。 -
使用OBD升级完成后,除了检查集群状态之外,建议升级其他组件服务至配套版本的。
服务扩容
OBD集群命令obd cluster scale_out
会将新节点扩容配置信息更新到源集群部署配置文件中,并对扩容节点进行环境预检查,通过后会在扩容节点安装OceanBase并启动服务,添加到源集群中。
⭐️ OBD扩容节点的逻辑如下:
- 编写OceanBase扩容配置文件(
scale_out.yaml
)
yaml
oceanbase-ce:
servers:
- name: server2
ip: 10.10.10.2
- name: server3
ip: 10.10.10.3
server2:
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
home_path: /home/admin/observer
zone: zone2
server3:
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882.
home_path: /home/admin/observer
zone: zone3
-
扩容OceanBase服务。
obd cluster scale_out test -c scale_out.yaml
-
复制命令行输出的
obd cluster display
命令并执行,可查看集群的状态。 -
OceanBase集群扩容成功后,进行租户内的资源扩容。
⚠️ OBD扩容OceanBase需要注意:
-
扩容前,需要检查OBD版本是否需要更新,建议使用最新版本。
-
扩容前,扩容的节点建议先进行服务器初始化。其中部署用户和SSH连接信息需要确保一致。
-
扩容前,需要确保OceanBase集群状态正常。
-
扩容前,需要确保已经安装有OBClient客户端。
-
扩容前,扩容节点的配置文件不允许修改原集群配置中的
depends
、global
或其他server
部分的配置,配置新节点的基础信息即可,因此需要保证正扩容节点服务器资源配置 、目录挂载等和原集群服务器保持一致。 -
扩容后,需要对租户进行增加副本,否则仍然是单副本租户。
-
扩容后,建议按需调整租户的primary zone优先级。
-
扩容后,暂不支持使用OBD进行集群缩容。
-
扩容后,也支持纵向扩容observer节点,扩容配置文件中指定源集群zone名称即可,扩容完成后,可以对租户资源水平扩展。
References
【1】https://www.oceanbase.com/docs/obd-cn
【2】https://www.oceanbase.com/docs/community-obd-cn-1000000000050428
【3】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003381951
【4】https://www.oceanbase.com/docs/common-obd-cn-1000000003415357