【OceanBase 诊断调优】—— OceanBase 数据库网络速率配置方案

本文介绍 OceanBase 数据库网络速率配置方案。

背景

OceanBase 数据库备份功能按照网络的带宽的百分比做了速率限制。当前,网络带宽的获取有三种方法:

(1)OBServer 代码中的设置默认值 DEFAULT_ETHERNET_SPEED

(2)操作系统设备节点 /sys/class/net/$(NIC_IFNAME)/speed

(3)ob_work_dir/etc/nic.rate.config 配置文件的方式。

说明

ob_work_dir 指安装目录,如果是使用 rpm 安装的,则安装目录路径为 /home/admin/oceanbase

这三种方法的生效的优先级分别是(3)> (2) > (1)。

现在通过配置文件修改速率存在一些限制,一是配置文件的格式有约束,需要 '\n' 结尾;二是配置文件只在 OBServer 初始化的时候加载一次,后续如果修改了配置文件的值,需要重新启动才能生效。可通过动态加载配置文件的方式来实现。

动态加载配置文件

在 OBServer 增加 timer,每秒检查一次配置文件的内容是否有更新,如果有更新则重置 OBServer 的限速速率(即 observer.bandwidth_throttle_.set_rate(rate))。

配置文件名称和存放目录保持不变,仍然为:ob_work_dir/etc/nic.rate.config。代码会合入 OceanBase 数据库 V2_2_x_release 及之后的版本。

说明
  • 在 OceanBase 数据库 V3.2.3 版本 ob_work_dir/etc/ 目录下没有 nic.rate.config 文件。
  • 用户需要自行创建 nic.rate.config 文件。

配置文件格式

配置文件内容格式不再强制要求末尾必须 '\n' 结尾,具体格式为:$(IF_NAME)=$(SPEED),SPEED 可以是数字 + 单位,也可以是纯数字,纯数字情况下采用默认单位 Mbps。

配置文件示例。

复制代码
bond0=10000
bond0=10000b
bond0=10000bit
bond0=10000k
bond0=10000kb
bond0=10000kbit
bond0=10000m
bond0=10000mb
bond0=10000mbit
bond0=100g
bond0=100gb
bond0=100gbit

以上单位不区分大小写,统一按照 bit 计算。

说明

nic.rate.config 文件只支持写一行。并且 bond0 只是占位用的,并不需要和 OBServer 使用的网卡名相匹配。

日志

修改配置文件速率后可以检查日志确认配置是否正确生效。

速率公式如下。

复制代码
rate = network_speed * sys_bkgd_net_percentage

通过过滤日志中有关网络变更和带宽限制的信息。

复制代码
Bash# grep -E "network speed changed|reload_bandwidth_throttle_limit|init_bandwidth_throttle" log/observer.log.202106101*

输出结果如下:

复制代码
log/observer.log.20210610111947:[2021-06-10 11:10:49.397019] INFO  [SERVER] ob_server.cpp:2018 [72580][0][Y0-0000000000000000-0-0] [lt=8] [dc=0] succeed to init_bandwidth_throttle(sys_bkgd_net_percentage_=60, network_speed=1310720000, rate=786432000)
log/observer.log.20210610111947:[2021-06-10 11:14:44.905396] INFO  [SERVER] ob_server.cpp:2385 [72582][0][Y0-0000000000000000-0-0] [lt=11] [dc=0] network speed changed(from=1310720000, to=1048576000)
log/observer.log.20210610111947:[2021-06-10 11:14:44.905421] INFO  [SERVER] ob_server.cpp:2055 [72582][0][Y0-0000000000000000-0-0] [lt=3] [dc=0] succeed to reload_bandwidth_throttle_limit(old_percentage=60, new_percentage=60, network_speed=1048576000, rate=629145600)

如果日志格式不正确,会收到下面的错误日志。

复制代码
[2021-06-10 15:28:02.999345] ERROR [SERVER] get_network_speed_from_config_file (ob_server.cpp:1979) [99676][0][Y0-0000000000000000-0-0] [lt=14] [dc=0] invalid NIC Config file(ret=-4002) BACKTRACE:0xfbd452b 0x3d6c7f4 0x3eeab15 0x3eea4c2 0x3eea154 0x3ee9b90 0xadfc5c2 0xadfbc57 0xae01372 0xae0118d 0xfb3a316 0x483b9c7 0x483b929 0xf9e59de 0xf9e587d 0xb37edee 0xf9e5d3c 0xf9e5d15 0xf9e50b9 0xf9de0af

适用版本

OceanBase 数据库所有版本。

相关推荐
电鱼智能的电小鱼19 小时前
基于电鱼 AI 工控机的智慧工地视频智能分析方案——边缘端AI检测,实现无人值守下的实时安全预警
网络·人工智能·嵌入式硬件·算法·安全·音视频
TeleostNaCl20 小时前
解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
前端·网络·chrome·windows·经验分享
!chen21 小时前
k8s-Pod中的网络通信
网络·docker·kubernetes
DashVector21 小时前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
KYGALYX1 天前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
檀越剑指大厂1 天前
金仓KReplay:定义数据库平滑迁移新标准
数据库
努力成为一个程序猿.1 天前
【Flink】FlinkSQL-动态表和持续查询概念
大数据·数据库·flink
IDOlaoluo1 天前
OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)
linux·centos·oceanbase
毕设十刻1 天前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
liliangcsdn1 天前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql