【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OAT 管理者工具
【 使用版本 】v4.2.0 bp1
【问题描述】
metadb组件缩容system_memory内存资源,当前通过黑屏方式连接 metadb 的sys进行修改。
alter system set system_memory=‘5G’;并通过OAT数据刷新功能实现数据同步。
但实际在使用过程中,通过OCP平台或者黑屏修改metadb组件参数后,OAT数据刷新未修正OAT控制台中的metadb组件记录。
【复现路径】
1.修改metadb集群system_memory内存大小
-- 将metadb集群system_memory值从10GB大小调整为5GB
MySQL [(none)]> ALTER SYSTEM SET system_memory='5GB';
MySQL [(none)]> select zone,svr_ip,svr_port,name,value,scope,edit_level from
oceanbase.__all_virtual_sys_parameter_stat where name like 'system_memory';
+-------------+--------------+----------+---------------+-------+---------+-------------------+
| zone | svr_ip | svr_port | name | value | scope | edit_level |
+-------------+--------------+----------+---------------+-------+---------+-------------------+
| META_ZONE_1 | 10.186.71.11 | 2882 | system_memory | 5G | CLUSTER | DYNAMIC_EFFECTIVE |
+-------------+--------------+----------+---------------+-------+---------+-------------------+
1 row in set (0.003 sec)
2.OAT数据刷新
实际在进行数据刷新时,system_memory被调整为初始化安装metadb组件时的内存大小,通过扩容或缩容内存都是固定在10GB大小,观测到OAT数据刷新未正常同步修改后的配置项信息。
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
refresh_metadb.py 刷新脚本
根据OAT任务中心提示的check requirement 检查环境时,在调用refresh_metadb.py脚本,该脚本在oat容器中/oat/task_engine/dags路径下保存。
因为对python源代码不熟悉,所以想确认两个问题:
1、默认读取的参数信息是从oat.oat_component 元数据表中获取的,还是通过连接metadb库读取的?
2、怎么将OAT数据进行同步刷新的?
# get_current_context获取上下文信息,从哪里获取的?
with DAG(dag_id='refresh_metadb',
default_args=default_args,
schedule_interval=None,
) as dag:
@task(doc='forbid_skip')
def check_requirements():
ctx = get_current_context()
logger.info('params is %s', ctx['params'])
hook = utils.get_oat_hook()
server_id_list = ctx['params']['server_id_list']
for server_id in server_id_list:
with ServerRemoteExecute(server_id=server_id, hook=hook) as client:
ret_code, ret = client.remote_execute('docker info')
if ret_code != 0:
raise RuntimeError(f'docker info command return {ret_code}')
return server_id_list
目前想到的解决方法
1、登录OAT容器,进入mariadb元数据库
-- 登录 OAT 容器
docker exec -it oat bash
-- 登录 mariadb 数据库
python3 /oat/manage.py dbshell
2、修改 oat_component 元数据表信息
-- 备份原信息
MariaDB [oat]> create table oat_component_20240506bak like oat_component;
MariaDB [oat]> insert into oat_component_20240506bak select * from oat_component;
-- 修改配置项
-- 将 {"name": "system_memory", "value": "10G"} system_memory 对应的记录值修改为5G大小,与metadb集群配置项保持一致
MariaDB [oat]> update oat_component set config='{"name": "metadb", "image": 1, "servers": [3], "sys_root_password": "aaBB11@@", "container_name": "metadb", "cpu": 16, "memory": 28, "cluster_name": "metadb_cluster", "install_dir": "/home/admin/oceanbase", "data_dir": "/data/1", "log_dir": "/data/log1", "mysql_port": 2881, "rpc_port": 2882, "obproxy_port": 2883, "ob_parameters": [{"name": "system_memory", "value": "5G"}, {"name": "__min_full_resource_pool_memory", "value": "1073741824"}, {"name": "datafile_disk_percentage", "value": "50"}], "obproxy_parameters": [{"name": "automatic_match_work_thread", "value": "false"}, {"name": "enable_strict_kernel_release", "value": "false"}, {"name": "work_thread_num", "value": "16"}, {"name": "proxy_mem_limited", "value": "4G"}, {"name": "client_max_connections", "value": "16384"}, {"name": "log_dir_size_threshold", "value": "10G"}], "sshd_port": 2022, "sshd_root_password": "6EfdxNYT8jVx#-Md", "proxyro_password_sha1": "285a71f8c3ded40913c19ab8b757b067051e94c3", "proxysys_password_sha1": "8ab6aaae2672371f4ac098fc9990a4626594e4a5", "cluster_id": 1710774332, "zone_list": [{"zone_name": "META_ZONE_1", "root_server": 3, "idc": 1, "servers": [3]}], "arbitration_service_address": null}' where id=1 and name='metadb';
3、刷新OAT平台页面,查看修改后的信息