Ocp在debian11系统部署ob binlog问题

【 使用环境 测试环境
【 OB or 其他组件 】binlog 服务组件
【 使用版本 】 版本号: OCP 4.3.5-20250319105844
【问题描述】添加debian11系统云主机进行 binlog 服务部署,报出错误无法继续

2025-03-24 19:11:57.186 ERROR 1071879 --- [manual-subtask-executor14,752b1c5639f514b4,7f429831587697bc] c.o.o.c.t.e.c.w.subtask.SubtaskExecutor  : OCP-Agent task bc2b7f43-6884-4da0-a8df-09ce18875ff5 failed, error message: OcpAgentError: code = 15000, message = Failed to execute binlog command, message: start binlog failed, logFile: /obdata/binlogservice/log/deploy.log

com.oceanbase.ocp.core.exception.UnexpectedException: [OCP UnexpectedException]: status=500 INTERNAL_SERVER_ERROR, errorCode=AGENT_TASK_FAILED, args=bc2b7f43-6884-4da0-a8df-09ce18875ff5,OcpAgentError: code = 15000, message = Failed to execute binlog command, message: start binlog failed, logFile: /obdata/binlogservice/log/deploy.log
	at com.oceanbase.ocp.core.i18n.ErrorCodes$Kind$10.exception(ErrorCodes.java:1814)
	at com.oceanbase.ocp.core.i18n.ErrorCodes.exception(ErrorCodes.java:1669)
	at com.oceanbase.ocp.core.util.ExceptionUtils.newException(ExceptionUtils.java:169)
	at com.oceanbase.ocp.core.util.ExceptionUtils.throwException(ExceptionUtils.java:162)
	at com.oceanbase.ocp.service.task.util.AgentAsyncTaskHelper.checkSuccess(AgentAsyncTaskHelper.java:279)
	at com.oceanbase.ocp.service.task.util.AgentAsyncTaskHelper.waitForExecuteFinish(AgentAsyncTaskHelper.java:225)
	at com.oceanbase.ocp.service.task.util.AgentAsyncTaskHelper.deployBinlogServer(AgentAsyncTaskHelper.java:186)
	at com.oceanbase.ocp.binlog.internal.BinlogHostOperationService.deployBinlogServer(BinlogHostOperationService.java:51)
	at com.oceanbase.ocp.binlog.internal.BinlogOperationManager.deployBinlogServer(BinlogOperationManager.java:104)
	at com.oceanbase.ocp.binlog.internal.task.DeployBinlogServerTask.run(DeployBinlogServerTask.java:33)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.execute(JavaSubtaskRunner.java:64)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.doRun(JavaSubtaskRunner.java:32)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.run(JavaSubtaskRunner.java:26)
	at com.oceanbase.ocp.core.task.engine.runner.RunnerFact
ory.doRun(RunnerFactory.java:76)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.doRun(SubtaskExecutor.java:207)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.redirectConsoleOutput(SubtaskExecutor.java:201)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.lambda$submit$2(SubtaskExecutor.java:137)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)


Set state for subtask: 1000092, operation:EXECUTE, state: FAILED

尝试查看 /obdata/binlogservice/log/deploy.log

2025-03-24 19:11:49 root execute ./deploy.sh: DEPLOY_PATH=/obdata/binlogservice
2025-03-24 19:11:49 root execute ./deploy.sh: DEPLOY_CONF_FILE=/obdata/binlogservice/env/ocp-deploy-conf.json
2025-03-24 19:11:49 root execute ./deploy.sh: JQ_VERSION: jq-1.6
2025-03-24 19:11:49 root execute ./deploy.sh: MYSQL_VERSION: mysql  Ver 15.1 Distrib 10.5.23-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper
2025-03-24 19:11:49 root execute ./deploy.sh: DIFF_VERSION: diff (GNU diffutils) 3.7
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Eggert, Mike Haertel, David Hayes,
Richard Stallman, and Len Tower.
2025-03-24 19:11:49 root execute ./deploy.sh: *** 1. Init machine env...      OK
2025-03-24 19:11:49 root execute ./deploy.sh: Given node_ip: 10.10.130.209
2025-03-24 19:11:49 root execute ./deploy.sh: METADB_INFO = host: 10.44.50.11, database: binlog_database, port: 2881, user: root@elephant, node_ip: 10.10.130.209
2025-03-24 19:11:49 root execute ./deploy.sh: !! Warning: Unexpected user parameters, sys user: , may cause startup failed
2025-03-24 19:11:49 root execute ./deploy.sh: *** 2. Verify parameters from [/obdata/binlogservice/env/ocp-deploy-conf.json]...      OK
2025-03-24 19:11:49 root execute ./deploy.sh: SCHEMA_SQL=/obdata/binlogservice/conf/schema.sql
2025-03-24 19:11:50 root execute ./deploy.sh: *** 3. Init metadb...     OK
2025-03-24 19:11:50 root execute ./deploy.sh: CONF_FILE=/obdata/binlogservice/conf/conf.json
2025-03-24 19:11:50 root execute ./deploy.sh: *** 3. Modify binlog conf...     OK
DEPLOY_PATH : /obdata/binlogservice
2025-03-24 19:11:50 root execute ./deploy.sh: *** 4. Start binlog...         OK
2025-03-24 19:11:50 root execute ./deploy.sh: BINLOG_STATUS=DEPLOY_PATH : /obdata/binlogservice

dba@dba-obtest-0:/obdata/binlogservice/conf$ cat conf.json

{
  "service_port": 2983,
  "encode_threadpool_size": 8,
  "encode_queue_size": 20000,
  "max_packet_bytes": 67108864,
  "record_queue_size": 20000,
  "read_timeout_us": 100000,
  "read_fail_interval_us": 1000000,
  "read_wait_num": 20000,
  "send_timeout_us": 2000000,
  "send_fail_interval_us": 1000000,
  "check_quota_enable": false,
  "check_clog_enable": true,
  "command_timeout_s": 10,
  "log_quota_size_mb": 5120,
  "log_quota_day": 7,
  "log_gc_interval_s": 43200,
  "log_level": 2,
  "loh_flush_strategy": 1,
  "log_flush_level": 2,
  "log_flush_period_s": 1,
  "log_max_file_size_mb": 1024,
  "log_retention_h": 360,
  "oblogreader_path_retain_hour": 168,
  "oblogreader_lease_s": 300,
  "oblogreader_path": "./run",
  "bin_path": "./bin",
  "oblogreader_timezone_conf": "../../conf/timezone_info.conf",
  "oblogreader_obcdc_path_template": "../../obcdc/obcdc-%s.x-access/libobcdcaccess.so",
  "oblogreader_obcdc_ce_path_template": "../../obcdc/obcdc-ce-%s.x-access/libobcdcaccess.so",
  "allow_all_tenant": true,
  "auth_user": false,
  "auth_use_rs": false,
  "auth_allow_sys_user": true,
  "ob_sys_username": "",
  "ob_sys_password": "",
  "counter_interval_s": 2,
  "metric_enable": true,
  "metric_interval_s": 10,
  "prometheus_port": 2984,
  "debug": false,
  "verbose": false,
  "verbose_packet": false,
  "verbose_record_read": false,
  "readonly": false,
  "count_record": false,
  "channel_type": "plain",
  "tls_ca_cert_file": "",
  "tls_cert_file": "",
  "tls_key_file": "",
  "tls_verify_peer": true,
  "liboblog_tls": false,
  "liboblog_tls_cert_path": "",
  "binlog_log_bin_basename": "./run",
  "binlog_timezone_conf": "../../conf/timezone_info.conf",
  "binlog_obcdc_path_template": "../../obcdc/obcdc-%s.x-access/libobcdcaccess.so",
  "binlog_obcdc_ce_path_template": "../../obcdc/obcdc-ce-%s.x-access/libobcdcaccess.so",
  "binlog_ignore_unsupported_event": true,
  "binlog_max_event_buffer_bytes": 67108864,
  "binlog_mode": true,
  "table_whitelist": "",
  "binlog_nof_work_threads": 16,
  "binlog_bc_work_threads": 2,
  "binlog_sql_work_threads": 4,
  "binlog_max_file_size_bytes": 536870912,
  "binlog_convert_timeout_us": 10000,
  "binlog_checksum": true,
  "binlog_heartbeat_interval_us": 100000,
  "binlog_log_heartbeat_interval_times": 10,
  "binlog_ddl_convert_jvm_options": "-Djava.class.path=../../deps/lib/etransfer.jar|-Xmx256M|-Xtrace|-XX:+CreateMinidumpOnCrash",
  "binlog_ddl_convert_class": "com/alipay/oms/etransfer/util/OB2MySQLConvertTool",
  "binlog_ddl_convert_func": "parser",
  "binlog_ddl_convert_func_param": "(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;",
  "binlog_gtid_display": true,
  "binlog_ddl_convert": true,
  "binlog_ddl_convert_ignore_unsupported_ddl": true,
  "binlog_memory_limit": "3G",
  "binlog_working_mode": "storage",
  "binlog_recover_backup": true,
  "start_tcp_port": 8100,
  "reserved_ports_num": 256,
  "cluster_mode": true,
  "gtid_seq_compressed_interval_s": 10,
  "gtid_seq_compressed_trx_size": 100000,
  "gtid_marking_step_size": 100000,
  "gtid_inspector_s": 900,
  "gtid_memory_cache_seconds": 7200,
  "gtid_heartbeat_duration_s": 3600,
  "enable_gtid_inspector": true,
  "database_ip": "10.44.50.11",
  "database_port": 2881,
  "database_name": "binlog_database",
  "database_properties": "",
  "user": "root@elephant",
  "password": "PWD44ele__",
  "node_ip": "10.180.130.209",
  "enable_resource_check": true,
  "cpu_mem_disk_net_weighted": "1:1:1:1",
  "node_cpu_limit_threshold_percent": 80,
  "node_mem_limit_threshold_percent": 85,
  "node_disk_limit_threshold_percent": 70,
  "recovery_point_strategy": "fast",
  "enable_dumper_cpu_precheck": false,
  "max_dumper_num": 128,
  "max_task_execution_time_s": 600,
  "default_defer_drop_sec": 7200,
  "default_instance_replicate_num": 1,
  "enable_auth": false,
  "prometheus_unused_metric_clear_interval_s": 900,
  "max_delete_rows": 10000,
  "max_instance_startup_wait_sec": 60,
  "min_pool_size": 30,
  "max_pool_size": 1000,
  "binlog_convert_ring_buffer_size": 1024,
  "binlog_convert_number_of_concurrences": 12,
  "binlog_convert_thread_size": 16,
  "binlog_serialize_ring_buffer_size": 1024,
  "binlog_serialize_thread_size": 10,
  "binlog_serialize_parallel_size": 8,
  "binlog_release_ring_buffer_size": 1024,
  "binlog_release_thread_size": 4,
  "binlog_release_parallel_size": 2,
  "preallocated_memory_bytes": 2097152,
  "preallocated_expansion_memory_bytes": 8192,
  "binlog_purge_binlog_threads": 2,
  "binlog_obi_column_work_threads": 10
}

不知道问题出在哪 ? 可不可以帮忙查看一下,看下问题如何处理。 @论坛小助手

1 个赞

根据您提供的错误日志和配置文件信息,以下是对问题的分析和可能的解决方案:

问题分析

  1. 错误日志中的关键信息

    • 错误日志显示 start binlog failed,并且提示 Unexpected user parameters, sys user: , may cause startup failed
    • 这表明在启动 Binlog 服务时,系统用户参数未正确设置,可能导致启动失败。
  2. 配置文件检查

    • conf.json 文件中,ob_sys_usernameob_sys_password 字段为空:
      "ob_sys_username": "",
      "ob_sys_password": "",
      
      这可能是导致 Unexpected user parameters 的原因。
  3. 其他可能的原因

    • 操作系统环境或依赖工具版本不兼容。例如,日志中提到的 jq-1.6mysql 10.5.23-MariaDB 等工具版本是否符合 OCP Binlog 组件的要求需要进一步确认。
    • 目标数据库连接信息是否正确(如 database_ipdatabase_portuserpassword 等)。

解决方案

1. 检查并补充系统用户参数

  • 根据错误提示 Unexpected user parameters, sys user: , may cause startup failed,需要确保 ob_sys_usernameob_sys_password 配置正确。
  • 修改 conf.json 文件,添加 OceanBase 系统用户的用户名和密码。例如:
    "ob_sys_username": "sys",
    "ob_sys_password": "your_ob_sys_password",
    
  • 如果不确定系统用户的密码,请联系 OceanBase 数据库管理员获取相关信息。

