创建 BINLOG INSTANCES并执行SHOW BINLOG INSTANCES,状态显示异常

【 使用环境 】测试环境
【 obbinlog 】
【 使用版本 】
4.3.5

【问题描述】清晰明确描述问题
创建 BINLOG INSTANCES并执行SHOW BINLOG INSTANCES,状态显示异常

且没有日志生成
image

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根因分析场景: DDL失败
根因分析命令: obdiag rca run --scene=ddl_failure
日志采集场景: 日志归档问题
日志采集命令: obdiag gather scene run --scene=observer.log_archive

为了更好地帮助您解决问题,建议使用上述 obdiag 工具进行根因分析和日志采集,并将采集到的日志提供给我们以便确认问题所在。以下是具体步骤和作用:

  • 根因分析命令: obdiag rca run --scene=ddl_failure 用于诊断 DDL 操作失败的原因,可能与 BINLOG INSTANCES 的创建异常有关。
  • 日志采集命令: obdiag gather scene run --scene=observer.log_archive 用于收集日志归档相关的日志信息,以排查为什么没有生成日志。

请您执行以上命令并将生成的日志压缩包提供给我们。同时,为了进一步明确问题,请回答以下问题:

  1. 创建 BINLOG INSTANCES 的具体 SQL 语句是什么?是否有报错信息?
  2. 执行 SHOW BINLOG INSTANCES 后,显示的状态是什么?能否提供具体的输出结果?
  3. 当前 OceanBase 集群的版本是多少?
  4. 是否有对集群进行过配置修改或维护操作?如果有,请描述具体的操作内容。
  5. 集群中是否有其他正常的 BINLOG 实例?如果有,请提供相关信息。

附上敏捷诊断工具 obdiag 使用帮助链接

  • 创建 BINLOG INSTANCES 的具体 SQL 语句是什么?是否有报错信息?
CREATE BINLOG FOR TENANT `demo`.`mq_t1`
       TO USER `root` PASSWORD `XXXXX` 
       WITH CLUSTER URL `http://127.0.0.1:8080/services?Action=ObRootServiceInfo&ObCluster=demo`
       , REPLICATE NUM 1;

执行成功

  • 执行 SHOW BINLOG INSTANCES 后,显示的状态是什么?能否提供具体的输出结果?

  • 当前 OceanBase 集群的版本是多少?
    4.3.5

  • 是否有对集群进行过配置修改或维护操作?如果有,请描述具体的操作内容。
    创建binlog实例前,通过修改conf关闭了资源检查

  • 集群中是否有其他正常的 BINLOG 实例?如果有,请提供相关信息。

麻烦把这四个日志提供一下
binlog_instance.log
libobcdc.log
logproxy.log
obproxy.log

根据您提供的信息,问题可能与以下几点有关:

1. 资源检查导致创建失败

从 OCR 提取的内容中可以看出,在执行 CREATE BINLOG 命令时,返回了错误信息 Aods resources are insufficient。这表明系统认为当前的资源(如 CPU 使用率)不足以支持 BINLOG 实例的创建。

解决方案:

  • 关闭资源检查:您提到在创建 BINLOG 实例前通过修改配置关闭了资源检查。请确认是否正确关闭了资源检查开关。可以通过以下 SQL 查询当前的资源检查状态:

    SHOW PARAMETERS LIKE 'binlog_resource_check_enabled';
    

    如果返回值为 ON,说明资源检查仍然开启,需要将其关闭:

    ALTER SYSTEM SET binlog_resource_check_enabled = OFF;
    
  • 调整资源阈值:如果不想完全关闭资源检查,可以调整资源检查的阈值。例如,将 CPU 使用率的阈值从默认的 0.8 调整为更高的值:

    ALTER SYSTEM SET binlog_cpu_usage_threshold = 0.9;
    

2. BINLOG 状态异常

执行 SHOW BINLOG INSTANCES 后,显示的状态为 Failed,并且没有生成日志文件。这可能是由于以下原因:

(1) 集群 URL 配置错误

在创建 BINLOG 实例时,您指定了 CLUSTER URL 参数为 http://127.0.0.1:8080/services?Action=ObRootServiceInfo&ObCluster=demo。请确认该 URL 是否正确,并且能够正常访问。

