浙江省网站备案时间,企业站seo案例分析,wordpress分布式部署,网站建设和优化内容最重要作者#xff1a;关炳文#xff0c;爱可生 DBA 团队成员#xff0c;负责数据库相关技术支持。 本文详细介绍了OceanBase V3.2版的集群中#xff0c;面对数据文件缩容的场景的一套缩容方案#xff0c;作为大家的参考。
缩容场景
某银行运行的一套采用1-1-1架构的OceanBase… 作者关炳文爱可生 DBA 团队成员负责数据库相关技术支持。 本文详细介绍了OceanBase V3.2版的集群中面对数据文件缩容的场景的一套缩容方案作为大家的参考。
缩容场景
某银行运行的一套采用1-1-1架构的OceanBase集群中其中一个节点的OBServer程序在崩溃时默认情况下会在数据盘/data/1中生成core文件。core文件的大小通常等同于程序运行时占用的内存大小大约为400GB。然而由于数据盘约90%的空间已预先分配给数据文件block_file导致剩余的可用空间不足以存储这样庞大的文件从而使得/data/1目录被写满并因此产生了两个问题
core 文件没写完整不完整的 core 文件使得对故障原因的分析工作难以进展。数据盘被写满直接导致该节点无法对外业务提供服务。
恢复 OBServer 服务之后经过与项目组讨论决定 采取给该集群的数据文件进行缩容至数据盘总大小的 80% 避免日后故障复现时发生同样情况。
本文内的图片以及代码中展示的服务器信息IP 地址、集群名、租户名为个人搭建的模拟环境所用仅用于辅助说明具体步骤。 缩容操作
版本信息
OBServer 版本3.2.3OCP 版本3.3.3
相关参数
datafile_size
用于设置数据文件的大小。如果想要缩减 datafile_size可以将这个节点从集群中删除重建这个节点集群当前值为 0。
datafile_disk_percentage
表示占用 data_dir 所在磁盘总空间的百分比集群当前值为 90。
1 调整参数
集群-参数管理调整 datafile_disk_percentage 的值为 80即 block_file 占盘比例为 80%。 2 缩减租户副本
集群-租户管理选择租户包括 sys 租户在副本详情中选中 zone 删除副本例zone3等待任务结束。 3 下线 OBServer
集群-总览OBServer 列表中删除 zone3 的 OBServer相当于在该节点卸载 OBServer 服务等待任务结束。 4 上线 OBServer
此时该节点的 OceanBase 安装包被卸载了相关目录空间也被清空了。如果要重新使用该 OBServer 上线需要安装 OceanBase 的 RPM 包并初始化相关目录等操作。
由于 OCP 目前3.3.3 版本还做不到启动 OBServer 进程时另外指定参数因此这一步使用黑屏命令行操作。
4.1 安装 RPM 包
使用 root 用户。
rpm -ivh oceanbase-3.2.3.3-107050022023040817.el7.x86_64.rpm4.2 初始化目录
使用 admin 用户。
export cluster_namesit mkdir -p /data/1/$cluster_name/{etc3,sort_dir,sstable}
mkdir -p /data/log1/$cluster_name/{clog,etc2,ilog,slog,oob_clog}
mkdir -p /home/admin/oceanbase/store/$cluster_name chown -R admin:admin /data/1/$cluster_name chown -R admin:admin /home/admin/oceanbase chown -R admin:admin /data/log1/$cluster_name for t in {etc3,sort_dir,sstable};do ln -sf /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
for t in {clog,etc2,ilog,slog,oob_clog}; do ln -sf /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done4.3 指定参数启动 OBServer 进程
使用 admin 用户。
cd /home/admin/oceanbase
ulimit -s 10240 ##堆栈的最大值
ulimit -c unlimited ##当某些程序发生错误时系统可能会将该程序在内存中的信息写成文件(除错用)这种文件就被称为核心文件(core file)启动 OBServer 进程。
cd /home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -n sit -z zone3 -d /home/admin/oceanbase/store/sit -r 10.186.65.8:2882:2881;10.186.65.123:2882:2881;10.186.65.56:2882:2881 -l info -o obconfig_urlhttp://10.186.65.11:8080/services?ActionObRootServiceInfoUser_IDalibabaUIDocpmasterObRegionsit,config_additional_dir/data/1/sit/etc3;/data/log1/sit/etc2,cluster_id16777777,datafile_disk_percentage80,cpu_count16,system_memory5G参数参考值
-i 指定网卡名可通过 ifconfig 命令查看。-p 指定服务端口号一般指定为 2881。-P 指定 RPC 端口号一般指定为 2882。-n 指定集群名称与原来保持一致。-z 指定启动的 OBServer 进程所属的 Zone与原来保持一致。-d 指定集群主目录除集群名字其他不要变动。-r 指定 RS 列表可通过查看当前集群 rootservice_list 参数。-l 指定日志级别默认为 INFO即只有 INFO 及以上级别的日志数据才会打印到observer.log 、election.log 和 rootservice.log 日志文件中。-o 指定集群启动参数需要根据实际情况设置。
4.4 登录集群 sys 租户添加 OBServer
alter system add server 10.186.65.56:2882 zone zone3;OCP 集群总览页刷新出 OBServer 列表。
4.5 其它副本操作
重复上述步骤逐一缩减租户副本下线/上线其它 OBServer并补齐租户副本。到此OceanBase 对数据盘 /data/1 的 block_file 缩容已完成。
4.6 重启集群
最后重启集群验证集群是否正常运行。
总结
本次数据文件缩容操作相当于在集群每个节点重装 OBServer 服务在生产环境具有一定风险建议做好备份工作。因此在本文相同故障场景下优先考虑本地是否存在其他磁盘空间NFS 挂载盘传输存在网络限制暂不考虑可用于存放 core 文件并修改其生成路径。
另外datafile_disk_percentage 与 datafile_size 参数需要调大时可以在集群中进行动态调整不需要重启集群调小则不效。