2. 验证操作系统环境和依赖工具

  • 确保 Debian 11 系统上安装的工具版本与 OCP Binlog 组件的要求一致。例如:
    • jq 版本:建议使用 jq-1.6 或更高版本。
    • mysql 客户端:建议使用官方推荐的 MySQL 客户端版本。
  • 可以通过以下命令验证工具版本:
    jq --version
    mysql --version
    

3. 检查目标数据库连接信息

  • 确保 conf.json 中的目标数据库连接信息正确无误:
    "database_ip": "10.44.50.11",
    "database_port": 2881,
    "database_name": "binlog_database",
    "user": "root@elephant",
    "password": "PWD44ele__",
    
  • 测试连接目标数据库:
    mysql -h 10.44.50.11 -P 2881 -u root@elephant -p
    
    输入密码后,确认是否可以成功连接。

4. 查看详细日志

  • 如果上述步骤完成后仍然无法启动 Binlog 服务,可以查看 /obdata/binlogservice/log/deploy.log 文件中的详细错误信息。
  • 关注是否有其他异常提示(如权限问题、路径问题等)。

5. 重新部署 Binlog 服务

  • 在完成上述修改后,重新执行 Binlog 服务的部署流程:
    ./deploy.sh
    

总结

根据文档片段和您的描述,问题的主要原因是 ob_sys_usernameob_sys_password 参数未正确配置。请按照上述步骤逐一排查并解决问题。如果问题仍未解决,建议联系 OceanBase 的技术支持团队以获取进一步帮助。

详情请参考:

  1. 4000 ~ 4499
  2. 10000 ~ 12000
  3. 5000 ~ 5999
  4. 9500 ~ 9999
  5. 0001 ~ 3999
2 个赞

根据已知信息,Failed to execute binlog command, message: start binlog failed 错误可能与以下原因相关:

Binlog 服务未正确开启
根据 [4] 中的描述,OceanBase Cloud 的 Binlog 服务默认是关闭状态,需要手动开通。如果未按照步骤开通 Binlog 服务,尝试启动 Binlog 时可能会失败。
解决方法:

登录 OceanBase Cloud 控制台。
按照 [4] 中的步骤开通 Binlog 服务:实例列表 → 租户管理 → Binlog 服务,点击开通。
确保租户状态为“运行中”,并且版本符合要求(V3.x 不低于 V3.2.4.4,V4.x 不低于 V4.1.0.1)。

日志归档未正常运行
根据 [5] 和 [9] 中的错误码 ERROR 9029 (HY000) : log archive is not running,如果日志归档未处于 Running 状态,可能会导致 Binlog 启动失败。
解决方法:

检查日志归档状态是否正常运行:
如果日志归档未运行,检查是否有其他操作(如停止备份)导致日志归档中断。如果没有明显原因,请联系 OceanBase 技术支持人员协助排查。

重复启动 Binlog 服务
根据 [8] 中的错误码 ERROR 9023 (HY000) : cannot start log archive backup,如果在日志归档期间重复执行启动命令,可能会导致失败。
解决方法:

避免重复执行启动 Binlog 的命令。
如果不确定当前状态,可以通过以下命令确认 Binlog 是否已开启:
SHOW MASTER STATUS;

配置文件或权限问题
根据 [2] 和 [7] 中的描述,如果配置文件损坏或权限不足,可能导致相关服务无法正常启动。
解决方法:

检查配置文件是否完整且未损坏:
cat /home/admin/oceanbase/etc/observer.config.bin

如果文件为空或显示乱码,可能需要重新生成或修复配置文件。
确保用于启动 Binlog 的数据库用户具有足够的权限。例如,参考 [3] 中的步骤创建并授权专用账号:
CREATE USER ‘debezium_user’@‘localhost’ IDENTIFIED BY ‘debezium_password’;
GRANT SELECT, CREATE, RELOAD, SHOW DATABASES ON . TO ‘debezium_user’ IDENTIFIED BY ‘debezium_password’;

如果以上方法仍无法解决问题,请提供以下信息以便进一步排查:

OceanBase 数据库的版本号。
执行启动 Binlog 命令的具体上下文和完整错误日志。
当前集群的状态(如是否已成功初始化、各 OBServer 节点是否正常运行)。

1 个赞

meta的版本是多少。。?
有点像我之前遇见的版本问题
https://open.oceanbase.com/blog/17836706098

1 个赞