(2) REPLICATE NUM 配置不合理

您设置了 REPLICATE NUM 1,表示 BINLOG 数据只需要在一个副本上存储。如果当前集群的副本数量不足或配置不正确,可能会导致 BINLOG 实例无法正常工作。

解决方案:

  • 检查集群 URL 是否可达:

    curl http://127.0.0.1:8080/services?Action=ObRootServiceInfo&ObCluster=demo
    

    如果返回错误信息,请修正 URL。

  • 检查副本数量是否满足要求:

    SHOW TABLET SERVERS;
    

    确保集群中有足够的副本可用。


3. 日志未生成

根据您的描述,BINLOG 实例创建后没有生成日志文件。这可能是由于以下原因:

(1) BINLOG 目录未正确配置

请确认 BINLOG 日志目录是否正确配置,并且 OceanBase 进程对该目录有写权限。

(2) BINLOG 实例未启动

即使 BINLOG 实例创建成功,也需要手动启动实例才能生成日志。可以通过以下命令启动 BINLOG 实例:

START BINLOG FOR INSTANCE 'fk5nxlwa5v';

解决方案:

  • 检查 BINLOG 日志目录配置:

    SHOW PARAMETERS LIKE 'binlog_output_dir';
    

    如果目录不存在或权限不足,请修正:

    mkdir -p /path/to/binlog
    chmod 755 /path/to/binlog
    
  • 启动 BINLOG 实例:

    START BINLOG FOR INSTANCE 'fk5nxlwa5v';
    

4. 进一步排查

如果以上方法仍无法解决问题,建议使用 obdiag 工具进行进一步排查:

(1) 根因分析

运行以下命令分析 DDL 失败的原因:

obdiag rca run --scene=ddl_failure

(2) 日志采集

收集日志归档相关的日志信息:

obdiag gather scene run --scene=observer.log_archive

将生成的日志压缩包提供给我们,以便进一步分析问题。


总结

根据文档库中的信息,您可以按照以下步骤逐步排查问题:

  1. 确认资源检查是否已关闭。
  2. 检查集群 URL 和副本数量配置是否正确。
  3. 确保 BINLOG 日志目录配置正确,并启动 BINLOG 实例。
  4. 使用 obdiag 工具进行进一步排查。

如果仍有问题,请提供更多日志信息或联系 OceanBase 的人工答疑以获取更多帮助。

具体信息可参考以下文档:

  1. 创建外表分区
  2. 实时执行计划展示
  3. 命令行参数介绍

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

binlog_instance.log

没有 libobcdc.log

logproxy.log