感谢您的回复,这块我理解应该不需要手工配置? 后续我尝试使用CentOS7系统的服务器部署,就成功了,感觉binlog server部署这块对于Debian 11系统应该有兼容性问题 。 由于需要赶工,现场我已经销毁了,可能要开发同学们帮忙复现一下。

根据您的反馈,问题确实可能与 Debian 11 系统的兼容性有关。以下是对问题的进一步分析和建议:


问题分析

  1. OCP 对操作系统的要求

    • 根据文档信息(片段 9),OMS 社区版支持的 Linux 操作系统包括 CentOS 和 Debian,但具体到 OCP 的 Binlog 组件,可能存在对某些操作系统的兼容性限制。
    • 特别是 Debian 11 系统,虽然在理论上支持,但在实际部署中可能会遇到工具版本、依赖库或配置文件格式不兼容的问题。
  2. 成功案例对比

    • 您提到在 CentOS 7 系统上成功部署了 Binlog 服务,这表明 OCP 的 Binlog 组件在 CentOS 7 上经过了更充分的测试和优化。
    • 而 Debian 11 可能存在一些未被覆盖的边缘场景,导致部署失败。
  3. 潜在的兼容性问题

    • 工具版本差异:Debian 11 默认安装的工具版本(如 jqmysql-client 等)可能与 OCP 的要求不完全一致。
    • 文件路径或权限问题:Debian 系统的默认文件路径或权限设置可能与 OCP 的预期不符。
    • 内核或系统库差异:Debian 11 的内核版本或系统库(如 glibc)可能与 OCP 的依赖存在不兼容的情况。

建议解决方案

1. 确认官方支持的操作系统

  • 建议查阅 OCP 官方文档,明确 Binlog 组件对操作系统的具体支持范围。
  • 如果 Debian 11 确实不在官方支持范围内,建议优先使用 CentOS 7 或其他已验证兼容的操作系统。

2. 复现问题并提交反馈

  • 如您所述,可以请开发团队尝试复现问题,并收集以下信息:
    • 部署过程中生成的日志文件(如 /obdata/binlogservice/log/deploy.log)。
    • 系统环境信息(如 uname -acat /etc/os-releasedpkg -l | grep jq 等)。
    • 配置文件内容(如 conf.jsonocp-deploy-conf.json)。
  • 将上述信息提交给 OceanBase 技术支持团队,以便他们进一步分析和优化。

3. 手动调整兼容性

  • 如果需要继续使用 Debian 11,可以尝试以下方法:
    • 确保所有依赖工具的版本与 OCP 的要求一致。例如,安装特定版本的 jqmysql-client
      sudo apt-get install jq=1.6-1 mysql-client=5.7.*
      
    • 检查文件路径和权限设置,确保符合 OCP 的预期。例如,确保 /obdata/binlogservice 目录及其子目录的权限正确:
      sudo chown -R ocp-agent:ocp-agent /obdata/binlogservice
      
    • 如果问题仍然存在,可以尝试修改 OCP 的部署脚本(如 deploy.sh),以适配 Debian 11 的环境。

4. 长期规划

  • 如果项目中有较多使用 Debian 系统的需求,建议向 OceanBase 提交正式的功能需求,推动其对 Debian 系统的全面支持。
  • 同时,也可以考虑将 Binlog 服务部署在独立的 CentOS 系统上,而其他组件继续运行在 Debian 系统中,以降低兼容性风险。

总结

您提到的问题很可能是由于 Debian 11 系统与 OCP Binlog 组件之间的兼容性不足导致的。建议优先使用官方支持的操作系统(如 CentOS 7),并在必要时通过复现问题和提交反馈来推动兼容性改进。如果需要继续使用 Debian 11,可以尝试手动调整工具版本和文件权限等配置。

希望以上建议对您有所帮助!

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

  1. 部署前准备
  2. 为 MySQL 数据库开启 Binlog
  3. 部署 NFS
  4. 软硬件要求
  5. 系统和网络要求
  6. SET LOG_ARCHIVE_DEST
  7. 迁移 MySQL 数据库的数据至 OceanBase 社区版
  8. 单地域多节点部署
  9. 分布式事务

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

binlog service 只支持centos的系统

好的 收到了,感谢。

感谢您的回复,应该不是meta版本的问题,我部署的组件是最新的。 官方说 binlog server只能用 CentOS系统版本。 :joy:

1 个赞

客气