[2025-04-01 20:07:53.573971] [info] instance_tasks.cpp(172): Binlog instance [fdwtpmn2en] is the first valid instance of tenant [demo.mq_t1], initial start timestamp: 1743509269, initial gtid seq: 0, initial txn id:
[2025-04-01 20:07:53.574046] [error] fs_util.cpp(123): Failed to copy directory from [./run/fdwtpmn2en] to [./run/recover_backup/fdwtpmn2en_backup_1743509273], error: No such file or directory
[2025-04-01 20:07:53.574277] [warning] instance_tasks.cpp(463): Backup and remove the working directory [./run/fdwtpmn2en] left by binlog instance: fdwtpmn2en
[2025-04-01 20:07:53.587542] [info] instance_tasks.cpp(484): Begin to create OceanBase binlog instance [fdwtpmn2en](recover: false, in_place: true) for [demo.mq_t1] with start timestamp(s): 1743509269, config: {"cluster":"demo","cluster_id":"1743230802","expiration":10,"fd":-1,"instance_name":"fdwtpmn2en","send_interval_ms":100,"tenant":"mq_t1","tenant_id":"1002","version":"4.2.3-1cf30a786ba8c4984ddb24d5273a1d826b2ab11e","binlog_config":{"active_state_after_boot":0,"auto_start_obcdc":1,"binlog_convert_number_of_concurrences":12,"binlog_convert_ring_buffer_size":1024,"binlog_convert_thread_size":16,"binlog_expire_logs_seconds":259200,"binlog_expire_logs_size":53687091200,"binlog_release_parallel_size":2,"binlog_release_ring_buffer_size":1024,"binlog_release_thread_size":4,"binlog_serialize_parallel_size":8,"binlog_serialize_ring_buffer_size":8,"binlog_serialize_thread_size":10,"failover":1,"initial_ob_txn_gtid_seq":0,"initial_ob_txn_id":"","instance_password":"","instance_password_sha1":"","instance_user":"sys","master_server_id":0,"master_server_uuid":"","max_binlog_size":536870912,"preallocated_expansion_memory_bytes":8192,"preallocated_memory_bytes":2097152,"read_timeout_us":10000,"read_wait_num":2000,"record_queue_size":20000,"server_id":1048441,"server_uuid":"6ad506ab-887c-84c6-e0e6-df156a64ff4d","storage_timeout_us":10000,"storage_wait_num":2000,"throttle_convert_iops":0,"throttle_convert_rps":0,"throttle_dump_conn":0,"throttle_dump_iops":0,"throttle_dump_rps":0},"cdc_config":{"cluster_password":"ot8gbhk6DxME4a10zFSq","cluster_url":"http://127.0.0.1:8080/services?Action=ObRootServiceInfo&ObCluster=demo","cluster_user":"root","extra_obcdc_cfg":"cluster=demo enable_convert_timestamp_to_unix_timestamp=1 enable_output_by_table_def=1 enable_output_hidden_primary_key=0 enable_output_invisible_column=1 enable_output_trans_order_by_sql_operation=1 enable_output_virtual_generated_column=1 first_start_timestamp_us=0 initial_trx_gtid_seq=1 initial_trx_seeking_abort_timestamp=0 memory_limit=4G sort_trans_participants=1 tb_white_list=mq_t1.*.* tenant=mq_t1 working_mode=storage","memory_limit":"4G","rootserver_list":"","start_timestamp":1743509269},"slot_config":{"group":"","ip":"","region":"","zone":""}}
[2025-04-01 20:07:53.793883] [error] instance_tasks.cpp(586): Failed to start binlog instance [fdwtpmn2en] process for tenant [demo.mq_t1] with speculated state: EXIT

observer查一下 资源信息
集群资源查询
select zone,concat(SVR_IP,’:’,SVR_PORT) observer,
cpu_capacity_max cpu_total,cpu_assigned_max cpu_assigned,
cpu_capacity-cpu_assigned_max as cpu_free,
round(memory_limit/1024/1024/1024,2) as memory_total,
round((memory_limit-mem_capacity)/1024/1024/1024,2) as system_memory,
round(mem_assigned/1024/1024/1024,2) as mem_assigned,
round((mem_capacity-mem_assigned)/1024/1024/1024,2) as memory_free,
round(log_disk_capacity/1024/1024/1024,2) as log_disk_capacity,
round(log_disk_assigned/1024/1024/1024,2) as log_disk_assigned,
round((log_disk_capacity-log_disk_assigned)/1024/1024/1024,2) as log_disk_free,
round((data_disk_capacity/1024/1024/1024),2) as data_disk,
round((data_disk_in_use/1024/1024/1024),2) as data_disk_used,
round((data_disk_capacity-data_disk_in_use)/1024/1024/1024,2) as data_disk_free
from oceanbase.gv$ob_servers;

租户资源查询
select a.zone,a.svr_ip,b.tenant_name,b.tenant_type, a.max_cpu, a.min_cpu,
round(a.memory_size/1024/1024/1024,2) memory_size_gb,
round(a.log_disk_size/1024/1024/1024,2) log_disk_size,
round(a.log_disk_in_use/1024/1024/1024,2) log_disk_in_use,
round(a.data_disk_in_use/1024/1024/1024,2) data_disk_in_use
from oceanbase.gv$ob_units a join oceanbase.dba_ob_tenants b on a.tenant_id=b.tenant_id order by b.tenant_name;

如果是obd部署的 发一下配置文件
obd cluster list --查看集群名
obd cluster edit-config {集群名} --保存在文本里,提供一下

间隔时间不够?